Liebes Support-Team,
wir haben leider erneute Probleme mit einer Redirect-Syntax (QuotaFull). Wir arbeiten mit Respondi zusammen und haben für die Merkmale Alter, Geschlecht, Bildung und Wohnort Obergrenzen festgelegt. Nun werden alle Personen abgelehnt und redirected, nur weil eine Quote (eine Bildungskategorie) voll ist. Die Personen werden auch abgelehnt, wenn sie zu einer andere Bildungskategorie gehören. Ich kann mir vorstellen, dass es an dem if-Befehl beim Redirect-Befehl liegt, finde aber leider den Fehler nicht.
Wir wären sehr dankbar für eine Lösung, vor allem, da die Befragung schon online ist und sehr viele potentielle Teilnehmende einfach abgewiesen werden.
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)
6 => 300, // 300 Personen in Altersgruppe 6 (ab 75 Jahre), nur damit sie nicht rausfallen
];
$quotaGender = [
1 => 750, // 750 Frauen (Code 1)
2 => 750, // 750 Männer (Code 2)
3 => 200, // 200 in divers (Code 3), nur damit sie nicht rausfallen
];
$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_01');
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%');
}