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

Moin Moin,

gerne würde ich die Items meiner Frage DI05 randomisieren und im Datensatz die Reihenfolge aufzeichnen.

Hierzu habe ich die Interne Variable DI08 mit 10 items angelegt sowie folgenden PHP Code
im Fragebogen:

//Items randomisieren

if (!isset($itemsIN)) {
  $itemsIN = getItems('DI05', 'all');
  shuffle($itemsIN);
  registerVariable($itemsIN);
}
question('DI05', $itemsIN);

//Rangfolge speichern 

for ($i=0; $i<count($itemsIN); $i++) {
 $id = id('DI08', $itemsIN[$i]);
 put($id, $i + 1);
}

Wenn ich beim Ausfüllen das Fragebogens einen Screenshot mache und die aufgezeichnete Reihenfolge mit diesem vergleiche, stimmt dies leider nicht überein.

Kann mir jemand hierzu weiterhelfen?

Grüße

Chris

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

1 Answer

0 votes

Der von Ihnen gespotete Code speichert den Rang (!) jedes Items. Wenn die Items also z.B. in der Reihenfolge

2 4 1 3

abgefragt wurden, dann wird in DI08_02 der Rang 1 (auf erster Position) gespeichert, also in DI08 gesamt:

3 1 4 2

Für die Auswertung ist es meist relevant, auf welcher Position ein item gezeigt wurde.

Wenn Sie hingegen die Werte 2, 4, 1, 3 im Datensatz stehen haben möchten (also die Nummer des Items pro Rang), dann verwenden Sie bitte den ersten Code aus der Anleitung put() -> Beispiel: Randomisierung I.

by SoSci Survey (79.6k points)
Perfekt - nun habe ich meinen Fehler gefunden und den Code so angepasst das er die Reihenfolge der Items speichert.

Nun stehe ich allerdings noch vor einer weiteren Herausforderung - wenn ich auf einer Fragebogen zwei PHP Codes hintereinander stelle:


//Items randomisieren

if (!isset($itemsIN)) {
  $itemsIN = getItems('DI01', 'all');
  shuffle($itemsIN);
  registerVariable($itemsIN);
}
question('DI01', $itemsIN);

//Reihenfolge speichern

for ($i=0; $i<count($itemsIN); $i++) {
   $id = id('DI09', $i + 1);
   put($id, $itemsIN[$i]);
}


//Items randomisieren

if (!isset($itemsIN)) {
  $itemsIN = getItems('DI05', 'all');
  shuffle($itemsIN);
  registerVariable($itemsIN);
}
question('DI05', $itemsIN);

//Reihenfolge speichern

for ($i=0; $i<count($itemsIN); $i++) {
    $id = id('DI08', $i + 1);
  put($id, $itemsIN[$i]);
}

Erhalte ich folgende Fehlermeldung:
"For the question DI01 no item with the ID 5 has been found."

Muss ich die beiden Codes noch durch einen Befehl trennen?
Sie definieren oben die Variable $itemsIN - und weil isset($itemsID) unten dann "true" zurückliefert, wird die Klammer im zweiten PHP-Code gar nicht mehr ausgeführt. Ab sofort erklärt die Anleitung das im Detail: https://www.soscisurvey.de/help/doku.php/de:create:functions:registervariable#verwendung_mit_isset
Perfekt - Jetzt klappt alles so wie es soll :-)
...