Der PHP-Code ist nun auf Seite 12.
Auf Seite 07 wird die Ziel-Auswahl getroffen.
Ich habe noch das "free" Argument ergänzt, leider ändert das aber auch nichts.
Ich hatte auch schon probiert, danach zu filtern, ob die freien Textvariablen beantwortet wurden oder leer sind, aber auch dann werde ich immer über die Seiten "Kategorie1" "Kategorie2" und "Kategorie3" geführt, egal was ich ankreuze.
Was ich bisher herausgefunden habe: Wenn ich vorher dbset und dbget nutze, dann scheint das zu verhindern, dass die Variablen aus der Auswahlseite 07 später auf Seite 12 richtig verarbeitet werden können.
Ziehe ich testweise den Code aus Seite 12 vor, so funktioniert er zumindest teilweise. Wenn ich nur Beispiel-OPtionen wähle, springe ich über die Kategorie-Seiten hinweg, wie gewollt.
Wenn ich jedoch in der erweiterten Auswahl einmal eine Textoption wähle und dann wieder abwähle (also letztendlich doch drei Beispieloptionen wähle), so werde ich trotzdem über die Kategorien geschickt.
Es scheint alles irgendwie zusammenzuhängen. Ich denke über eine weniger elegante, aber einfachere Methode nach, meine Auswahlfrage zu gestalten, mit der ich anschließend dann besser Filtern kann. Die erweiterte Auswahl plus Platzhalter (mit db) machen alles recht komplex, denke ich.


Folgendes sind meine (bisher gut funktionierenden) dbset und dbget Codes, falls es weiterhilft:
DBSET
$key = caseSerial();
// 1. Liste der Oberkategorien
$oberkategorien = array(1, 5, 9, 13, 17, 21, 25);
// 2. Alle Roh-Auswahlen aus T102 holen
$auswahl_raw = getItems('T102', '==', 2);
// 3. Nur Unteroptionen behalten (Filter)
$auswahl = array();
foreach ($auswahl_raw as $code) {
if (!in_array($code, $oberkategorien)) {
$auswahl[] = $code;
}
}
// 5. Ziel 1
$ziel1 = getItemtext('T102', $auswahl[0]);
// Offene Eingaben ersetzen
if ($auswahl[0] == 26) $ziel1 = value('T103_01', 'free');
if ($auswahl[0] == 27) $ziel1 = value('T103_02', 'free');
if ($auswahl[0] == 28) $ziel1 = value('T103_03', 'free');
// Für spätere Fragebögen speichern
dbSet('user_ziel1', $ziel1);
// 6. Ziel 2
$ziel2 = getItemtext('T102', $auswahl1);
if ($auswahl1 == 26) $ziel2 = value('T103_01', 'free');
if ($auswahl1 == 27) $ziel2 = value('T103_02', 'free');
if ($auswahl1 == 28) $ziel2 = value('T103_03', 'free');
dbSet('user_ziel2', $ziel2);
// 7. Ziel 3
$ziel3 = getItemtext('T102', $auswahl2);
if ($auswahl2 == 26) $ziel3 = value('T103_01', 'free');
if ($auswahl2 == 27) $ziel3 = value('T103_02', 'free');
if ($auswahl2 == 28) $ziel3 = value('T103_03', 'free');
dbSet('user_ziel3', $ziel3);
DBGET
$key = caseSerial();
$ziel1 = dbGet('user_ziel1');
$ziel2 = dbGet('user_ziel2');
$ziel3 = dbGet('user_ziel3');
replace('%ZIEL1%', $ziel1);
replace('%ZIEL2%', $ziel2);
replace('%ZIEL3%', $ziel3);