0 votes
in SoSci Survey (dt.) by s209536 (130 points)
edited by s209536

Ich möchte eine getrennte Quotierung nach Alter und Geschlecht vornehmen. Während die einzelne Quotierung nach Geschlecht funktioniert, klappt es nicht beides gleichzeitig abzufragen.
Beim debuggen wird angegeben es läge an den Zeilen

$maxPerGender = $quotaGender[$currentGender];
$maxPerAge = $quotaAge[$ageGroup];

Der ganze Code lautet

$quotaGender = [
1 => 500, // weiblich
2 => 500, // männlich
3 => 10, // divers
4 => 10, // anderes
5 =>10 // keine Angabe
];
$quotaAge = [
2 => 300, // Altersgruppe 18-29
3 => 300, // Altersgruppe 30-39
4 => 200, // Altersgruppe 40-49
5 => 200, // Altersgruppe 50-59
6 => 120 // Altersgruppe 60-69
];

$currentGender = value('DE02');
$currentAge = value('DE01');
if ($currentAge < 18) {
  $ageGroup = 1;
} elseif ($acurrentAge <= 30) {
  $ageGroup = 2;
} elseif ($currentAge <= 40) {
  $ageGroup = 3;
} elseif ($currentAge <= 50) {
 $ageGroup = 4;
} elseif ($currentAge <= 60) {
  $ageGroup = 5;
} else {
  $ageGroup = 6;
}

$casesGender = statistic('count', 'DE02', $currentGender);
$casesAge = statistic('count', 'DE01', $ageGroup);


$maxPerGender = $quotaGender[$currentGender];
$maxPerAge = $quotaAge[$ageGroup];


if ($casesGender >= $maxPerGender)|| ($casesAge >= $maxPerAge)) 
{
redirect('https://umfragekunde/%panelID%/finish/quota_full');
}

Vielen Dank im Voraus

by SoSci Survey (302k points)
Bitte formatieren Sie Ihre Code doch mal, indem Sie ihn markieren und dann auf den Knopf {} klicken. Dann sehe ich auch, ob die zwei Schrägstriche in der letzten Zeile gewollt sind, wo Sie die Filterung nach Alter auskommentiert haben.

Und bitte erklären Sie auch kurz, was bereits funktioniert und was nicht.

2 Answers

0 votes
by s209536 (130 points)

Die beiden // Striche waren noch Überbleibsel vom Auskommentieren und sind im eigentlichen Code nicht enthalten und wurden entfernt.

Der Code nur für Gender alleine funktioniert (wenn Age auskommentiert ist).
Laut Debugging funktioniert alles bis
$maxPerGender = $quotaGender[$currentGender];
$maxPerAge = $quotaAge[$ageGroup];
hier wird gesagt, dass es sich undefined indexe handelt

0 votes
by SoSci Survey (302k points)
$maxPerGender = $quotaGender[$currentGender];
$maxPerAge = $quotaAge[$ageGroup];

hier wird gesagt, dass es sich undefined indexe handelt

Das bedeutet, dass in einem der beiden Arrays (also z.B. $quotaAge) kein Eintrag passend zu $ageGroup existiert. Was der EIntrag ist, kontrollieren Sie am besten mit folgender Zeile:

debug($ageGroup);

Ich würde auf die 1 tippen, für die keine Quote definiert wurde. Ich empfehle folgende Änderung:

if (array_key_exists($ageGroup, $quotaAge)) {
    $maxPerAge = $quotaAge[$ageGroup];
} else {
    $maxPerAge = 0;
}

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

...