Sehr geehrtes SoSci Survey Support-Team,
ich habe ein Problem bei der Implementierung einer Quotierung in meinem Fragebogen, das ich trotz intensiver Tests und Überarbeitungen des Codes nicht lösen konnte.
Mein Vorgehen:
1. Ziel:
Eine maximale Teilnehmerzahl von 750 pro Land festlegen, basierend auf der Antwort in der Länderfrage (A007).
Wenn die maximale Teilnehmerzahl eines Landes erreicht ist, sollen weitere Teilnehmer dieses Landes zur Abschlussseite QuotaEnd geleitet werden.
2.Implementierung:
Die Länderfrage A007 (mit den Codes 1–5 für Deutschland, Frankreich, Spanien, Italien und Großbritannien) wird auf Seite 2 gestellt.
Zählvariablen (A011_01 bis A015_01) wurden als interne Variablen angelegt, um die Teilnehmerzahlen für die einzelnen Länder zu erfassen.
Auf Seite 13 (CODES) wird die jeweilige Zählvariable mit put() um 1 erhöht, basierend auf der Antwort in A007.
$country = value('A007');
if ($country == 1) {
put('A011_01', value('A011_01') + 1); // Teilnehmer für Deutschland
} elseif ($country == 2) {
put('A012_01', value('A012_01') + 1); // Teilnehmer für Frankreich
} elseif ($country == 3) {
put('A013_01', value('A013_01') + 1); // Teilnehmer für Spanien
} elseif ($country == 4) {
put('A014_01', value('A014_01') + 1); // Teilnehmer für Italien
} elseif ($country == 5) {
put('A015_01', value('A015_01') + 1); // Teilnehmer für Großbritannien
}
Auf Seite 3 (Quota Check) werden die Zählvariablen geprüft, um Teilnehmer abzulehnen, wenn das Limit erreicht wurde.
$cases_DE = value('A011_01') ?? 0; // Teilnehmer Deutschland
$cases_FR = value('A012_01') ?? 0; // Teilnehmer Frankreich
$cases_ES = value('A013_01') ?? 0; // Teilnehmer Spanien
$cases_IT = value('A014_01') ?? 0; // Teilnehmer Italien
$cases_GB = value('A015_01') ?? 0; // Teilnehmer Großbritannien
if ($country == 1 && $cases_DE >= 750) {
goToPage('QuotaEnd');
}
3. Problem:
Der Fragebogen wird direkt nach der Länderfrage auf Seite 3 abgebrochen, mit dem Hinweis, dass die maximale Teilnehmerzahl für das gewählte Land bereits erreicht sei.
Die Debug-Informationen zeigen, dass die Zählvariablen leer bleiben (z. B. value("A011_01") = "").
Es scheint, als würden die Zählvariablen nicht korrekt initialisiert oder aktualisiert.
4. Testdaten:
Selbst wenn ich künstlich Werte in die Variablen einfüge, beispielsweise durch put('A011_01', 749);, erfolgt die Prüfung auf Seite 3 nicht wie erwartet.
Meine Frage:
Warum wird die Zählvariable nicht korrekt aktualisiert und geprüft?
Gibt es ein Problem mit der Verwendung von put() auf Seite 13, wenn die Prüfung bereits auf Seite 3 erfolgt? Muss ich die Zählvariablen anders initialisieren oder anpassen?
Wie kann ich sicherstellen, dass die Zählung korrekt funktioniert, bevor Teilnehmer abgelehnt werden?
Ich danke Ihnen vielmals für Ihre Unterstützung und freue mich über eine Rückmeldung.
Mit freundlichen Grüßen,