0 votes
in SoSci Survey (dt.) by s136456 (120 points)

Hallo Comunity!

In meinem Fragebogen habe ich ein PHP- Element, was die Randomisierung der Fragen übernimmt. Durch verschiedene Prinzipien bekomme ich am Ende einen array $realqst. Dieser enthält die 8 Fragen, die ich in meinem Fragebogen stellen will. Durch question($realqst[0]); question($realqst[1]); usw. kann ich die Fragen auch auf der selben Seite problemlos anzeigen.
Um die Fragen auf der nächsten Seite zu stellen, verwende ich registerVariable('realqst');, um den array realqst festzuhalten. Wenn ich dann aber auf den folgenden Seiten die Fragen durch question($realqst[0]); abzurufen versuche, bekomme ich die Fehlermeldung "Die PHP-Variable $realqst wurde verwendet, in diesem PHP-Code aber noch nicht definiert (sie enthält noch keinen Wert).".
Ich hatte mich bei der Gestaltung des PHP- Code an einem Tutorial orientiert (https://www.soscisurvey.de/help/doku.php/de:create:functions:registervariable). In meinem Code scheint das allerdings nicht zu klappen.
Muss man registerVariable() anders verwenden oder habe ich einen Fehler gemacht?

Vielen Dank für jede Antwort!

Hier mein kompletter Code:

$nummerfrage = array(1, 2, 3, 4, 5, 6, 7, 8);

$nummerbz = array(1, 2, 3, 4, 5, 6, 7, 8);
    // 1 - 4 fs, 5-8 bz

$nummerinv = array(1, 2, 3, 4, 5, 6, 7, 8);
    // 1 - 4 high, 5-8 low

$realqst = array ();

$i = 0;
$k = 0;
$l = 0;
$m = 0;

shuffle($nummerfrage);
shuffle($nummerbz);
shuffle($nummerinv);


while($i < 8) {
$eins = array();

//keine Alt
if (value('RG1') == 1) {
    if ($nummerfrage[$k] == 1) 
        {array_push ($eins, 'FN01','FN01', 'LN01', 'LN02');}
    elseif ($nummerfrage[$k] == 2) 
        {array_push ($eins, 'FN03','FN04', 'LN03', 'LN04');}
    elseif ($nummerfrage[$k] == 3) 
        {array_push ($eins, 'FN05','FN06', 'LN05', 'LN06');}
    elseif ($nummerfrage[$k] == 4) 
        {array_push ($eins, 'FN07','FN08', 'LN07', 'LN08');}
    elseif ($nummerfrage[$k] == 5) 
        {array_push ($eins, 'FN09','FN10', 'LN09', 'LN10');}
    elseif ($nummerfrage[$k] == 6)
        {array_push ($eins, 'FN11','FN12', 'LN11', 'LN12');}
    elseif ($nummerfrage[$k] == 7) 
        {array_push ($eins, 'FN13','FN14', 'LN13', 'LN14');}
    elseif ($nummerfrage[$k] == 8) 
        {array_push ($eins, 'FN15','FN16', 'LN15', 'LN16');}
}

//Alt
elseif (value('RG1') == 2)  {
    if ($nummerfrage[$k] == 1) 
        {array_push ($eins, 'FA01','FA02', 'LA01', 'LA02');}
    elseif ($nummerfrage[$k] == 2) 
        {array_push ($eins, 'FA03','FA04', 'LA03', 'LA04');}
    elseif ($nummerfrage[$k] == 3) 
        {array_push ($eins, 'FA05','FA06', 'LA05', 'LA06');}
    elseif ($nummerfrage[$k] == 4) 
        {array_push ($eins, 'FA07','FA08', 'LA07', 'LA08');}
    elseif ($nummerfrage[$k] == 5) 
        {array_push ($eins, 'FA09','FA10', 'LA09', 'LA10');}
    elseif ($nummerfrage[$k] == 6) 
        {array_push ($eins, 'FA11','FA12', 'LA11', 'LA12');}
    elseif ($nummerfrage[$k] == 7) 
        {array_push ($eins, 'FA13','FA14', 'LA13', 'LA14');}
    elseif ($nummerfrage[$k] == 8) 
        {array_push ($eins, 'FA15','FA16', 'LA15', 'LA16');}
}
   

if (($nummerbz[$l] < 5) && ($nummerinv[$m] < 5)) 
    {array_push ($realqst, $eins[0]);}
elseif (($nummerbz[$l] < 5) && ($nummerinv[$m] > 4)) 
    {array_push ($realqst, $eins[1]);}
elseif (($nummerbz[$l] > 4) && ($nummerinv[$m] < 5)) 
    {array_push ($realqst, $eins[2]);}
elseif (($nummerbz[$l] > 4) && ($nummerinv[$m] > 4)) 
    {array_push ($realqst, $eins[3]);}


$i++;
$k++;
$l++;
$m++;
//registerVariable('realqst');
}

//auf den jeweiligen seiten
question($realqst[0]);
question($realqst[1]);

1 Answer

0 votes
by SoSci Survey (325k points)

Sie haben vor dem Befehl registerVariable() zwei Schrägstriche stehen. Dadurch wird diese Zeile "auskommentiert", d.h. sie wird ignoriert.

by s136456 (120 points)
oops, das war ein Versehen. Ohne Auskommentierung funktioniert es aber weiterhin nicht.
by SoSci Survey (325k points)
Ich Code ist von den Einrückungen her ein wenig unübersichtlich. Zu welcher öffnenden Klammer gehört denn die schließende geschweifte Klammer hinter dem registerVariable()?
by s136456 (120 points)
zu der oben angefangen while- Schleife.
by SoSci Survey (325k points)
Und nur zur Sicherheit: Sie haben die Seite mit dem registerVariable() gestartet und dann im Fragebogen auf "Weiter" geklickt, und dann kommt die Fehlermeldung, ja?

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

...