Liebes Support-Team,
ich habe in meinem Fragebogen 4 Zettel, jeder Zettel hat andere Fragen, die zufällig rotieren (über mehrere Seiten hinweg). Ich möchte nun die angezeigte Reihenfolge der Fragen in einer internen Variable speichern. Mit dem Code aus der put()-Dokumentation bekomme ich folgende Fehlermeldungen:
"Die Funktion id() erwartet als Parameter Nr. 2 einen Wert vom Typ integer. Es wurde ein Wert (GR29) vom Typ string angegeben." und
"Für die Funktion put() wurde anstatt einer Frage- oder Item-Kennung ein Parameter vom Typ NULL angegeben")
Das ist der Code von Seite 1 (GR37 ist der Zufallsgenerator, IV01 die interne Variable):
$gruppe= value('GR37');
if ($gruppe == 1) {
// Das Mischen der Liste nur einmalig ausführen
if (!isset($gramm1)) {
// Liste der Frage-Kennungen erstellen
$gramm1= array(
'GR01', 'GR16',
'GR20', 'GR24',
'GR05', 'GR28',
'GR32',
'BA05', 'BA02',
'BA03', 'BA06',
'BA07', 'BA08',
'BA04'
);
// Die Liste zufällig mischen
shuffle($gramm1);
// Die Listen auf allen Seiten verfügbar machen
registerVariable('gramm1');
}
// Die Kennungen der Liste anzeigen
question('BA01');
question($gramm1[0]);
question($gramm1[1]);
question($gramm1[2]);
question($gramm1[3]);
question($gramm1[4]);
question($gramm1[5]);
question($gramm1[6]);
//Rangfolge merken
for ($i=0; $i<count($gramm1); $i++) {
// Kennung der internen Variable aus Frage-Kennung plus Inhalt des Elements (!) erstellen
$id = id('IV01', $gramm1[$i]);
// Hier den Rang speichern
put($id, $i + 1);
}
}
elseif (value('GR37') == 2) {// Das Mischen der Liste nur einmalig ausführen
if (!isset($gramm2)) {
$gramm2= array(
'GR13', 'GR29',
'GR21', 'GR33',
'GR04',
'GR25', 'GR17',
'BA05', 'BA02',
'BA03', 'BA06',
'BA07', 'BA08',
'BA04'
);
// Die Liste zufällig mischen
shuffle($gramm2);
// Die Listen auf allen Seiten verfügbar machen
registerVariable('gramm2');
}
// Die Kennungen der Liste anzeigen
question('BA01');
question($gramm2[0]);
question($gramm2[1]);
question($gramm2[2]);
question($gramm2[3]);
question($gramm2[4]);
question($gramm2[5]);
question($gramm2[6]);
//Rangfolge merken
for ($i=0; $i<count($gramm2); $i++) {
// Kennung der internen Variable aus Frage-Kennung plus Inhalt des Elements (!) erstellen
$id = id('IV01', $gramm2[$i]);
// Hier den Rang speichern
put($id, $i + 1);
}
}elseif (value('GR37') == 3) {
if (!isset($gramm3)) {
$gramm3= array(
'GR14', 'GR26',
'GR18', 'GR30',
'GR03', 'GR08',
'GR22',
'BA05', 'BA02',
'BA03', 'BA06',
'BA07', 'BA08',
'BA04'
);
// Die Liste zufällig mischen
shuffle($gramm3);
// Die Listen auf allen Seiten verfügbar machen
registerVariable('gramm3');
}
// Die Kennungen der Liste anzeigen
question('BA01');
question($gramm3[0]);
question($gramm3[1]);
question($gramm3[2]);
question($gramm3[3]);
question($gramm3[4]);
question($gramm3[5]);
question($gramm3[6]);
//Rangfolge merken
for ($i=0; $i<count($gramm3); $i++) {
// Kennung der internen Variable aus Frage-Kennung plus Inhalt des Elements (!) erstellen
$id = id('IV01', $gramm3[$i]);
put($id, $i + 1);
}
}elseif (value('GR37') == 4) {
if (!isset($gramm4)) {
$gramm4= array(
'GR15', 'GR27',
'GR02', 'GR07',
'GR19', 'GR31',
'GR23',
'BA05', 'BA02',
'BA03', 'BA06',
'BA07', 'BA08',
'BA04'
);
// Die Liste zufällig mischen
shuffle($gramm4);
// Die Listen auf allen Seiten verfügbar machen
registerVariable('gramm4');
}
// Die Kennungen der Liste anzeigen
question('BA01');
question($gramm4[0]);
question($gramm4[1]);
question($gramm4[2]);
question($gramm4[3]);
question($gramm4[4]);
question($gramm4[5]);
question($gramm4[6]);
//Rangfolge merken
for ($i=0; $i<count($gramm4); $i++) {
// Kennung der internen Variable aus Frage-Kennung plus Inhalt des Elements (!) erstellen
$id = id('IV01', $gramm4[$i]);
// Hier den Rang speichern
put($id, $i + 1);
}
}
Ich weiß nicht genau, wie ich die Fehler beheben soll. Die Arrays in id() sind doch eigentlich vom Typ integer?
Und noch eine Frage: ist es überhaupt möglich, alle Rangfolgen von 4 verschiedenen Zetteln in der gleichen internen Variable zu speichern, oder brauche ich pro Zettel/Array eine eigene IV? Die Logik hab ich noch nicht ganz verstanden.
Vielen Dank schonmal!