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

Hallo zusammen

Ich frage bei meinem Fragebogen auf einzelnen Seiten nach dem Geschlecht und nach dem Alter. Für beide Variablen habe ich Quoten. Wo muss ich den PHP-Code dafür platzieren? Und wie mache ich das genau? Habe mal versucht, den Code gemäss Vorlage (Quotierung) zu schreiben:

$quotaGender = [
  1 => 3,  // 3 Frauen (Code 1)
  2 => 3   // 3 Männer (Code 2)
];
$quotaAge = [
  2 => 2,  // 2 Personen in Altersgruppe 2 (18-30 Jahre)
  3 => 2,  // 2 Personen in Altersgruppe 3 (31-45 Jahre)
  4 => 2   // 2 Personen in Altersgruppe 4 (älter als 45 Jahre)
  ];

// Geschlecht & Alter wird direkt ausgelesen
$gender = value('SD01');
$age = value('SD02');

  // Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesGender = statistic('count', 'SD01_01', $gender);
$casesAge    = statistic('count', 'SD02_02', $ageGroup);
 
// Screenout
if (!array_key_exists($gender, $quotaGender) || !array_key_exists($ageGroup, $quotaAge)) {
  redirect('https://www.panelanbieter.de/?xyz=screenoutGHIJKI&uid=%reference%');
}
 
// Auslesen der Quoten für die angegeben Merkmale
$maxPerGender = $quotaGender[$gender];
$maxPerAge    = $quotaAge[$ageGroup];
 
// Quotenstopp
if (($casesGender >= $maxPerGender) || (casesAge >= $maxPerAge)) {
  redirect('https://www.panelanbieter.de/?xyz=quotaABCDEF&uid=%reference%');
}
put('SD01_01', $gender);
put('SD02_01', $ageGroup);
redirect('https://www.panelanbieter.de/?xyz=completeDEFGHI&uid=%reference%');

1 Answer

0 votes
by SoSci Survey (301k points)

Wo muss ich den PHP-Code dafür platzieren?

Frühestens auf der Seite, welche auf jene Seite folgt, wo Alter und Geschlecht abgefragt werden.

Und wie mache ich das genau?

Sieht doch schonmal ganz gut aus :)

Sie können mittels debug() prüfen, was der Quotencheck liefert:

$casesAge = statistic('count', 'SD02_02', $ageGroup);
debug($casesAge);

Dafür müssen Sie natürlich den Fragebogen im Debug-Modus starten. Über die Seiten-Navigation oben können Sie dort auch schnell "vollständige" Datensätze zum Testen erzeugen.

by s191869 (110 points)
Ich habe die Umfrage angepasst, aber die Quotierung funktioniert nicht. Wo liegt mein Fehler?
Aufbau des Fragebogens:
- Seite 1: Willkommen, nur Text
- Seite 2: Frage nach Geschlecht und Alter
- Seite 3: Frage nach Sprache und folgender PHP-Code

$quotaGender = [
  1 => 3,  // 3 Frauen (Code 1)
  2 => 3   // 3 Männer (Code 2)
];

$quotaAge = [
  2 => 2,  // 2 Personen in Altersgruppe 2 (18-30 Jahre)
  3 => 2,  // 2 Personen in Altersgruppe 3 (31-45 Jahre)
  4 => 2   // 2 Personen in Altersgruppe 4 (älter als 45 Jahre)
  ];

// Geschlecht & Alter wird direkt ausgelesen
$gender = value('SD01');
$age = value('SD02');

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesGender = statistic('count', 'SD01_01', $gender);
$casesAge    = statistic('count', 'SD02_02', $age);

// Screenout
if (!array_key_exists($gender, $quotaGender) || !array_key_exists($age, $quotaAge)) {
  text('screenout');  // Verabschiedung anzeigen
  buttonHide();  // Weiter-Knopf ausblenden
  pageStop();  // Falls unter dem Filter noch Inhalte auf der Seite folgen
}

// Auslesen der Quoten für die angegeben Merkmale
$maxPerGender = $quotaGender[$gender];
$maxPerAge = $quotaAge[$age];
 
// Quotenstopp
if (($casesGender >= $maxPerGender) || ($casesAge >= $maxPerAge)){
  redirect('https://www.soscisurvey.de/eye-tracking-studie/?act=DzofJnLbFfRNTOw3gAhvJT9K');
}
by SoSci Survey (301k points)
Was wird im Debug-Modus denn in der Debug-Information angezeigt? Insbesondere, wenn Sie folgende Zeilen ergänzen:

$gender = value('SD01');
$age = value('SD02');
// Neue Zeilen
debug($casesGender);
debug($casesAge);

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

...