0 votes
ago in SoSci Survey (dt.) by s208825 (135 points)
closed ago by s208825

Hallo liebes SoSci Team!
Ich habe folgendes Problem:
Ich möchte nach einer erweiterten Auswahl, in der teilweise auch freie Textfelder platziert sind, einen Filter einbauen. Dieser soll in Abhängigkeit davon, ob das entsprechende offene Textfeld ausgewählt wurde oder nicht, auf die Seiten "Kategorie1", "Kategorie2", "Kategorie3", oder zum nächsten Abschnitt "Dauer" führen.
Die Namen der Variablen habe ich geprüft, diese sollten korrekt sein (Siehe Bild).

Der Code funktioniert bisher nicht, er führt einfach immer für alle drei in der Mehrfachauswahl gewählten Variablen über die Seiten "Kategorie1", "Kategorie2" und "Kategorie3". Also auch dann, wenn nicht die freien Textfelder (x26, x27, x28) gewählt wurden.

Hinweis: Die Kategorie-Beispiele in der Mehrfachauswahl sind noch nicht final eingetragen, bisher gab es in der Funktionalität aber keine Probleme deswegen.

Über eine Antwort würde ich mich sehr freuen!

Mit freundlichen Grüßen,
Anni

closed with the note: Andere Lösung gefunden
ago by SoSci Survey (361k points)
Auf welcher Seite fragen Sie die T102 denn ab und was zeigt die Debug-Information, wenn Sie die Option 26 ankreuzen und dann auf "Weiter" klicken?
ago by s208825 (135 points)

Danke für die schnelle Rückmeldung!
Ich frage T102 auf Seite 07 ab. (Im Vergleich zum Screenshot von gestern wurden vorher noch Seiten verändert, die aber nichts mit dieser Frage zu tun haben)

Unten ist die Debug-Info, nachdem ich zwei andere Beispiele und dann Option 26 wähle und etwas eintrage.

Was ich dazu bereits festgestellt habe:
Ich musste, um die Ziele mit dbset und dbget zu speichern, die Oberkategorien erst herausfiltern, da diese trotz der Option "nicht wählbar" immer als Antwort gewertet werden.
Hier ist das zu sehen, da zB auch Option 25 (Oberkategorie "Eigene Ziele" als angekreuzt (=2) angezeigt wird. Eventuell spielt das auch hier eine Rolle?

Hier nochmal vollständig:

[Information] Interview Nummer 111 wird fortgesetzt
[Information] Der Fragebogen Fragebogen_MP1 im Projekt Zielstudie wird verwendet
[Information] Die Verweildauer auf Seite 7 war 31 Sekunden
[Verarbeitung] Lese Antworten von Seite 7
[Information] Antwort auf T102x01 = 1
[Information] Antwort auf T102x02 = 1
[Information] Antwort auf T102x03 = 1
[Information] Antwort auf T102x04 = 1
[Information] Antwort auf T102x05 = 1
[Information] Antwort auf T102x06 = 1
[Information] Antwort auf T102x07 = 1
[Information] Antwort auf T102x08 = 1
[Information] Antwort auf T102x09 = 1
[Information] Antwort auf T102x10 = 1
[Information] Antwort auf T102x11 = 1
[Information] Antwort auf T102x12 = 1
[Information] Antwort auf T102x13 = 1
[Information] Antwort auf T102x14 = 1
[Information] Antwort auf T102x15 = 1
[Information] Antwort auf T102x16 = 1
[Information] Antwort auf T102x17 = 2
[Information] Antwort auf T102x18 = 2
[Information] Antwort auf T102x19 = 1
[Information] Antwort auf T102x20 = 1
[Information] Antwort auf T102x21 = 2
[Information] Antwort auf T102x22 = 1
[Information] Antwort auf T102x23 = 2
[Information] Antwort auf T102x24 = 1
[Information] Antwort auf T102x25 = 2
[Information] Antwort auf T102x26 = 2
[Information] Antwort auf T102x27 = 1
[Information] Antwort auf T102x28 = 1
[Information] Antwort auf T102_CN = 3
[Information] Antwort auf T103_01 = Mein eigenes Ziel lautet ....
[Information] Keine Antwort für T103_02
[Information] Keine Antwort für T103_03
[Information] Fragen bisher zu 50% vollständig beantwortet
[Verarbeitung] Erstelle Seite 8 in Fragebogen Fragebogen_MP1
[Information] value("T103_01") = "Mein eigenes Ziel lautet ...."
[Information] Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 9
[Verarbeitung] Erstelle Seite 9 in Fragebogen Fragebogen_MP1
[Information] Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 10
[Verarbeitung] Erstelle Seite 10 in Fragebogen Fragebogen_MP1
[Inhalt] Erstelle Frage T105
[Inhalt] Erstelle Frage T104
[Information] Folgende Platzhalter sind vorbereitet:
%ZIEL1% = (Text) Beispiel 1
%ZIEL2% = (Text) Beispiel 2
%ZIEL3% = (Text) Mein eigenes Ziel lautet ....

ago by SoSci Survey (361k points)
Auf welcher Seite ist denn nun die (ehemalige) Seite 10 mit dem PHP-Code? Laut Debug-Information zeigt die aktuelle Seite 10 nun zwei Fragen, beinhaltet aber keinen PHP-Code.
ago by s208825 (135 points)

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);

ago by s208825 (135 points)
Ich habe eine einfachere Lösung statt der erweiterten Auswahl gefunden - und einen weiteren Fehler. :)
Ich habe nie festgelegt, dass nur die offen formulierten Ziele in der Kategorie-Abfrage nach dem Filter abgefragt werden. Ich hatte lediglich dafür gesorgt, dass, wenn irgendeine offene Option gewählt wurde, dann die Kategorien abgefragt werden. Allerdings werden diese ja dann auch für alle Optionen abgefragt. Logisch, ich habe ja auch nichts anderes im PHP festgelegt.
Ich bin absolut kein IT-ler, aber vielleicht hilft das ja zukünftig wem.
Das ursprüngliche Problem kann ich nun aber umgehen, danke für die bisherigen Antworten!

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

...