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

+1 vote

Ich versuche Screenout und Quotenstops für Alter und Geschlecht zu implementieren und bin hierbei nach den Schritten der Hilfeseite vorgegangen,

Das Problem ist, dass ich in der Vorschau und beim Pretest auch auf die jewieligen redirect Links (sowohl Screenout als auch Quotenstop beim separaten Test) geschickt werde, wenn ich eigentlich gültige Antworten eingebe, z. B. eine der zwei zur Verfügung stehenden Kategorien beim Geschlecht oder ein Alter von 25.

Die unten aufgeführten Codes stehen auf der jeweils nachfolgenden Seite der Variablen, bzw. das letzte Stück steht über dem Complete Link auf der vorletzten Seite.

Vielen Dank schonmal!

*Edit: Der Vollständigkeit halber: Ich habe die internen Variablen im Fragenkatalog angelegt, die dann auf der vorletzen Seite die Werte über "put()" bekommen.

Code fürs Alter:

   //Quoten und Screenout
    $quotaAge = [
      2 => 225,  
      3 => 210,  
      4 => 200,   
      5 => 365  
    ];
    
    // Alter
    $age = value('SG01');
    if ($age < 18) {
      $ageGroup = 1;
    } elseif ($age <= 29) {
      $ageGroup = 2;
    } elseif ($age <= 39) {
      $ageGroup = 3;
    } elseif ($age <= 49) {
      $ageGroup = 4;
    } elseif ($age <= 65) {
      $ageGroup = 5;
    } else {
      $ageGroup = 6;
    }
    
    
    //Screenout
    if (!array_key_exists($ageGroup, $quotaAge)) {
      redirect('Panelanbieter.de&return_tic=%panelID');
    }
    
    // Abruf der vorliegenden Fälle für diese Merkmalsausprägung
    $casesAge    = statistic('count', 'SO02_01', $ageGroup);
    
    
    // Auslesen der Quoten für die angegeben Merkmale
    $maxPerAge    = $quotaAge[$ageGroup];
    
    // Quotenstopp
    if (($casesAge >= $maxPerAge)) {
      redirect('Panelanbieter.de&return_tic=%panelID%');
    }

Code fürs Geschlecht:

//Quoten
$quotaGender = [
  1 => 500,  
  2 => 500   
];

// Geschlecht 
$gender = value('SG02');

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesGender = statistic('count', 'SO02_02', $gender);

  
// Auslesen der Quoten für die angegeben Merkmale
$maxPerGender = $quotaGender[$gender];
 
// Quotenstopp
if (($casesGender >= $maxPerGender)) {
  redirect('Panelanbieter.de&return_tic=%panelID%');
}

Vorletzte Seite/Complete Redirect

$gender = value('SG02');

$age = value('SG01');
if ($age < 18) {
  $ageGroup = 1;
} elseif ($age <= 29) {
  $ageGroup = 2;
} elseif ($age <= 39) {
  $ageGroup = 3;
} elseif ($age <= 49) {
  $ageGroup = 4;
} elseif ($age <= 65) {
  $ageGroup = 5;
} else {
  $ageGroup = 6;
}


put('SO02_01', $ageGroup);
put('SO02_02', $gender);

// Complete Redirect
redirect('Panelanbieter.de&return_tic=%panelID%');
in SoSci Survey (dt.) by s182140 (130 points)
edited by s182140

1 Answer

0 votes
 
Best answer

Um das Problem aufzudecken, ersetzen Sie Sie das redirect() bitte temporär durch ein html(). So können wir erkennen, welcher Filter fälschlicherweise greift:

if (!array_key_exists($ageGroup, $quotaAge)) {
  redirect('Panelanbieter.de&return_tic=%panelID');
}

würden sie also wie folgt ändern:

if (!array_key_exists($ageGroup, $quotaAge)) {
  // redirect('Panelanbieter.de&return_tic=%panelID');
  html('<p>Filter 1</p>');
}

Starten Sie den Fragebogen weiterhin mit dem gelben Pfeil im Debug-Modus. In der Debug-Information rechts oben sollten dann Ergebnisse von statistic() stehen. Außerdem weitere wichtige Infos. Poste Sie die Debug-Information hier.

Last but not least liefert debug() weitere Details. Wenn also der erste Filter das Problem ist...

if (!array_key_exists($ageGroup, $quotaAge)) {
  // redirect('Panelanbieter.de&return_tic=%panelID');
  html('<p>Filter 1</p>');
  debug($ageGroup);
  debug($quotaAge);
}
by SoSci Survey (223k points)
selected by s182140
Ich habe meinen Fehler bemerkt - ich hatte die Variablennamen falsch angegeben, was mir der Debug Modus nicht angezeigt hatte, da sofort der falsche redirect kam.

Durch das ersetzen mit html() hat der Debug Modus mir die Fehlermeldung angezeigt.

Vielen Dank für Ihre schnelle Hilfe und entschuldigen Sie die Umstände!
...