0 votes
in SoSci Survey (dt.) by s188177 (110 points)

Hallo,

für eine Umfrage im Rahmen meiner Masterarbeit arbeite ich mit einem externen Panel. Sie haben mir mehrere Redirect Links zur Verfügung gestellt (quotafull, screenouts, complete).
Ich konnte die Screenouts und die Complete Seite mit PHP-Codes programmieren.
Allerdings kann ich den Link zu Quotafull nicht programmieren.

Wir möchten n=250 Teilnehmer haben und ich habe 3 Altersgruppen festgelegt. Für jede Altersgruppe würden wir etwa 83 Personen benötigen, damit die Variable gleichmäßig verteilt ist.

Wenn ich jedoch den PHP-Code erstelle und meine Umfrage nochmal teste, lande ich, egal welche Option ich für das Alter wähle, immer auf der "Quotafull" Redirect Seite.

Hier ist meine Frage:

Hier ist mein PHP-Code auf Seite 2 (die Frage zum Altersteht auf Seite 1)

$quotaAge = [
0 => 84, 
1 => 83,
2 => 83
];

$age = value('SD04'); 

$casesAge = statistic('count', 'IT01_01', $ageGroup);

$maxPerAge = $quotaAge[$ageGroup];


if ($casesAge >= $maxPerAge) {
redirect('https://www.innofact-umfrage.de/test/quotafull_f.php?r=%reference%');
}

und hier ist mein "put" PHP-Code - kurz vor dem PHP-Code für die Complete Seite.

$age = value('SD04'); 

put('IT01_01', $ageGroup);

Ist mein PHP Code falsch?
Herzlichen Dank für Ihre Hilfe.

Mit freundlichen Grüssen

1 Answer

0 votes
by SoSci Survey (306k points)

Spotan sehe ich als Fehler nur, dass das Alter nicht von 0 bis 2, sondern von 1 bis 3 kodiert ist. Das sollte aber nur bei der Altersguppe 60-80 zu dem beobachteten Fehler führen.

Um Fehler mit redirect() zu finden, kommentieren Sie selbiges aus. Und fügen Sie noch ein paar debug() ein, damit wir sehen, was da passiert:

$quotaAge = [
  1 => 84, 
  2 => 83,
  3 => 83
];

$age = value('SD04'); 

$casesAge = statistic('count', 'IT01_01', $ageGroup);

$maxPerAge = $quotaAge[$ageGroup];

debug($age);
debug($casesAge);
debug($maxPerAge);

if ($casesAge >= $maxPerAge) {
    // redirect('https://www.innofact-umfrage.de/test/quotafull_f.php?r=%reference%');
   html('<p>Redirect</p>');
}
by s188177 (110 points)
Hallo, vielen Dank für Ihre Rückmeldung!
Ich habe Ihren Code integriert, und beim Testen im Debug-Modus werden mir die folgenden Informationen angezeigt :

Hinweis (Seite 2)
Debug-Information für $age:
$age = 3 (string)
Hinweis (Seite 2)
Debug-Information für $casesAge:
$casesAge = 0 (integer)
Hinweis (Seite 2)
Debug-Information für $maxPerAge:
Keine Daten (null)
Redirect

Fehler im Fragebogen (Seite 2)
Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Die PHP-Variable $ageGroup wurde verwendet, in diesem PHP-Code aber noch nicht definiert (sie enthält noch keinen Wert).

PHP-Code

008
009 $age = value('SD04');
010
011 $casesAge = statistic('count', 'IT01_01', $ageGroup);
012
013 $maxPerAge = $quotaAge[$ageGroup];
014
Fehler im Fragebogen: Die PHP-Variable $ageGroup wurde verwendet, in diesem PHP-Code aber noch nicht definiert (sie enthält noch keinen Wert).

PHP-Code

010
011 $casesAge = statistic('count', 'IT01_01', $ageGroup);
012
013 $maxPerAge = $quotaAge[$ageGroup];
014
015 debug($age);
016 debug($casesAge);
Fehler im Fragebogen: Undefined index:
Zeile: 13

PHP-Code

010
011 $casesAge = statistic('count', 'IT01_01', $ageGroup);
012
013 $maxPerAge = $quotaAge[$ageGroup];
014
015 debug($age);
016 debug($casesAge);
by SoSci Survey (306k points)
> Debug-Information für $maxPerAge:
> Keine Daten (null)

Okay, das heißt, wir haben hier ein Problem:

$maxPerAge = $quotaAge[$ageGroup];

Und wenn man das weiß, dann wird auch schnell klar warum: Es gibt keine Variable $ageGroup, nur $age. Aber wenn Sie den Code wie oben verwendet haben, müsste dazu eigentlich eine Fehlermeldung angezeigt werden. Sie hatten nichts von einer Fehlermeldung berichtet?!?

Kurzfristige Lösung:

$ageGroup = value('SD04');

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

...