Vielen Dank!
Der erste Teil (die Seiten randomisieren und in der internen Variable abspeichern) funktioniert nun, hier nochmals mein Code:
$pages = array('B1', 'B2', 'B3', 'B4', 'B5');
// 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('BB17', $indices[$i] + 1);
put($id, $i + 1);
// Seite in der Abfolge speichern
$random[$i] = $pages[$indices[$i]];
}
//neue Seitenabfolge setzen
setPageOrder($random, 'intro');
Was jedoch noch nicht funktioniert, ist, die Reihenfolge der Seiten zu übernehmen. Hier nochmals der Code für den nächsten Block:
//Reihenfolge der fünf Seiten von vorn übernehmen
$pages = array('BH1', 'BH2', 'BH3', 'BH4', 'BH5');
$order2 = [];
foreach (getItems('BB17') as $item) {
$rank = value(id('BB17', $item));
$order2[(int)$rank - 1] = $pages[$item];
}
debug($order2);
setPageOrder($order2);
Ich bekomme diese Debug-Info angezeigt:
Debug-Information für $order2:
3BH2, 1BH3, 2BH4, 4BH5, 0
Also irgendwie fehlt der Indizes für die Seite BH1…
Die ursprünglich festgelegte Reihenfolge war diese:
[Information] Die interne Variable BB17_05 wird mit dem Wert 1 belegt.
[Information] Die interne Variable BB17_02 wird mit dem Wert 2 belegt.
[Information] Die interne Variable BB17_03 wird mit dem Wert 3 belegt.
[Information] Die interne Variable BB17_01 wird mit dem Wert 4 belegt.
[Information] Die interne Variable BB17_04 wird mit dem Wert 5 belegt.
Als Fehlermeldung bekomme ich:
Fehler im Fragebogen (Seite 20)
In der Funktion setPageOrder() wurde ein ungültiger Parameter vom Typ NULL angegeben. Als Parameter sind entweder Strings (Texte) erlaubt oder Arrays, die ausschließlich Strings enthalten.
Fehler im Fragebogen (Seite 20)
Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Undefined offset: 5
Zeile: 9
PHP-Code
006 $order2 = [];
007 foreach (getItems('BB17') as $item) {
008 $rank = value(id('BB17', $item));
009 $order2[(int)$rank - 1] = $pages[$item];
010 }
011 debug($order2);
012 setPageOrder($order2);
Da ich noch zu wenig Ahnung von PHP habe, erkenne ich den Fehler leider nicht…
Was jedoch ggf. problematisch sein könnte, ist dies: Der Fragebogen ist so aufgebaut, dass die fünf Seiten insgesamt viermal wiederholt werden (d.h. es gibt vier Blöcke à 5 Seiten). Die Reihenfolge der 5 Seiten wird für den ersten Block zufällig bestimmt und soll dann für die Blöcke 2 bis 4 übernommen werden (mein oben geschildertes Problem). Zusätzlich möchte ich jedoch die Reihenfolge der Blöcke 2 bis 4 counterbalancieren.
Hierzu habe ich einen Zufallsgenerator (BB07) angelegt, der alle möglichen Abfolgen der drei Blöcke enthält:
1 = BH0-BH5, BS0-BS5, BD0-BD5
2 = BS0-BS5, BH0-BH5, BD0-BD5
3 = BD0-BD5, BS0-BS5, BH0-BH5
4 = BD0-BD5, BH0-BH5, BS0-BS5
5 = BS0-BS5, BD0-BD5, BH0-BH5
6 = BH0-BH5, BD0-BD5, BS0-BS5
Bevor der zweite Block beginnt, habe ich diesen PHP-Code eingebaut:
$code2 = value('BB07');
$order1 = value('BB07', 'label');
setPageOrder($order1, 'Grafiken');
Einzeln für sich genommen hat es mit dem Rotieren der Blöcke gut funktioniert. Aber vielleicht interferieren meine beiden Versuche, die Blöcke zu rotieren und innerhalb jeden Blocks die Reihenfolge der Seiten zu beeinflussen..?
Vielen Dank für Eure Geduld!!!