0 votes
in SoSci Survey (dt.) by s090195 (120 points)
edited by SoSci Survey

Liebes Support Team,

Ich habe drei Seiten in meinem Fragebogen deren Abfolge zufällig erfolgen soll, leider erscheinen mit meinem Code aber immer 4 oder 5 Seiten d.h. eine oder zwei Seiten werden doppelt präsentiert. Woran kann das liegen?
Desweiteren bin ich mir mit der Speicherung mittels put() unsicher. Muss ich unter internen Variablen die Seitenkennung (der Seiten die zufällig erfolgen) als Variable angeben oder etwas anderes?
Dies ist mein derzeitiger PHP Code:

if (!isset($seiten)) {
  $seiten = array('PA', 'PB', 'PC');
  shuffle($seiten);
  $seiten[] = 'PX';
  registerVariable($seiten);
}

$pages = array('PA','PB','PC');
// 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('AN09', $indices[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $random[$i] = $pages[$indices[$i]];
}
// Neue Seitenabfolge setzen
setPageOrder($random);

Ich hoffe auf ihre Hilfe :)

1 Answer

0 votes
by SoSci Survey (327k points)

Sie mischen die Seiten doppelt - und das zweite Mischen (welches auch die Ränge speichert) erfolgt auch bei eventuellen Wiederholungen. Entfernen Sie die Doppelung und (ebenfalls wichtig) platziernen Sie den PHP-Code bitte auf der Seite vor PA.

if (!isset($seiten)) {
  $pages = array('PA','PB','PC');
  // 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
  $seiten = array();
  for ($i=0; $i<count($indices); $i++) {
    // Rang speichern wie oben
    $id = id('AN09', $indices[$i] + 1);
    put($id, $i + 1);
    // Seite in der Abfolge speichern
    $seiten[$i] = $pages[$indices[$i]];
  }
}
// Neue Seitenabfolge setzen
setPageOrder($seiten);

Wenn Sie die Abfolge nicht speichern wollten, dann wäre der Code nochmal deutlich kürzer. Aber ich ging davon aus, dass Sie den Code zum Speichern der Abfolge nicht grundlos aufgenommen haben.

by s090195 (120 points)
Wow, vielen Dank für diese schnelle und hilfreiche Antwort!
Ja ich muss die Abfolge speichern, da auf den Seiten nach Preisschätzungen gefragt wird und die Antworten keines falls durch einander geraten dürfen.

An welcher Stelle die Interne Frage zum speichern steht ist nicht so wichtig?
Laut Vorschau wird die Reihenfolge der Seiten in einer Tabelle gespeichert, oder?
Die Items der Internen Frage habe ich nach den Seiten PA, PB und PC benannt, ist das korrekt oder sollte das besser AN09_01 genannt werden? Weil ich in dem PHP Code ja nicht direkt die Items anziehle, sondern nur AN09?!
by SoSci Survey (327k points)
Wenn Sie es ein paar mal ausprobiert haben, dann sehen Sie sich das Ergebnis einfach unter "Erhobene Daten" -> "Daten ansehen" an.

Welche Kennungen Sie den Seiten geben, ist egal. Hier würde ich keine Änderung mehr vornehmen, wenn es funktioniert.
asked Mar 5, 2018 in SoSci Survey (dt.) by s090195 (120 points)
edited Mar 5, 2018 by SoSci Survey
Wo liegt die Doppelung?

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

...