Das ist der PHP-Code:
//Dauerhaft
if(count($objQuest) == 0 && count($subQuest) == 0){
setNextPage($firstNotRandomQuest);
$questArt = 500;
}elseif(count($objQuest) == 0 && count($subQuest) > 0){
$questArt = 99;
}elseif(count($objQuest) > 0 && count($subQuest) == 0){
$questArt = 1;
}else{
$questArt = random(1,2);
if($questArt == 2){
$questArt = 99;
}
}
if($questArt == 1){
//Objektiv
$frageart = "objektiv";
$arraylaenge = count($objQuest);
if(count($objQuest) == 1){
shuffle($objQuest);
$nQuestId = $objQuest[0];
unset($objQuest[0]);
}else{
$nQuest = random(0,$arraylaenge-1);
$nQuestId = $objQuest[$nQuest];
array_splice($objQuest,$nQuest,1);
}
setNextPage($nQuestId);
registerVariable($objQuest);
$nSeite = $nQuestId;
registerVariable($nSeite);
}elseif($questArt == 99){
//Subjektiv
$frageart = "subjektiv";
$arraylaenge = count($subQuest);
if(count($subQuest) == 1){
shuffle($subQuest);
$nQuestId = $subQuest[0];
unset($subQuest[0]);
}else{
$nQuest = random(0,$arraylaenge-1);
$nQuestId = $subQuest[$nQuest];
array_splice($subQuest,$nQuest,1);
}
setNextPage($nQuestId);
registerVariable($subQuest);
$nSeite = $nQuestId;
registerVariable($nSeite);
}
registerVariable($frageart);
Vereinfacht gesagt habe ich alle Fragen (es gibt 2 Fragekategorien, objektiv und subjektiv) in ein Array gelegt. Per Zufallsgenerator (siehe Code) werden die Fragen gezogen, bis keine mehr verfügbar ist. Insgesamt gibt es 36 Fragen (18 Kategorie objektiv, 18 Kategorie subjektiv), in jedem Interview müssen alle Fragen randomisiert gezogen werden.
Den Debug-Modus habe ich schon durchlaufen lassen, der bestätigt, dass in manchen Durchläufen plötzlich eine Frage "rausgeworfen wird". Das heißt, er springt z.B. von 16 verbleibenden Fragen in der Kategorie Objektiv auf 14, statt auf 15.