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

0 votes

Hallo,

Ich habe eine Zufallsziehung ganz am Anfang eingebaut, der einen meiner mehreren Fragebögen im aktuellen Projekt auswählt.

Ich möchte dann am Anfang des Fragebogens eine Filterfrage einbauen, die abfragt, ob der Proband die Marke XY schon kennt. --> Ist dies der Fall soll er randome einem anderen Fragebogen aus dem Projekt zugeordnet werden, nicht dem gleichen.

Ist dies möglich?
Wenn ja wie.

Vielen Dank ich voraus.
Liebe Grüße

in SoSci Survey (dt.) by s192276 (120 points)

1 Answer

0 votes

Eine Möglichkeit (ohne Kenntnis des Kontexts kann ich nicht sagen, ob es die beste ist) besteht in der Verwendung des Befehls goToQuestionnaire()

by SoSci Survey (198k points)
Ja genau, das hatte ich auch schon gesehen. :)
Ich weiß nur nicht wo ich das eintrage bei der Filterfrage und wo in den Befehl der Fragebogen mit der Randomisierung eingebunden wird.
Für die Randomisierung können Sie einen Zufallsgenerator mit 'filter'-Option im question()-Befehl verwenden, damit bestimmte Optionen von der Ziehung ausgeschlossen werden.

Der goToQuestionnaire() Befehl kommt chronologisch genau an der Stelle, wo Sie springen. Da Sie bisher nichts über Ihren bisherigen PHP-Code verraten haben, kann ich leider nur recht abstrakt antworten :)
Ich hab es nun hinbekommen :)

mein PHP-Code sieht nun so aus:

$antwort = value('FF04', 'label');
$drawsArray = array(
'3_I01',
'3_I02',
'3_ST01',
'3_ST02',
'Bud_ST',
'Bud_I',
'Int_ST',
'Int_I',
'V_ST01',
'V_ST02',
'V_I01',
'V_I02',
);

if($antwort == "Ja"){
    while(true)
    {
        $qnr = $drawsArray[random(0, 11)];
        if ($qnr == '3_I01' || $qnr == '3_I02' || $qnr == '3_ST01' || $qnr == '3_ST02')
        {
            $found = 1;
        } else {
            break;
        }
    }
        
    goToQuestionnaire($qnr);
}



Jedoch ist nun das Problem, er springt mir random auf die nächste Frage wenn man öfter "Ja" klickt. Eigentlich müsste er endlos auf dieser Frage verharren, wenn er den Code befolgt.  
Mal nach 3x und mal nach 7x "Ja" klicken springt er auf die nächste Frage. Wieso ? :)
Naja ... fast. Die WHILE-Schleife führt laut den Errorlogs unseres Servers gelegentlich dazu, dass sich Ihre Fragebogen "aufhängt". Womöglich war das aber auch eine frühere Version Ihre Codes.

Wenn Sie einfach nur aus den Fragebögen abzüglich der vier im IF-Filter ziehen möchten, dann verwenden Sie doch einfach ein kürzeres Array...

$drawsArray = ...  // Da könnte man die unerwünschten ja schon weglassen
$drawsArray = array_diff($drawsArray, ['3_I01', '3_I02', '3_ST01', '3_ST02']);
shuffle($drawsArray);
goToQuestionnaire($drawsArray[0]);
Ok hab ich so verstanden Dankeschön :).
Nun ist aber die Frage, ist es möglich dieses "array" Fragebogenübergreifend zu registrieren? Es gibt ja die Funktion "registerVariable()" um Variablen zu registrieren und auf anderen Seiten zu nutzen, innerhalb eines Fragebogens. Jetzt wäre es gut zu wissen, ob ich dieses "array" einmal Definieren und Registrieren kann um dann auf weiteren Fragebögen und auf verschiedenen Seiten von verschiedenen Fragebögen nutzen kann. Also füllen, leeren und darauf zugreifen. Geht das?
Sie meinen, dass Sie eine Abfolge auswürfeln und dann alle durchprobieren, bis der Befragte "passt" sagt? So etwas würde ich nicht mit unterschiedlichen Fragebögen machen, sondern direkt in einem einzelnen Fragebogen erledigen. Evtl. mithilfe von loopPage(). Danach können Sie die Person ja immer noch zu einem anderen Fragebogen schicken.

Müsste ich es über unterschiedliche Fragebögen lösen, würde ich es wahrscheinlich über multiLevelDown() und die zugehörigen Funktionen und/oder die Datenbank für Inhalte lösen. Aber das wird dann schon ziemlich kompliziert. Ein Fragebogen wäre, wie gesagt, deutlich einfacher.
...