Hallo,
ich habe versucht die Programmierung nach der Anleitung zu gestalten. Wir haben eine verbundene Quote (Altersgruppen und Geschlecht), eine unverbundene (Bundesländer) und zusätzlich über eine Quote noch Plätze für Geschlecht divers reserviert, welches wir aufgrund fehlender statistischer Daten nicht in die anderen Quoten aufnehmen können.
Der Screenout-Link sollte nur aktiviert werden, wenn eine Vpn unter 18 Jahre ist.
Dennoch wird er bei jedem Test aktiviert. Ich kann nicht nachvollziehen warum. Hier ist mein Code. Ich würde mich über Lösungstipps freuen.
// Array Altersgruppen & Geschlecht (1w, 2m)
$quotaDemGroup = [
// Personen pro Geschlecht für die Altersgruppe 1 (18 - 27 Jahre)
'1-1' => 63,
'1-2' => 68,
// Personen pro Geschlecht für die Altersgruppe 2 (28 - 37 Jahre)
'2-1' => 76,
'2-2' => 81,
// Personen pro Geschlecht für die Altersgruppe 3 (38 - 47 Jahre)
'3-1' => 73,
'3-2' => 74,
// Personen pro Geschlecht für die Altersgruppe 4 (48 - 57 Jahre)
'4-1' => 90,
'4-2' => 90,
// Personen pro Geschlecht für die Altersgruppe 5 (58 - 67 Jahre)
'5-1' => 87,
'5-2' => 84,
// Personen pro Geschlecht für die Altersgruppe 6 (ab 68 Jahren)
'6-1' => 127,
'6-2' => 97,
// für Personen mit Geschlecht divers sind 15 Plätze aus dem Oversampling
'0' => 15
];
//Array Bundesländer
$quotaState = [
'1' => 134, //Baden-Württemberg
'2' => 160, //Bayern
'3' => 45, //Berlin
'4' => 31, //Brandenburg
'5' => 8, //Bremen
'6' => 22, //Hamburg
'7' => 76, //Hessen
'8' => 20, //Mecklenburg-Vorpommern
'9' => 97, //Niedersachsen
'10' => 217, //Nordrhein-Westfalen
'11' => 50, //Rheinland-Pfalz
'12' => 12, //Saarland
'13' => 49, //Sachsen
'14' => 27, //Sachsen-Anhalt
'15' => 36, //Schlesweig Holstein
'16' => 26 //Thüringen
];
#################################################
// Auslesen der Werte
// Geschlecht wird direkt ausgelesen: 1w, 2m, 3d
$gender = value('SD02');
// Das Alter wird ausgelesen und umkodiert in Altersgruppen
$age = value('SD01');
if ($age < 18) {
$ageGroup = 0;
} elseif ($age >= 18 && $age <= 27) {
$ageGroup = 1;
} elseif ($age <= 37) {
$ageGroup = 2;
} elseif ($age <= 47) {
$ageGroup = 3;
} elseif ($age <= 57) {
$ageGroup = 4;
} elseif ($age <= 67) {
$ageGroup = 5;
} else {
$ageGroup = 6;
}
// Kombination aus Altersgruppe und Geschlecht (Bsp: 3 und 2 wird zu '3-2')
$demGroup = $ageGroup.'-'.$gender;
// Gender divers bekommt eigene demGroup Kennzeichnung
if ($gender = 3) {
$demGroup = '0';
}
// Bundesländer werden ausgelesen
$state = value('SD23');
#################################################
// Screenout für U18
if ($ageGroup == 0) {
redirect('Panellink1');
}
#################################################
// Abruf der vorliegenden Fälle demografische Gruppe und Bundesländer
$casesDemGroup = statistic('count', 'IV01_01', $demGroup);
$casesState = statistic('count', 'IV01_02', $state);
// Auslesen der Quote für die demografische Gruppe und Bundesländer
$maxPerDemGroup = $quotaDemGroup[$demGroup];
$maxPerState = $quotaState[$state];
// Quotenstopp
if (($casesGroup >= $maxPerDemGroup || $casesState >= $maxPerState )) {
redirect('Panellink2');
}