0 votes
in SoSci Survey (dt.) by s037553 (125 points)
edited by SoSci Survey

Am Ende eines Fragebogens möchte ich ein Text (im Beispiel ‚missingTE‘) einblenden, sofern bestimmte Fragen nicht ausgefüllt wurden, also fehlende Werte drin sind. Sobald irgendeine Zahl eingetragen ist (kann auch eine 0 sein) gilt die Frage als ausgefüllt. Die Variablen sind freie Textfelder in einem Formular, in dem Zahlen eingetragen werden sollen.
Eine Ausnahme gilt jeweils für die Variablen mit der Endung _04, diese dürfen freigelassen werden.

Unten ist der Code, den ich mir für die Variablen TE01 - TE07 gebastelt habe.
Problem ist, dass es der Text "missing TE" immer angezeigt wird, auch wenn alle Variablen TE_01 - TE07 ausgefüllt sind:

$miss01 = array('TE01', 'TE02', 'TE03', 'TE04', 'TE05', 'TE06', 'TE07', '==', '');
$miss01 = array_diff($miss01, array('TE01_04', 'TE02_04', 'TE03_04', 'TE04_04', 'TE05_04', 'TE06_04', 'TE07_04')); 
if (count($miss01) > 0) {
    text('missingTE');
}

Wo liegt mein Fehler?
Viele Grüße

1 Answer

0 votes
by SoSci Survey (306k points)
selected by s037553
 
Best answer

Sie definieren hier ein Array aus kurzen Texten ("TE01" u.s.w.). Da fehlt schlicht und ergreifend noch die Verknüpfung, dass es sich um Fragen und Variablen handelt.

Dafür müssten Sie die Kennung erstmal einzeln durchgehen und für jede mittels getItems() die fehlenden Items ermitteln:

$miss01 = array('TE01', 'TE02', 'TE03', 'TE04', 'TE05', 'TE06', 'TE07', '==', '');
foreach ($miss01 as $qstID) {
  $missings = getItems($qstID, 'missing');
}

Aus dieser Liste können Sie jeweils die 4 entfernen.

$miss01 = array('TE01', 'TE02', 'TE03', 'TE04', 'TE05', 'TE06', 'TE07', '==', '');
foreach ($miss01 as $qstID) {
  $missings = getItems($qstID, 'missing');
  $missings = array_diff($missings, 4);
}

Und dann können Sie eigentlich abbrechen, wenn irgend eines fehlt:

$miss01 = array('TE01', 'TE02', 'TE03', 'TE04', 'TE05', 'TE06', 'TE07', '==', '');
$anyMissing = false;
foreach ($miss01 as $qstID) {
  $missings = getItems($qstID, 'missing');
  $missings = array_diff($missings, 4);
  if (!empty($missings)) {
    $anyMissing = true;
    break;
  }
}

if ($anyMissing) {
  text('missingTE');
}
by s037553 (125 points)
Das hat sehr geholfen, vielen Dank!

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

...