0 votes
in SoSci Survey (dt.) by s098453 (245 points)

Hallo liebes Sosci-Survey-Team,

ich möchte die Gabor-Granger-Methode in Sosci Survey umsetzen und habe dabei die folgende Ausgangssituation bzw. Problemstellung:

  • Für 5 Preisniveaus (500, 400, 300, 200, 100 €) soll jeweils erfragt werden, ob ein Produkt gekauft werden würde (dichotome ja/nein-Frage)

  • die Zuteilung der 5 Preisniveaus / Fragen erfolgt zufällig, d. h. im ersten Schritt erhält jeder Teilnehmer die Kaufbereitschaftsfrage zu einem zufälligen Preis (z. B. „Würden Sie das Produkt für 300 € kaufen?“)

  • wird diese erste Frage mit „ja“ beantwortet, soll aus allen höheren Preisen erneut ein Preis zufällig ausgewählt und die entsprechende Frage zugeteilt werden (im Beispiel also Kaufbereitschaft zufällig für 400 oder 500 € abfragen)

  • wird die Frage mit „nein“ beantwortet, soll aus allen niedrigeren Preisen erneut ein Preis zufällig ausgewählt und die entsprechendeFrage zugeteilt werden (im Beispiel also Kaufbereitschaft zufällig für 200 oder 100 € abfragen)

  • ist beim höchsten Preis eine Kaufbereitschaft vorhanden bzw. beim niedrigsten Preis keine Kaufbereitschaft vorhanden, wird die Befragung beendet (d.h., wenn z. B. ein Befragter zufällig direkt am Anfang die Preisabfrage mit 500 € bekommt und diese mit „ja“ beantwortet, ist die Befragung für ihn an dieser Stelle bereits beendet). Die Befragten können also je nach Zufallsauswahl und Antwortverhalten maximal 5 und mindestens 1 Frage gestellt bekommen.

Die erste Fragenzuteilung habe ich mittels Zufallsgenerator umgesetzt. Allerdings stehe ich jetzt etwas auf dem Schlauch, wie ich am geschicktesten die weitere Fragenzuteilung gestalte.

Gibt es hier eine Möglichkeit, den Zufallsgenerator mit Bedingungen zu verknüpfen (im Sinne von: Wenn Preis 300 akzeptiert, dann ziehe aus Zufallsgenerator einen neuen Preis > 300, wenn Preis von 300 nicht akzeptiert, dann ziehe aus Zufallsgenerator einen neuen Preis < 300). Oder muss hier ggf. mit mehreren Zufallsgeneratoren gearbeitet werden, die für jede der Möglichkeiten die entsprechende Auswahl an Preisen enthält? Sind Zufallsgeneratoren hier überhaupt der beste Weg?

Vielen Dank für die Hilfe im Voraus!

4 Answers

0 votes
by SoSci Survey (327k points)
selected by s098453
 
Best answer

Gibt es hier eine Möglichkeit, den Zufallsgenerator mit Bedingungen zu verknüpfen

Im Prinzip ja. Durch die Fragen wird der "Korridor" jedes mal enger, oder? Wenn man slo bei 200 "ja" und bei "500" nein gesagt hat, kommen noch die Werte 300/400 in Betracht. Richtig?

Wenn man es über Zufallsgeneratoren realisieren will, bräuchte man also alle möglichen Bereiche. Ich käme da auf 10 Zufallsgeneratoren:

4,5
3,4
3,4,5
2,3
2,3,4
2,3,4,5
1,2
1,2,3
1,2,3,4
1,2,3,4,5

Zudem gäbe es noch 5 Bedingungen, die eindeutig wären. Zwischen der 3 und der 5 kann nur noch die 4 liegen.

Ehrlich gesagt, bin ich nicht ganz sicher, ob diese Datenstruktur dann für die Auswertung optimal ist. Und die Filterführung, um aus 4 ja/nein-Fragen plus den da jeweils gezogenen Werten den nächsten Zufallsgenerator zu bestimmen, ist auch ein bisschen aufwändig.

Ich würde im ersten Schritt mal folgendes empfehlen: Erstellen Sie noch 5 interne Variablen, wo Sie die jeweils im Zufallsgenerator gezogene Zahl hineinschreiben. Also in die erste die Zahl aus der ersten Runde u.s.w. Das vereinfacht den Filter schonmal stark.

