Die Debug-Information ist folgende:
[Processing] Reading answers from page 2
[Information] Answer to FI01 = 1
[Information] Answer to FI02 = 2
[Information] Answer to FI03_01 = 7.00
[Information] Answer to FI04 = 2
[Information] Answer to P001 = 1
[Information] 100% of the questions have been answered so far
[Processing] Create page 3 in questionnaire SoSciCode
[Information] value("P001") = 1
[Information] The internal variable IV01_01 gets a value of 1.
[Information] The internal variable IV01_02 gets a value of P009x01.
[Information] The internal variable IV01_03 gets a value of P009x02.
[Information] value("IV01_02") = "P009x01
Der komplette PHP-Code ist wie folgt (P001 ist die Frage nach der eigenen Position und P009 ist der Zufallsgenerator mit allen 7 Positionen):
$own = value('P001');
$rnd = array_keys(valueList('P009'));
// Doppelung prüfen
$match = -1;
if ($own == $rnd[0]) {
$match = 0;
}
if ($own == $rnd[1]) {
$match = 1;
}
// Doppelung ersetzen
if ($match > -1) {
// Was bleibt für die Ziehung?
$available = array_diff(
array(1,2,3,4,5,6,7),
array_merge(array($own), $rnd)
);
// Eines davon verwenden
$rnd[$match] = $available[0];
}
// Und alles abspeichern
put('IV01_01', $own);
put('IV01_02', $rnd[0]);
put('IV01_03', $rnd[1]);
$code = value('IV01_02');
foreach (array(1,2,3,4,5,6) as $number) {
question(id('P'.$code, $number));
}
Den unteren Teil ab "$code" würde ich dann entsprechend mit IV01_01 und IV01_03 auf anderen Seiten abfragen. Bei IV01_01 gibt es damit keinerlei Probleme. Anfangs hatte ich diesen Teil in einem separaten PHP-Code-Feld. Mittlerweile jedoch in einem gemeinsamen. Ein Unterschied war nicht zu erkennen.