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

Sehr geehrte Damen und Herren,

für ein Screenout und die Berücksichtigung einer Quote (500 Berufstätige Personen im Alter zwischen 18-65 verteilt auf Männer und Frauen) gibt es Probleme mit meinem PHP-Code, in ich in Anlehnung an der Website und bereits kommentierten Fragen erstellt habe. Allerdings kommt immer eine Fehlermeldung (im Debug-Modus).

Meine Variablen: SD16 (Alter) --> dann kodiert in Gruppen (2=18-65 Jahre); SD02 = Geschlecht (1=w;2=m); SD17=Berufstätig (1=ja, 0=nein).
Interne Variable, die ich erstellt habe, lautet: IV01_01

//Quote festlegen
$quota = [
  '2-1-1' => 250, // 250 weibliche berufstätige Personen in Altersgruppe 2 (18-65 Jahre)
  '2-2-1' => 250  // 250 männliche berufstätige Personen in Altersgruppe 2 (18-65 Jahre)
];
 
>//Variablen auslesen 
$gender = value('SD02');
$beruf = value('SD17');
 
>// Das Alter wird umkodiert
$age = value('SD16');
if ($age < 18) {
  $ageGroup = 1;
} elseif ($age <= 65) {
  $ageGroup = 2;
} else {
  $ageGroup = 3;
}

>// Definition einer Variable mit Altersgruppe, Geschlecht, Berufstätigkeit
$demGroup = $ageGroup.'-'.$gender.'-'.$beruf;

>// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
// Internen Variablen IV01_01 in Fragenkatalog integriert
$cases    = statistic('count', 'IV01_01', $ageGroup);

>// Screenout
if (!array_key_exists($demGroup, $quota)) {
  redirect('https://mingle.respondi.com/s/1213131/ospe.php3?c_0002=0&return_tic=%reference%');
}
 
>// Auslesen der Quoten für die angegebenen Merkmale
$maxPerGroup = $quota[$demoGroup];
 
>// Quotenstopp
if ($cases >= $maxPerGroup){
  redirect('https://mingle.respondi.com/s/1213131/ospe.php3?c_0002=2&return_tic=%reference%');
}

Außerdem habe ich auf der vorletzten Seite die interne Variable eingebaut (vor dem Complete-Link)

> //Variablen auslesen
$gender = value('SD02');
$beruf = value('SD17');
 
>// Das Alter wird umkodiert
$age = value('SD16');
if ($age < 18) {
  $ageGroup = 1;
} elseif ($age <= 65) {
  $ageGroup = 2;
} else {
  $ageGroup = 3;
}

>// Definition einer Variable mit Altersgruppe, Geschlecht, Berufstätigkeit
$demGroup = $ageGroup.'-'.$gender.'-'.$beruf;

>//Speichern der Gruppenzugehörigkeit in der internen Variablen
put('IV01_01', $demGroup);

>redirect('https://mingle.respondi.com/s/1213131/ospe.php3?c_0002=1&return_tic=%reference%');

Habe ich etwas mit der internen Variable falsch gemacht oder ist der Code falsch?

Vielen Dank im Voraus.

P.S. ich weiß nicht, wie ich den Code besser in die Frage integriere - entschuldigen Sie!

ago in SoSci Survey (dt.) by s098619 (170 points)
> P.S. ich weiß nicht, wie ich den Code besser in die Frage integriere - entschuldigen Sie!

Es ist der Knopf {} :)

> Allerdings kommt immer eine Fehlermeldung (im Debug-Modus).

Für die Lösung des Fehlers wäre es unglaublich hilfreich, den genauen Wortlaut der Fehlermeldung zu kennen. Danke.
Mit der Fehlermeldung meine ich eher, dass auch wenn ich in die Quote hineinfallen würde (weiblich, 25, berufstätig), ich nicht zur nächsten Seite weitergeleitet werde.

Ich habe den "eigentlichen Beginn" der Befragung auf Seite 4 positioniert (den PHP-Code auf Seite 2) im Fragebogen.

1 Answer

0 votes

Um das Problem zu untersuchen, deaktivieren Sie bitte zunächst die Redirects und fügen Sie stattdessen eine Debug-Information ein:

// Screenout
if (!array_key_exists($demGroup, $quota)) {
  // redirect('https://mingle.respondi.com/s/1213131/ospe.php3?c_0002=0&return_tic=%reference%');
  debug('Screenout');
  debug($demGroup);
}
 
// .... 

// Quotenstopp
if ($cases >= $maxPerGroup){
  // redirect('https://mingle.respondi.com/s/1213131/ospe.php3?c_0002=2&return_tic=%reference%');
  debug('Quotenstopp');
  debug($cases);
  debug($maxPerGroup);
}

Wenn Sie den Fragebogen im Debug-Modus laufen lassen, sollte sich dann gut nachvollziehen lassen, wo es hakt.

Bitte prüfen Sie auch nochmal die Redirect-Links. Sie haben zweimal denselben verwendet, aber üblicherweise gibt es unterschiedliche Links für Screenout und Quotenstop.

ago by SoSci Survey (91.9k points)
Super, vielen Dank für die Hilfestellung - Sie haben einen wirklich tollen Support!
Ich habe im Debug-Modus meinen Fehler gefunden und nun funktioniert es!!
...