0 votes
ago in SoSci Survey (dt.) by s109993 (13.6k points)

Ich benutze ein Inhaltsverzeichnis über die function navigation(); Beispiel:

function navigation() {
    
    // Completion check
        $cPreparations = (count(array_merge(
        checkItem('A002', 'A002_01'),
        checkItem('A003', 'A003_01'),
        checkQst('A004', [1,2]),
        checkItem('A006', 'A006_01'),
        checkItem('A008', 'A008_01'),
   )) === 0	);

Eine Frage dazu- gibt es eine Möglichkeit, dass Fragen, welche nicht vorgelegt werden weil sie durch eine bestimmte Filterbedingung ausgeblendet werden (goToPage();) nicht in den Completion Check mitgenommen werden, obwohl sie dort eingetragen wurden?

1 Answer

0 votes
ago by SoSci Survey (380k points)
selected ago by s109993
 
Best answer

Bitte wenden Sie den Filter, welcher die Frage ausblendet, auch im Completion Check an.

Das kann z.B. so aussehen:

$cPreparations = array_merge(
    checkItem('A002', 'A002_01'),
    checkItem('A003', 'A003_01')
);

if (value('AB01') == 3) {
    $cPreparations = array_merge(
        $cPreparations,
        checkQst('A004', [1,2])
    );

$cPreparations = array_merge(
    $cPreparations,
    checkItem('A006', 'A006_01'),
    checkItem('A008', 'A008_01'),
);

Hier würde der Check von A004 nur mit aufgenommen, wenn AB01 den Antwortcode 3 hat. Beachten Sie bitte, dass $cPreparations hier das Array ist und nicht mehr die Zählung wie in Ihtem Code oben.

Wenn Sie ein Freund von Code-Golf sind (gleiches Ergebnis mit möglichst wenig Code-Zeilen), dann können Sie es auch wie folgt verkürzt schreiben. SoSci Survey wird einige Warnungen im Fragebogen zusammenstellen zeigen, weil die Code-Prüfung mit der ?:-Schreibweise nicht umgehen kann, die Sie aber ignorieren können:

$cPreparations = (count(array_merge(
    checkItem('A002', 'A002_01'),
    checkItem('A003', 'A003_01'),
    ((value('AB01') == 3) ? checkQst('A004', [1,2]) : []),
    checkItem('A006', 'A006_01'),
    checkItem('A008', 'A008_01'),
))
ago by s109993 (13.6k points)
super, das passt. Kleine extra-Frage: wie war noch einmal der Check für Mehrfachauswahl mit Ausweichoption? checkQst?
ago by SoSci Survey (380k points)
Bei einer Mehrfachauswahl muss man erstmal definieren, was eine gültige Antwort ist... Der Beispielcode unter https://www.soscisurvey.de/help/doku.php/de:create:navigation sieht diesen Fall nicht vor, aber eine geeignete Funktion könnte wie folgt aussehen:

function checkMC($qID) {
  $fail = [];
  if (value($qID) == 0) {
    $fail[] = getTextElement($qID, 'header');
  }
  return $fail;
}
ago by s109993 (13.6k points)
Super, hab es etwas angepasst- mit 'header' hab ich eine Fehlermeldung/Warnung bekommen

function checkMC($qID) {
    $fail = [];

    if (value($qID) == 0) {
        $fail[] = getItemtext($qID, 'question');
    }

    return $fail;
}

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

Categories

...