Liebes Support-Team,
wir arbeiten mit einem Panelanbieter zusammen, und stratifizieren für die Merkmale Alter, Geschlecht, Bildung und Stadt/Land (hier Residenz genannt).
Für jedes Merkmal haben wir ein Limit definiert, ab dem potentielle Teilnehmende abgewiesen werden sollen, da die Quote erfüllt ist.
Teste ich nun den Fragebogen, werde ich nach der Seite, auf der die Soziodemographie-Fragen sind, redirected, da scheinbar die Quoten erfüllt sind. Da noch niemand an der Befragung teilgenommen hat, kann dies nicht sein.
Jetzt frage ich mich, wo in meiner Syntax der Fehler liegt. Liegt es in irgendeiner Weise an den internen Variablen?
Anbei finden Sie meine Syntax (ich schaffe es leider nicht, sie als Syntax einzufügen...)
Vielen Dank im Voraus!
// 1. Definition der Quoten
$quotaAge = [
1 => 300, // 300 Personen in Altersgruppe 1 (16-29 Jahre)
2 => 240, // 240 Personen in Altersgruppe 2 (30-39 Jahre)
3 => 240, // 240 Personen in Altersgruppe 3 (40-49 Jahre)
4 => 315, // 315 Personen in Altersgruppe 4 (50-59 Jahre)
5 => 390, // 390 Personen in Altersgruppe 5 (60-74 Jahre)
];
$quotaGender = [
1 => 750, // 750 Frauen (Code 1)
2 => 750, // 750 Männer (Code 2)
];
$quotaEducation = [
1 => 495, // 495 Personen in Bildungsgruppe 1 (gering)
2 => 480, // 480 Personen in Bildungsgruppe 2 (mittel)
3 => 525, // 525 Personen in Bildungsgruppe 3 (hoch)
];
$quotaResidence = [
1 => 225, // 225 Unter 5.000 (Code 1)
2 => 375, // 375 Über 5.000 bis 20.000 (Code 2)
3 => 450, // 450 Über 20.000 bis 100.000 (Code 3)
4 => 450, // 450 Über 100.000 (Code 4)
];
// 2. Merkmale auslesen und umkodieren
//Das Alter wird umkodiert
$age = value('SD01');
if($age < 30){
$ageGroup = 1;
}elseif($age < 40){
$ageGroup = 2;
}elseif($age < 50){
$ageGroup = 3;
}elseif($age < 60){
$ageGroup = 4;
}elseif($age < 75){
$ageGroup = 5;
}elseif($age >= 75){
$ageGroup = 6;
}
//Geschlecht wird direkt ausgelesen
$gender = value('SD02');
//Bildung wird umkodiert
$education = value('SD06');
if($education <= 8){
$educationGroup = 1;
}elseif($education = 9){
$educationGroup = 2;
}elseif($education >= 10){
$educationGroup = 3;
}
//Residenz wird direkt ausgelesen
$residence = value('SD03');
// 3. Zählung der vorliegenden Fälle
//Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesAge = statistic('count', 'SD12_01', $ageGroup);
$casesGender = statistic('count', 'SD12_02', $gender);
$casesEducation = statistic('count', 'SD12_03', $educationGroup);
$casesResidence = statistic('count', 'SD12_04', $residence);
//Auslesen der Quoten für die angegebenen Merkmale
$maxPerAge = $quotaAge[$ageGroup];
$maxPerGender = $quotaGender[$gender];
$maxPerEducation = $quotaEducation[$educationGroup];
$maxPerResidence = $quotaResidence[$residence];
//Quotenstopp
if(($casesAge >= $maxPerAge) || ($casesGender >= maxPerGender) || ($casesEducation >= $maxPerEducation) || ($casesResidence >= maxPerResidence)){
redirect('https://survey.maximiles.com/quotasfull?p=84155&m=%reference%');
}
auf vorletzter Seite:
//4. Kopieren der Quotenmerkmale
//Das Alter wird umkodiert
$age = value('SD01');
if($age < 30){
$ageGroup = 1;
}elseif($age < 40){
$ageGroup = 2;
}elseif($age < 50){
$ageGroup = 3;
}elseif($age < 60){
$ageGroup = 4;
}elseif($age < 75){
$ageGroup = 5;
}elseif($age >= 75){
$ageGroup = 6;
}
//Geschlecht wird direkt ausgelesen
$gender = value('SD02');
//Bildung wird umkodiert
$education = value('SD06');
if($education <= 8){
$educationGroup = 1;
}elseif($education = 9){
$educationGroup = 2;
}elseif($education >= 10){
$educationGroup = 3;
}
//Residenz wird direkt ausgelesen
$residence = value('SD03');
put('SD12_01', $ageGroup);
put('SD12_02', $gender);
put('SD12_03', $educationGroup);
put('SD12_04', $residence);
redirect('https://survey.maximiles.com/complete?p=84155_e968bd93&m=%reference%');