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

Hallo zusammen,

ich erstelle zum ersten Mal einen Quotierungs Code. Leider funktioniert der noch nicht so, wie ich das möchte. Ich quotiere hinsichtlich Alter, Geschlecht und Bildung. Leider werde ich immer redirected, auch wenn die Quotierung noch nicht erreicht ist. Ich habe einen PHP Code benutzt, der auf der dritten Seite integriert ist. Auf der zweiten Seite frage ich die Quotierung ab. Anbei der Code (redirect ist jetzt erstmal google.com, Quotierung immer bei 2 max.)

$quotaAge = [
  2 => 2,  // 2 Personen in Altersgruppe 2 (18-30 Jahre)
  3 => 2,  // 2 Personen in Altersgruppe 3 (31-50 Jahre)
  4 => 2   // 2 Personen in Altersgruppe 4 (51-68 Jahre)
];
$quotaGender = [
  1 => 2,  // 2 Frauen (Code 1)
  2 => 2   // 2 Männer (Code 2)
];
$quotaEducation = [
  1 => 2,  // 2 No high school (Code 1)
  2 => 2,   // 2 High school (Code 2)
  3 => 2,   // 2 Some college, no degree (Code 3)
  4 => 2,   // 2 Bachelor (Code 4)
  5 => 2   // 2 Graduate (Code 5)
];
// Gender
$gender = value('DM02');
// Education
$education = value('DM03');
// Age
$age = value('DM01');
if ($age < 18) {
  $ageGroup = 1;
} elseif ($age <= 30) {
  $ageGroup = 2;
} elseif ($age <= 50) {
  $ageGroup = 3;
} elseif ($age <= 68) {
  $ageGroup = 4;
} else {
  $ageGroup = 5;
}

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesAge    = statistic('count', 'IN01', $ageGroup);
$casesGender = statistic('count', 'IN02', $gender);
$casesEducation = statistic('count', 'IN03', $education);

// Screenout
if (!array_key_exists($ageGroup, $quotaAge) || !array_key_exists($gender, $quotaGender) || !array_key_exists($education, $quotaEducation)) {
  redirect('https://www.google.com');
}

// Auslesen der Quoten für die angegeben Merkmale
$maxPerAge    = $quotaAge[$ageGroup];
$maxPerGender = $quotaGender[$gender];
$maxPerEducation = $quotaEducation[$education];
 
// Quotenstopp
if (($casesAge >= $maxPerAge) || ($casesGender >= $maxPerGender) || ($casesEducation >= $maxPerEducation)) {
  redirect('https://www.google.com');
}

1 Answer

0 votes
by SoSci Survey (308k points)

Ersetzen Sie das redirect() wie folgt, um den Fehler mithilfe der Debug-Information einzugrenzen:

if (!array_key_exists($ageGroup, $quotaAge) || !array_key_exists($gender, $quotaGender) || !array_key_exists($education, $quotaEducation)) {
    // redirect('https://www.google.com');
    html('<p>REDIRECT</p>');
    debug($ageGroup);
    debug($gender);
    debug(education);
    debug($casesAge);
    debug($casesGender);
    debug($casesEducation);
}

Wenn Ihnen die Debug-Information das Problem nicht unmittelbar verrät, posten Sie selbige bitte als Kommentar auf die Antwort.

by s136405 (110 points)
Vielen Dank für die schnelle Unterstützung. Ich habe lediglich falsche Variabelnamen benutzt...Debug Information hilft da natürlich.

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

...