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

0 votes

Seiten werden bei mir beim Rotatieren leider mehrfach angezeigt.
Bisher hatte ich diesen Code erfolgreich zum Rotieren von Seiten verwendet:

if (!isset($seiten)) {
  $seiten = array('A','B','C','D');
  shuffle($seiten);
  $seiten[] = 'PF';
  registerVariable('seiten');
}
setPageOrder($seiten);

Da ich nun auch die Seitenreihenfolge speichern möchte, habe ich mich für diesen Code entschieden:

$pages = array('A','B','C','B');
$indices = array_keys($pages);
shuffle($indices);
$random = array();
for ($i=0; $i<count($indices); $i++) {
  $id = id('IV02', $indices[$i] + 1);
  put($id, $i + 1);
  $random[$i] = $pages[$indices[$i]];
}
setPageOrder($random);

Im Debug-Modus funktioniert es auch. Aber bei Vorschau und im richtigen Fragebogen werden Seiten doppelt gezeigt. Ich vermute, dass ich an einer Stelle auch wieder notieren muss, wo es nach der Randomisierung weitergehen soll. Jedoch hat eine Kombination der beiden Codes bisher nicht funktioniert. Hat jemand einen Tipp?
Vielen Dank

in SoSci Survey (dt.) by s018813 (150 points)

1 Answer

+1 vote

In Ihrem Code gibt es zwei mögliche Ursachen für das beschrieben Problem:

  1. Die Seitenabfolge wird neu gemischt, wenn die Seite erneut aufgerufen wird. Sollten Sie also einen Zurück-Knopf zulassen, arbeiten Sie unbeidngt mit isset().

  2. Sie haben nicht angegeben, wo es nach der letzten Seite weitergehen soll. Wenn an letzter Stelle der Seitenabfolge z.B. Seite "A" haben, geht es danach (logischerweise) mit Seite "B" weiter. Im obigen Code ist dafür das $seiten[] = 'PF'; zuständig. Bei Ihnen müssten Sie vor dem setPageOrder() noch ein $random[] = 'E'; ergänzen, wenn Sie der Seite nach D die Kennung E geben.

PS: Bitte verwenden Sie das Symbol {}, um Code besser lesbar zu formatieren (s. oben). Danke.

by SoSci Survey (89.5k points)
Ich hatte das $random[] = 'E'; schon an mehreren Stellen versucht, aber nicht dort :-) jetzt funktioniert es! Vielen vielen Dank!
...