0 votes
in SoSci Survey (dt.) by s091501 (200 points)
closed by SoSci Survey

Liebes Support Team ,

ich möchte eine Quotierung nach Alter und Geschlecht programmieren. Allerdings funktioniert der Quoten-Stopp einfach nicht. Die Einteilung der Gruppen nach Alter/Geschlecht sehe ich im Datensatz, das funktioniert. Aber wenn ich teste und über die Maximalanzahl in einer Gruppe komme, wird die Befragung nicht durch einen Redirect abgebrochen.

Könnten Sie mir hier weiterhelfen?

Herzlichen Dank!

Hier mein Code:

//Wenn 175 erreicht, dann alle weiteren raus
$completed = statistic('count', 'QU02_01', 'c');
if($completed >= 175) {
  redirect('https://mingle.respondi.com/s/1269790/ospe.php3?c_0002=2&return_tic=%tic%');    
}

//Screenout für alle Nicht-Erwerbstätigen
$arbeit = value('DG01');
if ($arbeit==2) {
  redirect('https://mingle.respondi.com/s/1269790/ospe.php3?c_0002=0&return_tic=%tic%');
}

//Screenout für alle Diversen
$gender = value('DG02');
if ($gender==3) {
  redirect('https://mingle.respondi.com/s/1269790/ospe.php3?c_0002=0&return_tic=%tic%');
}

//Screenout für alle jünger als 15
$alter = value('DG03_01');
if ($alter<15) {
  redirect('https://mingle.respondi.com/s/1269790/ospe.php3?c_0002=0&return_tic=%tic%');
}



// Merkmale auslesen und umcodieren
$gender = value('DG02');
$age = value('DG03_01');
if ($age <= 19) {
  $ageGroup = 1;
} elseif ($age <= 24) {
  $ageGroup = 2;
} elseif ($age <= 29) {
  $ageGroup = 3;
} elseif ($age <= 34) {
  $ageGroup = 4;
} elseif ($age <= 39) {
  $ageGroup = 5;
} elseif ($age <= 44) {
  $ageGroup = 6;
} elseif ($age <= 49) {
  $ageGroup = 7;
} elseif ($age <= 54) {
  $ageGroup = 8;
} elseif ($age <= 59) {
  $ageGroup = 9;
} elseif ($age <= 64) {
  $ageGroup = 10;
} else {
  $ageGroup = 11;
}

// Kennung für die demografische Zelle erstellen
$demID = 'r'.$gender.'-'.$ageGroup;

// Obergrenzen definieren
// 1 -> männlich
// 2 -> weiblich
$limits = array(
  'r1-1' => 3,
  'r1-2' => 7,
  'r1-3' => 9,
  'r1-4' => 10,
  'r1-5' => 10,
  'r1-6' => 10,
  'r1-7' => 10,
  'r1-8' => 13,
  'r1-9' => 12,
  'r1-10' => 8,
  'r1-11' => 3,
  'r2-1' => 2,
  'r2-2' => 6,
  'r2-3' => 8,
  'r2-4' => 8,
  'r2-5' => 9,
  'r2-6' => 9,
  'r2-7' => 10,
  'r2-8' => 12,
  'r2-9' => 11,
  'r2-10' => 7,
  'r2-11' => 2,
);

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$cases = statistic('count', 'QU01_01', $demID);

// Screenout weil sie in keine Quote passen
if (!array_key_exists($demID, $limits)) {
  redirect('https://mingle.respondi.com/s/1269790/ospe.php3?c_0002=0&return_tic=%tic%');
}
 
// Auslesen der Quote für die demografische Gruppe
$maxPerGroup = $limits[$demID];
 
// Quotenstopp
if ($cases >= $maxPerGroup) {
  redirect('https://mingle.respondi.com/s/1269790/ospe.php3?c_0002=2&return_tic=%tic%');
}

// Speichern der Gruppenzugehörigkeit in der internen Variable QU01_01
put('QU01_01', $demID);
closed with the note: Es liegen keine weiteren Informationen zu dem Problem vor, welche für eine hilfreiche Antwort erforderlich wären.
by SoSci Survey (302k points)
Ergänzen Sie bitte unter

$maxPerGroup = $limits[$demID];

folgende Zeilen und berichten Sie, was die Debug-Information anzeigt.

debug($demID);
debug($maxPerGroup);
debug($cases);

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

...