Und dann überlegen Sie sich eine Tabelle wo die bisherigen Ziehungen als Code abgelegt sind und welcher Zufallsgenerator dann als nächstes kommt, also z.B. (J=ja, N=nein, Zahl = angebotene Option)

1J => Generator RG02 (2-5)
1N => Ende
2J => Generator RG03 (3-5)
2N => fix 1
3J => u.s.w.
...
1J3J => Generator RG04 (4-5)
...
5N4N3N2N => fix 1

Alle möglchen Wegen fest zu definieren ist nicht die effizienteste Lösung, aber damit müssen Sie nicht immer den Korridor via FOR-Schleife eingrenzen. Und ich glaube, es sind gar nicht sooo viele mögliche Kombinationen.

Wenn Sie das haben, müssen Sie aus den internen Variablen und den Auswahlentscheidungen nur noch einen String bauen, z.B. in Runde 3

$hash = value('IV01_01').value('AF01').value('IV01_02').value('AF02');

Gut, zugegeben, da steht nun 1/2 statt J/N in den Codes. Aber das lässt sich ja oben noch leicht ersetzen. Und mit diesem Code und dem Array von oben können Sie dann direkt den nächsten Zufallsgenerator auswählen, daraus ziehen und den Wert in die interne Variable speichern.

by s098453 (245 points)
Vielen Dank für die rasche Antwort! Ich werde es dann mal auf diesem Weg probieren :)
by SoSci Survey (327k points)
Es ist nicht ganz trivial ... schreiben Sie bei Zeiten gerne wieder, wie weit Sie gekommen sind und wo es möglicherweise noch hakt.
by s098453 (245 points)
Gerne, vielen Dank!
0 votes
by s098453 (245 points)
edited by s098453

Hallo zurück,

ich habe mich jetzt zunächst an die Auswahlentscheidungen gemacht und diese (nicht sehr hübsch) skizziert:

Daraus habe ich nun die Tabelle mit allen möglichen Auswahlentscheidungen gebildet:

1J => RG05 (2-5)
1N => Ende
2J => RG08 (3-5)
2N => fix 1
3J => RG10 (4-5)
3N => RG04 (1-2)
4J => fix 5
4N => RG03 (1-3)
5J => Ende
5N => RG02 (1-4)

1J2J => RG08 (3-5)
1J2N => Ende
1J3J => RG10 (4-5)
1J3N => fix 2
1J4J => fix 5
1J4N => RG07 (2-3)
1J5J => Ende
1J5N => RG06 (2-4)
2J3J => RG10 (4-5)
2J3N => Ende
2J4J => fix 5
2J4N => fix 3
2J5J => Ende
2J5N => RG09 (3-4)
3J4J => fix 5
3J4N => Ende
3J5J => Ende
3J5N => fix 4
3N1J => fix 2
3N1N => Ende
3N2J => Ende
3N2N => fix 1
4N1J => RG07 (2-3)
4N1N => Ende
4N2J => fix 3
4N2N => fix 1
4N3J => Ende
4N3N => RG04 (1-2)
5N1J => RG06 (2-4)
5N1N => Ende
5N2J => RG09 (3-4)
5N2N => fix 1
5N3J => fix 4
5N3N => RG04 (1-2)
5N4J => Ende
5N4N => RG03 (1-3)

1J2J3J => RG10 (4-5)
1J2J3N => Ende
1J2J4J => fix 5
1J2J4N => fix 3
1J2J5J => Ende
1J2J5N => RG09 (3-4)
1J3J4J => fix 5
1J3J4N => Ende
1J3J5J => Ende
1J3J5N => fix 4
1J4N2J => fix 3
1J4N2N => Ende
1J4N3J => Ende
1J4N3N => fix 2
1J5N2J => RG09 (3-4)
1J5N2N => Ende
1J5N3J => fix 4
1J5N3N => fix 2
1J5N4J => Ende
1J5N4N => RG07 (2-3)
2J3J4J => fix 5
2J3J4N => Ende
2J3J5J => Ende
2J3J5N => fix 4
2J5N3J => fix 4
2J5N3N => Ende
2J5N4J => Ende
2J5N4N => fix 3
4N1J2J => fix 3
4N1J2N => Ende
4N1J3J => Ende
4N1J3N => fix 2
4N3N1J => fix 2
4N3N1N => Ende
4N3N2J => Ende
4N3N2N => fix 1
5N1J2J => RG09 (3-4)
5N1J2N => Ende
5N1J3J => fix 4
5N1J3N => fix 2
5N1J4J => Ende
5N1J4N => RG07 (2-3)
5N2J3J => fix 4
5N2J3N => Ende
5N2J4J => Ende
5N2J4N => fix 3
5N3N1J => fix 2
5N3N1N => Ende
5N3N2J => Ende
5N3N2N => fix 1
5N4N1J => RG07 (2-3)
5N4N1N => Ende
5N4N2J => fix 3
5N4N2N => fix 1
5N4N3J => Ende
5N4N3N => RG04 (1-2)

