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

+1 vote

Liebes SoSci-Team,

ich habe die Items einer Frage (Typ Skala) über mehrere Seiten aufgeteilt und rotiert:

if (!isset($itemsAB01)) {
  $itemsMS01 = getItems('MS01', 'all'); // Alle Items der Frage MS01 auflisten
  shuffle($itemsMS01); // Liste Mischen
  $itemsMS01 = array_chunk($itemsMS01, 5); // Die Liste in Teillisten à 5 Items teilen
  registerVariable('itemsMS01'); // Die Variable für andere Seiten verfügbar machen
}

$i = loopPage(count($itemsMS01)); 
question('MS01', $itemsMS01[$i]);

Das funktioniert auch gut, jedoch möchte ich die Beantwortung jedes Items erzwingen. Aktuell ist es so, dass, wenn ein Item nicht beantwortet wird und man auf "weiter" klickt, die Items neu rotiert werden. Die bisherigen Antworten werden zwar gespeichert und die Items, die soeben nicht beantwortet wurden, sind rot hinterlegt, jedoch erscheinen diese gemischt mit Items, die noch gar nicht abgefragt wurden.

Ich finde diese Darstellung verwirrend und würde mir wünschen, dass die erste rotierte Reihenfolge der Items auch beim Nicht-Ausfüllen und Weiter-klicken beibehalten wird.

Wie kann ich das umsetzen?

Vielen Dank, freundliche Grüße!
Nina Düvel

in SoSci Survey (dt.) by s048351 (165 points)
Tipp: Mit dem Knopf {} kann man Code als solchen formatieren. Ich habe das in Ihrer Frage einmal angepasst.

1 Answer

+1 vote

Es ist nur ein kleiner Fehler in Ihrem Code: In der ersten Zeile prüfen Sie ob die Variable $itemsAB01definiert ist - legen dann aber eine andere Variable $itemsMS01an.

Wenn Sie die erste Zeile wie folgt ändern, sollte es funktionieren:

if (!isset($itemsMS01)) {
by SoSci Survey (108k points)
Oh, ja natürlich! Vielen Dank für die Schnelle Korrektur!
Ich habe eine ähnliche Frage: Ich habe 4 Seiten, die ich in zufälliger Reihenfolge anzeige. Wenn die VP ein Item überspringt, erscheint zwar der Hinweis, dass alle Items beantwortet werden müssen, aber es springt zur nächsten Seite. Später wird die Seite dann nochmal angezeigt (vorherige Angaben wurden gespeichert). Leider sehe ich nicht, ob es bei mir auch so ein einfacher Fehler im Code ist. Haben Sie einen Tipp?

$pages = array('car','bike','mill','shoe');
// Die Seiten nicht direkt mischen, sondern deren Positionen
$indices = array_keys($pages);
shuffle($indices);
// Nun die Ränge speichern - und die neue Abfolge der Seiten in $random speichern
$random = array();
for ($i=0; $i<count($indices); $i++) {
  // Rang speichern wie oben
  $id = id('IV02', $indices[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $random[$i] = $pages[$indices[$i]];
}

$random[] = 'MC';
setPageOrder($random);
Bitte stellen Sie dies als neue Frage im Online-Support (in den Kommentaren wird es sonst arg schnell arg unübersichtlich) - und ergänzen Sie bitte auch gleich die Debug-Information und die anderen Infos, die mir eine schnelle und hilfreiche Antwort erlauben: https://www.soscisurvey.de/help/doku.php/de:create:filter-solving#fehler_finden

Danke.
Habe es als neue Frage erstellt. Dankeschön für den Hinweis.
...