0 votes
in SoSci Survey (dt.) by s052438 (155 points)

Hallo

Ich habe eine Frage bzw. finde leider meinen Fehler in meinem Code nicht.
Ich möchte Folgendes realisieren: Ich habe 2 Fragen CU01 und WO04 (mit je 40 Items). Nun möchte ich, dass diese beiden Fragen pro Item immer abwechselnd gezeigt werden:
Also CU01_01, dann WO04_01, dann wieder CU01_02 und danach WO04_02 usw für alle 40 Items.

Durch andere Forumsbeiträge konnte ich bisher das realisieren:

if (!isset($items)) {
  $itemA = getItems('CU02','all');
  $itemB = getItems('WO04','all');
  
  
  $paare = array();
  for ($i=0; $i<=count(40); $i++) {
    $paare[] = array(array('CU02', $itemA[$i]), array('WO04', $itemB[$i]));
     }

  registerVariable($paare);
  

 $items = array();
 foreach ($paare as $paar) {
    $items[] = $paar[0];
    $items[] = $paar[1];
  }
  registerVariable($items);

}

//debug($items); 
//debug($paare);
     
$i = loopPage(count($items));
question($items[$i][0], $items[$i][1]);

Allerdings ist es nun so, dass es quasi nur 2 Durchgänge gibt, dann geht SoSci im Fragebogen weiter. Eigentlich müssten es aber 40 Durchgänge sein (also alle Items der beiden Fragen sollten durchgegangen werden.

Könnte mir jm. einenTipp geben, wo mein Fehler liegt?
Vielen Dank!

1 Answer

0 votes
by SoSci Survey (328k points)

Ich habe 2 Fragen CU01 und WO04 (mit je 40 Items).

Bitte prüfen Sie zunächst die Kennung - im PHP-Code steht CU02 statt CU01.

Nun möchte ich, dass diese beiden Fragen pro Item immer abwechselnd gezeigt werden:
Eigentlich müssten es aber 40 Durchgänge sein

Und die beiden Items (jedes aus einer der Fragen) sollen immer gemeinsam auf einer Seite gezeigt werden - und dann die nächste Seite, korrekt?

Mal ehrlich ... das mit getItems() und den Arrays ist hier deutlich komplizierter als notwendig... Insofern würde ich statt einer ausführlichen Fehlersuche einen kürzeren Code vorschlagen:

$i = loopPage(40);
question('CU02', $i+1);
question('WO04', $i+1);
by s052438 (155 points)
Danke für die schnelle Antwort.
Nein, die beiden Fragen sollen auf keinen Fall auf einer Seite angezeigt werden. Außerdem ist es wichtig, dass die Paarung der beiden Fragen bestehen bleibt (also z.B. Item 1 aus Frage 1 soll immer mit Item 1 aus Frage 2 kombiniert werden)
by SoSci Survey (328k points)
Die Paarung bleibt bei der obigen Lösung bestehen. Und die Trennung auf 2 Seiten (also insgesamt 80 Seiten) ist auch nicht weiter schwierig:

$i = loopPage(80);
if (($i % 2) == 0) {
  question('CU02', (int)($i / 2 + 1));
} else {
  question('WO04', (int)(($i - 1) / 2 +1));
}

Das (int)(($i - 1) / 2 +1) sieht ein wenig kompliziert aus, heißt aber nur: Mach aus den Zählernummern 1, 3, 5, 7, ... die Items 1, 2, 3, 4, ...
by s052438 (155 points)
Vielen vielen Dank, nun läuft es ohne Probleme durch.

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

...