1J2J3J4J => fix 5
1J2J3J4N => Ende
1J2J3J5J => Ende
1J2J3J5N => fix 4
1J2J5N3J => fix 4
1J2J5N3N => Ende
1J2J5N4J => Ende
1J2J5N4N => fix 3
1J5N2J3J => fix 4
1J5N2J3N => Ende
1J5N2J4J => Ende
1J5N2J4N => fix 3
1J5N4N2J => fix 3
1J5N4N2N => Ende
1J5N4N3J => Ende
1J5N4N3N => fix 2
5N1J2J3J => fix 4
5N1J2J3N => Ende
5N1J2J4J => Ende
5N1J2J4N => fix 3
5N1J4N2J => fix 3
5N1J4N2N => Ende
5N1J4N3J => Ende
5N1J4N3N => fix 2
5N4N1J2J => fix 3
5N4N1J2N => Ende
5N4N1J3J => Ende
5N4N1J3N => fix 2
5N4N3N1J => fix 2
5N4N3N1N => Ende
5N4N3N2J => Ende
5N4N3N2N => fix 1

Die 10 Zufallsgeneratoren und eine interne Variable, in die das Ergebnis des ersten Zufallsgenerators mittels put() gespeichert wird, habe ich bereits angelegt.

Da meine PHP- bzw. Programmierkenntnisse doch eher marginal sind, bin ich leider etwas unschlüssig bzgl. des weiteren Vorgehens zur Bildung der Strings und zur Platzierung des Codes im Fragebogen.

value('IV01_01') ergibt sich aus dem Wert der internen Variable des ersten Zufallsgenerators, also z. B. "2" (für 200 €), oder? Und der Wert der Auswahlentscheidung (J/N bzw. 1/2) wäre ja dann erst aus der durch den Zufallsgenerator gezogenen Frage zu ermitteln?

Grundsätzlich ist mir nicht ganz klar, wie ich nun am besten systematisch bei der Bildung der Strings vorgehe, wo ich diese im Fragebogen platzieren muss bzw. wie ich mittels der Strings und der Tabelle dann die nächsten Zufallsgeneratoren auswähle.

Könnten Sie mir hierfür das Vorgehen nochmals erläutern?
Vielen Dank!

by SoSci Survey (327k points)
Hui, das sind doch ein paar mehr mögliche Kombinationen als ich intuitiv erwartet hätte.

> Da meine PHP- bzw. Programmierkenntnisse doch eher marginal sind, bin ich leider etwas unschlüssig bzgl. des weiteren Vorgehens zur Bildung der Strings und zur Platzierung des Codes im Fragebogen.

Speichern Sie diese Liste mal als Array, also...

$use = [
  '1J' => 'RG05',
  '1N' => false,
  '2J' => 'RG08',
  '2N' => 1,
  '3J' => 'RG10',
  ...
  '1J2N' => false,
  ...
  '5N4N3N2N' => 1
];
registerVariable($use);

Sie sehen, dass ich "Ende" durch ein "false kodiert habe, feste Werte durch eine Zahl und die Zufallsgeneratoren eben durch deren Kennung. Ob man nun einmal die komplette Liste definiert oder auf jeder Seite den Teil der Tabelle, wie viele Entscheidungen man bis dahin hatte, das ... vermutlich ist zweiteres sinnvoller :)

Dann mal dazu, wie man den richtigen Code findet. Ich hatte oben ja schon ein Beispiel notiert:

$hash = value('IV01_01').value('AF01').value('IV01_02').value('AF02');

Wenn man die Kodierung aus Auswahlfragen AF01 und AF02 noch von 1/2 auf J/N ändern will, dann braucht man noch ein IF-ELSE in Klammern. Sieht schlimm aus, ist aber eigentlich ganz einfach: (condition : then : else)

