Ich habe den Fragebogen jetzt gemäß Ihrer sehr hilfreichen Erläuterungen umgesetzt und es scheint alles zu funktionieren :) Lediglich bei der Funktion is_int() bei der if-Konstruktion zur Bestimmung des nächsten Schrittes gab es eine Fehlermeldung, dass diese nicht zur Nutzung im Fragebogen freigegeben ist (ich habe stattdessen dann is_numeric() verwendet). Und bei der Tabelle für den Array hatte ich bei den "fixen Zahlen" noch nicht den jeweils nächsten Auswahlschritt definiert (z .B. nach 2N => 1 noch 2N1J => false und 2N1N => false). Das habe ich noch nachgeholt, da der Code sonst natürlich nicht funktioniert hat.
Hier eine Kurzbeschreibung zum Vorgehen für den Fall mit 5 Preisstufen inkl. dem verwendeten Code:
Vorarbeiten:
- Tabelle mit allen möglichen Auswahlschritten definieren und daraus das Array mit den Zuordnungen erstellen
- 5 dichotome Auswahlfragen mit Platzhalter für den Betrag/Preis (jeweils auf Seite 2-6 eine Auswahlfrage unter dem php-Code platzieren), eine interne Variable mit 5 Ausprägungen (IV01_01 bis IV01_05) und alle benötigten Zufallsgeneratoren erstellen (hier 10)
Fragebogen zusammenstellen:
Seite 1: Zufallsgenerator für erste Runde platzieren und php-Code für das Array eintragen:
$use=[
'1J' => 'RG05',
'1N' => false,
'2J' => 'RG08',
'2N' => 1,
'3J' => 'RG10',
'3N' => 'RG04',
'4J' => 5,
'4N' => 'RG03',
'5J' => false,
'5N' => 'RG02',
'1J2J' => 'RG08',
'1J2N' => false,
'1J3J' => 'RG10',
'1J3N' => 2,
'1J4J' => 5,
'1J4N' => 'RG07',
'1J5J' => false,
'1J5N' => 'RG06',
'2J3J' => 'RG10',
'2J3N' => false,
'2J4J' => 5,
'2J4N' => 3,
'2J5J' => false,
'2J5N' => 'RG09',
'2N1J' => false,
'2N1N' => false,
'3J4J' => 5,
'3J4N' => false,
'3J5J' => false,
'3J5N' => 4,
'3N1J' => 2,
'3N1N' => false,
'3N2J' => false,
'3N2N' => 1,
'4J5J' => false,
'4J5N' => false,
'4N1J' => 'RG07',
'4N1N' => false,
'4N2J' => 3,
'4N2N' => 1,
'4N3J' => false,
'4N3N' => 'RG04',
'5N1J' => 'RG06',
'5N1N' => false,
'5N2J' => 'RG09',
'5N2N' => 1,
'5N3J' => 4,
'5N3N' => 'RG04',
'5N4J' => false,
'5N4N' => 'RG03',
'1J2J3J' => 'RG10',
'1J2J3N' => false,
'1J2J4J' => 5,
'1J2J4N' => 3,
'1J2J5J' => false,
'1J2J5N' => 'RG09',
'1J3J4J' => 5,
'1J3J4N' => false,
'1J3J5J' => false,
'1J3J5N' => 4,
'1J3N2J' => false,
'1J3N2N' => false,
'1J4J5J' => false,
'1J4J5N' => false,
'1J4N2J' => 3,
'1J4N2N' => false,
'1J4N3J' => false,
'1J4N3N' => 2,
'1J5N2J' => 'RG09',
'1J5N2N' => false,
'1J5N3J' => 4,
'1J5N3N' => 2,
'1J5N4J' => false,
'1J5N4N' => 'RG07',
'2J3J4J' => 5,
'2J3J4N' => false,
'2J3J5J' => false,
'2J3J5N' => 4,
'2J4J5J' => false,
'2J4J5N' => false,
'2J4N3J' => false,
'2J4N3N' => false,
'2J5N3J' => 4,
'2J5N3N' => false,
'2J5N4J' => false,
'2J5N4N' => 3,
'3J4J5J' => false,
'3J4J5N' => false,
'3J5N4J' => false,
'3J5N4N' => false,
'3N1J2J' => false,
'3N1J2N' => false,
'3N2N1J' => false,
'3N2N1N' => false,
'4N1J2J' => 3,
'4N1J2N' => false,
'4N1J3J' => false,
'4N1J3N' => 2,
'4N2J3J' => false,
'4N2J3N' => false,
'4N2N1J' => false,
'4N2N1N' => false,
'4N3N1J' => 2,
'4N3N1N' => false,
'4N3N2J' => false,
'4N3N2N' => 1,
'5N1J2J' => 'RG09',
'5N1J2N' => false,
'5N1J3J' => 4,
'5N1J3N' => 2,
'5N1J4J' => false,
'5N1J4N' => 'RG07',
'5N2J3J' => 4,
'5N2J3N' => false,
'5N2J4J' => false,
'5N2J4N' => 3,
'5N2N1J' => false,
'5N2N1N' => false,
'5N3J4J' => false,
'5N3J4N' => false,
'5N3N1J' => 2,
'5N3N1N' => false,
'5N3N2J' => false,
'5N3N2N' => 1,
'5N4N1J' => 'RG07',
'5N4N1N' => false,
'5N4N2J' => 3,
'5N4N2N' => 1,
'5N4N3J' => false,
'5N4N3N' => 'RG04',
'1J2J3J4J' => 5,
'1J2J3J4N' => false,
'1J2J3J5J' => false,
'1J2J3J5N' => 4,
'1J2J4J5J' => false,
'1J2J4J5N' => false,
'1J2J4N3J' => false,
'1J2J4N3N' => false,
'1J2J5N3J' => 4,
'1J2J5N3N' => false,
'1J2J5N4J' => false,
'1J2J5N4N' => 3,
'1J3J4J5J' => false,
'1J3J4J5N' => false,
'1J3J5N4J' => false,
'1J3J5N4N' => false,
'1J4N2J3J' => false,
'1J4N2J3N' => false,
'1J4N3N2J' => false,
'1J4N3N2N' => false,
'1J5N2J3J' => 4,
'1J5N2J3N' => false,
'1J5N2J4J' => false,
'1J5N2J4N' => 3,
'1J5N3J4J' => false,
'1J5N3J4N' => false,
'1J5N3N2J' => false,
'1J5N3N2N' => false,
'1J5N4N2J' => 3,
'1J5N4N2N' => false,
'1J5N4N3J' => false,
'1J5N4N3N' => 2,
'2J3J4J5J' => false,
'2J3J4J5N' => false,
'2J3J5N4J' => false,
'2J3J5N4N' => false,
'2J5N3J4J' => false,
'2J5N3J4N' => false,
'2J5N4N3J' => false,
'2J5N4N3N' => false,
'4N1J2J3J' => false,
'4N1J2J3N' => false,
'4N1J3N2J' => false,
'4N1J3N2N' => false,
'4N3N1J2J' => false,
'4N3N1J2N' => false,
'4N3N2N1J' => false,
'4N3N2N1N' => false,
'5N1J2J3J' => 4,
'5N1J2J3N' => false,
'5N1J2J4J' => false,
'5N1J2J4N' => 3,
'5N1J3J4J' => false,
'5N1J3J4N' => false,
'5N1J3N2J' => false,
'5N1J3N2N' => false,
'5N1J4N2J' => 3,
'5N1J4N2N' => false,
'5N1J4N3J' => false,
'5N1J4N3N' => 2,
'5N2J3J4J' => false,
'5N2J3J4N' => false,
'5N2J4N3J' => false,
'5N2J4N3N' => false,
'5N3N1J2J' => false,
'5N3N1J2N' => false,
'5N3N2N1J' => false,
'5N3N2N1N' => false,
'5N4N1J2J' => 3,
'5N4N1J2N' => false,
'5N4N1J3J' => false,
'5N4N1J3N' => 2,
'5N4N2J3J' => false,
'5N4N2J3N' => false,
'5N4N2N1J' => false,
'5N4N2N1N' => false,
'5N4N3N1J' => 2,
'5N4N3N1N' => false,
'5N4N3N2J' => false,
'5N4N3N2N' => 1
];
registerVariable($use);
Seite 2:
put('IV01_01', value('RG01')); // interne Variable mit Wert der 1. Ziehung befüllen
// Platzhalter Auswahlfrage 1 in Abhängigkeit Wert IV01_01 definieren
if (value('IV01_01') == 1) {
replace('%betrag1%', '100 €');
} elseif (value('IV01_01') == 2) {
replace('%betrag1%', '200 €');
} elseif (value('IV01_01') == 3) {
replace('%betrag1%', '300 €');
} elseif (value('IV01_01') == 4) {
replace('%betrag1%', '400 €');
} elseif (value('IV01_01') == 5) {
replace('%betrag1%', '500 €');
} else {
} //
Seite 3:
// String mit bisheriger Auswahlentscheidung erzeugen
$hash =
value('IV01_01').
((value('AF01') == 1) ? 'J' : 'N'); // Antwortcodes 1/2 durch J/N ersetzen (für Array)
debug($hash); // zum Testen
// Mit Hilfe des Strings Wert des Arrays von Seite 1 auslesen und in choice speichern
$choice = $use[$hash];
debug($choice); // zum Testen
// Mittels Wert choice nächsten Schritt definieren (Sprung, fixe Frage oder Zufallsgenerator)
if ($choice === false) {
goToPage('end'); // Spring zu Endseite
} elseif (is_numeric($choice)) {
put('IV01_02', $choice); // Feste Zahl in interner Variable 2 speichern
} else {
question($choice); // Zufallsgenerator einbinden/ziehen lassen
put('IV01_02', value($choice)); // Und die Ziehung speichern
}
// Platzhalter Auswahlfrage 2 in Abhängigkeit Wert IV01_02 definieren
if (value('IV01_02') == 1) {
replace('%betrag2%', '100 €');
} elseif (value('IV01_02') == 2) {
replace('%betrag2%', '200 €');
} elseif (value('IV01_02') == 3) {
replace('%betrag2%', '300 €');
} elseif (value('IV01_02') == 4) {
replace('%betrag2%', '400 €');
} elseif (value('IV01_02') == 5) {
replace('%betrag2%', '500 €');
} else {
}
Seite 4:
// String mit bisheriger Auswahlentscheidung erzeugen
$hash2 =
value('IV01_01').
((value('AF01') == 1) ? 'J' : 'N').
value('IV01_02').
((value('AF02') == 1) ? 'J' : 'N'); // Antwortcodes 1/2 durch J/N ersetzen (für Array)
debug($hash2); // zum Testen
// Mit Hilfe des Strings Wert des Arrays von Seite 1 auslesen und in choice2 speichern
$choice2 = $use[$hash2];
debug($choice2); // zum Testen
// Mittels Wert choice2 nächsten Schritt definieren (Sprung, fixe Frage oder Zufallsgenerator)
if ($choice2 === false) {
goToPage('end'); // Spring zu Endseite
} elseif (is_numeric($choice2)) {
put('IV01_03', $choice2); // Feste Zahl in interner Variable 3 speichern
} else {
question($choice2); // Zufallsgenerator einbinden/ziehen lassen
put('IV01_03', value($choice2)); // Und die Ziehung speichern
}
// Platzhalter Auswahlfrage 3 in Abhängigkeit Wert IV01_03 definieren
if (value('IV01_03') == 1) {
replace('%betrag3%', '100 €');
} elseif (value('IV01_03') == 2) {
replace('%betrag3%', '200 €');
} elseif (value('IV01_03') == 3) {
replace('%betrag3%', '300 €');
} elseif (value('IV01_03') == 4) {
replace('%betrag3%', '400 €');
} elseif (value('IV01_03') == 5) {
replace('%betrag3%', '500 €');
} else {
}
Seite 5:
// String mit bisheriger Auswahlentscheidung erzeugen
$hash3 =
value('IV01_01').
((value('AF01') == 1) ? 'J' : 'N').
value('IV01_02').
((value('AF02') == 1) ? 'J' : 'N').
value('IV01_03').
((value('AF03') == 1) ? 'J' : 'N'); // Antwortcodes 1/2 durch J/N ersetzen (für Array)
debug($hash3); // zum Testen
// Mit Hilfe des Strings Wert des Arrays von Seite 1 auslesen und in choice3 speichern
$choice3 = $use[$hash3];
debug($choice3); // zum Testen
// Mittels Wert choice3 nächsten Schritt definieren (Sprung, fixe Frage oder Zufallsgenerator)
if ($choice3 === false) {
goToPage('end'); // Spring zu Endseite
} elseif (is_numeric($choice3)) {
put('IV01_04', $choice3); // Feste Zahl in interner Variable 4 speichern
} else {
question($choice3); // Zufallsgenerator einbinden/ziehen lassen
put('IV01_04', value($choice3)); // Und die Ziehung speichern
}
// Platzhalter Auswahlfrage 4 in Abhängigkeit Wert IV01_04 definieren
if (value('IV01_04') == 1) {
replace('%betrag4%', '100 €');
} elseif (value('IV01_04') == 2) {
replace('%betrag4%', '200 €');
} elseif (value('IV01_04') == 3) {
replace('%betrag4%', '300 €');
} elseif (value('IV01_04') == 4) {
replace('%betrag4%', '400 €');
} elseif (value('IV01_04') == 5) {
replace('%betrag4%', '500 €');
} else {
}