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

0 votes

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);
ago in SoSci Survey (dt.) by u091501 (200 points)
edited ago by SoSci Survey
Ergänzen Sie bitte unter

$maxPerGroup = $limits[$demID];

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

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

Please log in or register to answer this question.

...