$hash =
  value('IV01_01').
  ((value('AF01') == 1) ? 'J' : 'N').
  value('IV01_02').
  ((value('AF02') == 1) ? 'J' : 'N');

Mit einem debug($hash) kann man sich anzeigen lassen, ob da einer der Codes oben herauskommt. Das wäre jetzt der Code für Seite 3, denn da haben wir vorher 2 Zufallsgeneratoren und Auswahlfragen gehabt.

Über dem Code hätten wir noch die Liste definiert und außerdem haben wir interne Variablen IV01_01 bis IV01_05 angelegt. Also müssen wir jetzt in der Liste nachsehen:

$choice = $use[$hash];

In der Variable $choice haben wir jetzt entweder "false" oder eine Zahl oder eine Kennung.

if ($choice === false) {
  goToPage('xyz');  // Springen zu dem Teil nach der Auswahl
} elseif (is_int($choice)) {
  put('IV01_03', $choice);  // Fest Zahl, nehmen wir so
} else {
  question($choice);  // Zufallsgenerator einbinden/ziehen lassen
  put('IV01_03', value($choice));  // Und die Ziehung speichern
}

So, jetzt haben wir in den Wert, den wir anbieten wollen.  Den kann man jetzt per Filter oder Array und Platzhalter hübsch in die dritte Auswahlfrage einbinden.

$code = value('IV01_03');
$anzeige = [
  1 => '100 €',
  2 => '200 €',
  ...
  5 => '500 €'
];
replace('%betrag%', $anzeige[$code]);

Viel Spaß beim Ausprobieren :)

Ich denke, wir müssen dazu mal eine kleine Anleitung schreiben, wenn es bei Ihnen funktioniert. Sie haben nicht zufällig Lust, Ihr Ergebnis kurz als Text mit Code zu dokumentieren?
by s098453 (245 points)
Vielen Dank für die Erläuterung! Dann versuche ich das mal umzusetzen. Ich melde mich gerne wieder mit einem kleinen Ergebnisbericht (oder ggf. mit der ein oder anderen Nachfrage... ;))
0 votes
by s098453 (245 points)

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 {
}
0 votes
by s098453 (245 points)

weiter mit Seite 6 (Zeichenbeschränkung):

 // String mit bisheriger Auswahlentscheidung erzeugen  
    $hash4 = 
    value('IV01_01').
    ((value('AF01') == 1) ? 'J' : 'N').
    value('IV01_02').
    ((value('AF02') == 1) ? 'J' : 'N').
    value('IV01_03').
    ((value('AF03') == 1) ? 'J' : 'N').
    value('IV01_04').
    ((value('AF04') == 1) ? 'J' : 'N'); // Antwortcodes 1/2 durch J/N ersetzen (für Array)
    debug($hash4); // zum Testen
    
    // Mit Hilfe des Strings Wert des Arrays von Seite 1 auslesen und in choice4 speichern
    $choice4 = $use[$hash4];
    debug($choice4); // zum Testen
    
    // Mittels Wert choice4 nächsten Schritt definieren (Sprung, fixe Frage oder Zufallsgenerator)
    if ($choice4 === false) {
      goToPage('end');  // Spring zu Endseite
    } elseif (is_numeric($choice4)) {
      put('IV01_05', $choice4);  // Feste Zahl in interner Variable 5 speichern
    } else {
      question($choice4);  // Zufallsgenerator einbinden/ziehen lassen
      put('IV01_05', value($choice4));  // Und die Ziehung speichern
    }
    
    // Platzhalter Auswahlfrage 5 in Abhängigkeit Wert IV01_05 definieren
    if (value('IV01_05') == 1) {
      replace('%betrag5%', '100 €');
    } elseif (value('IV01_05') == 2) {
      replace('%betrag5%', '200 €');
    } elseif (value('IV01_05') == 3) {
      replace('%betrag5%', '300 €');
    } elseif (value('IV01_05') == 4) {
      replace('%betrag5%', '400 €');
    } elseif (value('IV01_05') == 5) {
      replace('%betrag5%', '500 €');
    } else {
    }

Ich habe jetzt schon einige Tests durchgeführt und soweit hat alles gepasst. Ich werde morgen nochmal ausführlich testen, falls ich dann noch einen Bug finden sollte, melde ich mich.

Nochmals vielen Dank für Ihre schnelle Hilfe und die gute Anleitung zur Umsetzung! :)

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

...