0 votes
in SoSci Survey (dt.) by s229091 (110 points)

Hallo,

ich möchte die Probanden randomisiert auf 2 Bedingungen aufteilen, in denen sie jeweils 20 Bilder (auf aufeinanderfolgenden Seiten) bewerten sollen. Es soll also ein Bild pro Seite angezeigt werden und darunter eine Rating-Skala. Dazu habe ich eine Frage mit 40 Items angelegt. Mein Problem ist nun, dass alle Fragen angezeigt werden und nicht nur eine pro Bild.
Ich habe folgenden PHP-Code eingegeben. Wo liegt der Fehler?

$zahl = value('RP01');
 
if ($zahl == 1) {
$bilder1 = [
'BI03_01' => 'Natur1.jpg',
'BI03_02' => 'Natur2.jpg',
'BI03_03' => 'Natur3.jpg',
'BI03_04' => 'Natur4.jpg',
'BI03_05' => 'Natur5.jpg',
'BI03_06' => 'Natur6.jpg',
'BI03_07' => 'Natur7.jpg',
'BI03_08' => 'Natur8.jpg',
'BI03_09' => 'Natur9.jpg',
'BI03_10' => 'Natur10.jpg',
'BI03_11' => 'Natur11.jpg',
'BI03_12' => 'Natur12.jpg',
'BI03_13' => 'Natur13.jpg',
'BI03_14' => 'Natur14.jpg',
'BI03_15' => 'Natur15.jpg',
'BI03_16' => 'Natur16.jpg',
'BI03_17' => 'Natur17.jpg',
'BI03_18' => 'Natur18.jpg',
'BI03_19' => 'Natur19.jpg',
'BI03_20' => 'Natur20.jpg',
];
$i = loopPage(count($bilder1));
if (!isset($fragen)) {
  $fragen = array_keys($bilder1);
  shuffle($fragen);
  registerVariable($fragen);
}
html('<div><img src="'.$bilder1[$fragen[$i]].'"></div>');
question($fragen[$i]);

} elseif ($zahl == 2) {
$bilder2 = [
'BI03_21' => 'Stadt1.jpg',
'BI03_22' => 'Stadt2.jpg',
'BI03_23' => 'Stadt3.jpg',
'BI03_24' => 'Stadt4.jpg',
'BI03_25' => 'Stadt5.jpg',
'BI03_26' => 'Stadt6.jpg',
'BI03_27' => 'Stadt7.jpg',
'BI03_28' => 'Stadt8.jpg',
'BI03_29' => 'Stadt9.jpg',
'BI03_30' => 'Stadt10.jpg',
'BI03_31' => 'Stadt11.jpg',
'BI03_32' => 'Stadt12.jpg',
'BI03_33' => 'Stadt13.jpg',
'BI03_34' => 'Stadt14.jpg',
'BI03_35' => 'Stadt15.jpg',
'BI03_36' => 'Stadt16.jpg',
'BI03_37' => 'Stadt17.jpg',
'BI03_38' => 'Stadt18.jpg',
'BI03_39' => 'Stadt19.jpg',
'BI03_40' => 'Stadt20.jpg',
];
  $i = loopPage(count($bilder2));
if (!isset($fragen)) {
  $fragen = array_keys($bilder2);
  shuffle($fragen);
  registerVariable($fragen);
}
html('<div><img src="'.$bilder2[$fragen[$i]].'"></div>');
question($fragen[$i]);
};

1 Answer

0 votes
by SoSci Survey (327k points)

Wo liegt der Fehler?

Hier:

question($fragen[$i]);

Okay, ich hole ein wenig aus. In $fragen steht "BI03_01", "BI03_02" u.s.w.

Das sind aber keine Frage-Kennungen, sondern Item-Kennungen. question() versteht das nicht, bzw. erst dann, wenn man es trennt:

$varID = $fragen[$i];
$frage = substr($varID, 0, 4);
$item = (int)substr($varID, 5);
question($frage, $item);

Ich bin nicht 100%ig sicher, ob Zahlen mit einer führenden Null, die größer als 7 sind korrekt interpretiert werden. Falls nicht, müsste noch ein ltrim() ergänzt werden, welches die führende 0 entfernt.

$varID = $fragen[$i];
$frage = substr($varID, 0, 4);
$item = (int)ltrim(substr($varID, 5), '0');
question($frage, $item);
by s229091 (110 points)
Vielen, vielen Dank für die schnelle Antwort! Jetzt klappt es! Auch ohne ltrim()

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

...