Hallo liebes Soscisurvey-team,
für eine Umfrage mit Quotierung für einige Merkmale habe ich versucht zwei interne Variablen anzulegen (SC03 und SC04), damit diese die gewählten Antwortoptionen zählen. Zu Beginn des Fragebogens auf Seite 3 scheint dies soweit auch zu funktionieren, wenn ich die Debug-Info korrekt verstehe.
PHP-Code Seite 3:
$gender = value('DE02');
$HO_frequency = value('SC01');
$work_hours = value('SC02');
// Das Alter umkodieren
$age = value('DE01_01');
if ($age >= 18 && $age <= 65) {
$ageGroup = 1;
} else {
$ageGroup = 2;
html('<p>Redirect ausgelöst</p>');
pageStop();
}
// Definition der Antworten und der counts für SC01
$HO_frequency_counts = [
1 => 0, // Nie
2 => 0, // Seltener als einmal alle 14 Tage
3 => 0, // Mindestens einmal alle 14 Tage
-9 => 0 // Nicht beantwortet
];
// Überprüfen und Zählen der Antworten für SC01 (Screening_HO_FREQ)
if (in_array($HO_frequency, [1, 2, 3, -9])) {
$HO_frequency_counts[$HO_frequency]++;
}
// Debugging: Display the counts after incrementing
foreach ($HO_frequency_counts as $key => $count) {
html('<p>SC01 Count for option ' . $key . ': ' . $count . '</p>');
}
// Speichern der counts in internen Variablen
put('SC04_02', $HO_frequency_counts[1]); // Nie
put('SC04_03', $HO_frequency_counts[2]); // Seltener als einmal alle 14 Tage
put('SC04_04', $HO_frequency_counts[3]); // Mindestens einmal alle 14 Tage
// Überprüfen und Weiterleitung basierend auf den Bedingungen für SC01
if ($HO_frequency_counts[1] >= 200) {
html('<p>Redirect ausgelöst für Option 1</p>');
pageStop();
}
if ($HO_frequency_counts[3] >= 800) {
html('<p>Redirect ausgelöst für Option 3</p>');
pageStop();
}
// Definition der Antworten und der counts für DE02
$gender_counts = [
1 => 0, // Weiblich
2 => 0, // Männlich
3 => 0, // Divers
4 => 0, // Möchte ich nicht angeben
5 => 0, // Andere Angabe
-9 => 0 // Nicht beantwortet
];
// Überprüfen und Zählen der Antworten für DE02 (Geschlecht)
if (in_array($gender, [1, 2, 3, 4, 5, -9])) {
$gender_counts[$gender]++;
}
// Debugging: Counts anzeigen nach incrementing
foreach ($gender_counts as $key => $count) {
html('<p>DE02 Count for option ' . $key . ': ' . $count . '</p>');
}
// Speichern der counts in internen Variablen
put('SC03_03', $gender_counts[1]); // Weiblich
put('SC03_04', $gender_counts[2]); // Männlich
put('SC03_05', $gender_counts[3]); // Divers
put('SC03_06', $gender_counts[4]); // Möchte ich nicht angeben
put('SC03_07', $gender_counts[5]); // Andere Angabe
// Überprüfen und Weiterleitung basierend auf den Bedingungen für Geschlecht
$quotaGender = [
1 => 468, // 468 weiblich (Code 1)
2 => 532 // 532 männlich (Code 2)
];
$gender_count = statistic('count', 'SC03_03', $gender); // Anzahl der Fälle für Geschlecht
if (array_key_exists($gender, $quotaGender) && $gender_count >= $quotaGender[$gender]) {
html('<p>Redirect ausgelöst</p>');
pageStop();
}
// Weiterleitung für Personen, die Option 1 bei Frage SC02 gewählt haben
if ($work_hours == 1) {
html('<p>Redirect ausgelöst</p>');
pageStop();
}
Hier dazu die Debug-Info von Seite 3:
[Verarbeitung] Lese Antworten von Seite 2
[Information] Antwort auf DE01_01 = 22
[Information] Antwort auf DE02 = 1
[Information] Keine Antwort für DE02_05
[Information] Antwort auf SC01 = 3
[Information] Antwort auf SC02 = 2
[Information] Fragen bisher zu 100% vollständig beantwortet
[Verarbeitung] Erstelle Seite 3 in Fragebogen Name_Survey
[Information] value("DE02") = 1
[Information] value("SC01") = 3
[Information] value("SC02") = 2
[Information] value("DE01_01") = 22
[Information] Die interne Variable SC04_02 wird mit dem Wert 0 belegt.
[Information] Die interne Variable SC04_03 wird mit dem Wert 0 belegt.
[Information] Die interne Variable SC04_04 wird mit dem Wert 1 belegt.
[Information] Die interne Variable SC03_03 wird mit dem Wert 1 belegt.
[Information] Die interne Variable SC03_04 wird mit dem Wert 0 belegt.
[Information] Die interne Variable SC03_05 wird mit dem Wert 0 belegt.
[Information] Die interne Variable SC03_06 wird mit dem Wert 0 belegt.
[Information] Die interne Variable SC03_07 wird mit dem Wert 0 belegt.
[Inhalt] Erstelle Frage DE13
[Inhalt] Erstelle Frage DE03
[Inhalt] Erstelle Frage DE04
[Inhalt] Erstelle Frage DE05
Soweit scheint die Debug-Info zu den gewählten Antworten zu passen, denke ich?
Am Ende des Fragebogens habe ich folgenden Code stehen:
$gender = value('DE02');
$HO_frequency = value('SC01');
$work_hours = value('SC02');
// Das Alter wird umkodiert
$age = value('DE01_01');
if ($age >= 18 && $age <= 65) {
$ageGroup = 1;
} else {
$ageGroup = 2;
}
// Anzahl der Fälle für Geschlecht und Häufigkeit von HO abrufen
$gender_count_weiblich = statistic('count', 'SC03_03', 1); // Anzahl der Fälle für weiblich
$gender_count_männlich = statistic('count', 'SC03_04', 2); // Anzahl der Fälle für männlich
$gender_count_divers = statistic('count', 'SC03_05', 3); // Anzahl der Fälle für divers
$gender_count_möchte_nicht_angeben = statistic('count', 'SC03_06', 4); // Anzahl der Fälle für möchte nicht angeben
$gender_count_andere_angabe = statistic('count', 'SC03_07', 5); // Anzahl der Fälle für andere Angabe
$HO_frequency_count_never = statistic('count', 'SC04_02', 1); // Anzahl der Fälle für nie
$HO_frequency_count_seldom = statistic('count', 'SC04_03', 2); // Anzahl der Fälle für seltener als einmal alle 14 Tage
$HO_frequency_count_often = statistic('count', 'SC04_04', 3); // Anzahl der Fälle für mindestens einmal alle 14 Tage
// Debug
html('<p>Debug: DE02 Value: ' . $gender . '</p>');
html('<p>Debug: SC01 Value: ' . $HO_frequency . '</p>');
// Debug - counts anzeigen
html('<p>Debug: Gender Value: ' . $gender . '</p>');
html('<p>Debug: HO Frequency Value: ' . $HO_frequency . '</p>');
html('<p>Debug: SC03_03 Value: ' . value('SC03_03') . '</p>');
html('<p>Debug: SC04_02 Value: ' . value('SC04_02') . '</p>');
html('<p>Anzahl der Fälle für weiblich: ' . $gender_count_weiblich . '</p>');
html('<p>Anzahl der Fälle für männlich: ' . $gender_count_männlich . '</p>');
html('<p>Anzahl der Fälle für divers: ' . $gender_count_divers . '</p>');
html('<p>Anzahl der Fälle für möchte nicht angeben: ' . $gender_count_möchte_nicht_angeben . '</p>');
html('<p>Anzahl der Fälle für andere Angabe: ' . $gender_count_andere_angabe . '</p>');
html('<p>Anzahl der Fälle für nie: ' . $HO_frequency_count_never . '</p>');
html('<p>Anzahl der Fälle für seltener als einmal alle 14 Tage: ' . $HO_frequency_count_seldom . '</p>');
html('<p>Anzahl der Fälle für mindestens einmal alle 14 Tage: ' . $HO_frequency_count_often . '</p>');
// Complete-Redirect
// redirect('https://www.panelanbieter.de/?xyz=completeDEFGHI&uid=%reference%');
Hier zeigt mir SoScisurvey dann folgende Debug-Info an:
[Information] value("DE02") = 1
[Information] value("SC01") = 3
[Information] value("SC02") = 2
[Information] value("DE01_01") = 22
[Information] value("SC03_03") = 1
[Information] value("SC04_02") = 0
[Inhalt] Erstelle Frage MC01
Es scheint also, als wären die Infos nicht korrekt auf den internen Variablen gespeichert bzw. nicht korrekt wieder abgerufen worden?
Über Hilfe hierzu wäre ich sehr danbkar!
Viele Grüße