0 votes
in SoSci Survey (dt.) by s203992 (130 points)
closed by SoSci Survey

Hallo,

ich würde gerne einmal die Antwort aus einer Auswahlfrage und die Antworten aus einer Mehrfachauswahl in einer Folgefrage übernehmen.

Die Antworten aus der Mehrfachauswahl konnten problemlos übernommen werden, jedoch funktioniert das Übernehmen der Antworten aus der Auswahlfrage nicht. Bei beiden Fragen sind auch jeweils 3 offene Nennungen möglich (nach dem Schema "Sonstiges: ___"), dafür sind auch die Platzhalter gedacht.

Mein Code sieht momentan so aus:

// Antworten aus Auswahl
$main = value('DR03', 'free');
registerVariable('main');

// Antworten aus Mehrfachauswahl
$other = getItems('DR08', '==', 2);
registerVariable('other');

// alle Antworten zusammenfügen
$all = array_merge($main, $other);

replace('%main1%', 'DR03', 'response'); 
replace('%main2%', 'DR03', 'response'); 
replace('%main3%', 'DR03', 'response'); 

replace('%other1%', 'DR08_17a', 'response'); 
replace('%other2%', 'DR08_18a', 'response'); 
replace('%other3%', 'DR08_19a', 'response'); 

question('GD01', $all);

Ich wäre über jede Hilfe/Lösungsvorschlag super dankbar! :)

closed with the note: Es liegen keine weiteren Informationen zu dem Problem vor, wahrscheinlich wurde es bereits anhand der Kommentare gelöst?
by SoSci Survey (331k points)
Ich kann nicht ganz nachvollziehen, was Sie mit dem Code bis array_merge() bezwecken?

>  jedoch funktioniert das Übernehmen der Antworten aus der Auswahlfrage nicht.

Das ist die DR03? Sie verwenden da in der Mitte Ihres Codes dreimal replace() für dieselbe Variable. Eines davon reicht. Und: Was zeigt denn die Debug-Information an?
by s203992 (130 points)
Vielen Dank für die schnelle Antwort!

Mit den ersten zwei Codeabschnitten sollen die Antworten gespeichert werden, einmal in main und einmal in other. Array_merge soll dann alle Antworten von beiden Fragen in eine Variable packen um die dann in der Folgefrage anzeigen zu lassen.

Folgender Fehler wird angezeigt, und es werden alle Optionen in der Frage aufgelistet nicht nur die, die vorher ausgewählt wurden:

There is an error in the PHP code:

Questionnaire Error: array_merge(): Expected parameter 1 to be an array, string given
line: 14


Wenn ich nur einmal replace benutzte für die Auswahlfrage (DR03) kommt folgende Meldung:

For the placeholder %main2% neither an input field by prepare_input() has been created nor any content by using replace().

For the placeholder %main3% neither an input field by prepare_input() has been created nor any content by using replace().
by SoSci Survey (331k points)
> Array_merge soll dann alle Antworten von beiden Fragen in eine Variable packen um die dann in der Folgefrage anzeigen zu lassen.

Aber mit der Variable $all machen Sie doch gar nichts mehr. Der Code würde demnach genauso ohne den ersten Teil funktionieren.

> array_merge(): Expected parameter 1 to be an array, string given
line: 14

Falls Sie den Teil behalten wollten, müssten Sie das $mail einfach noch in eckige Klammern schreiben.

> For the placeholder %main2% neither an input field by prepare_input() has been created nor any content by using replace().

Das liegt daran, weil Sie ja die die Auswahl nur eine Antwort haben - demnach auch nur einen Platzhalter und keine drei.
by s203992 (130 points)
> Aber mit der Variable $all machen Sie doch gar nichts mehr. Der Code würde demnach genauso ohne den ersten Teil funktionieren.

$all wir benutzt um die Folgefrage mit den ausgewählten Items der vorherigen Fragen anzuzeigen. Ganz unten im Code:

question('GD01', $all);

>  Falls Sie den Teil behalten wollten, müssten Sie das $mail einfach noch in eckige Klammern schreiben.

Das funktioniert leider trotzdem nicht. Es werden nur die Antworten aus der Mehrfachauswahl übernommen (DR08)

> Das liegt daran, weil Sie ja die die Auswahl nur eine Antwort haben - demnach auch nur einen Platzhalter und keine drei.

Dann wird folgende Meldung angezeigt:
For the question GD01 no item with the ID 0 has been found.
by SoSci Survey (331k points)
> $all wir benutzt um die Folgefrage mit den ausgewählten Items der vorherigen Fragen anzuzeigen.

Wie gemein, diese Zeile war hinter dem Scrollbalken verschwunden :)

Damit das funktioniert müssen Sie allerdings sicherstellen, dass die Items in DR03 und DR08 unterschiedliche Nummern haben!

> Das funktioniert leider trotzdem nicht. Es werden nur die Antworten aus der Mehrfachauswahl übernommen

Eventuell wegen der nicht-unterschiedlichen Nummern?! Oder wiederholen sich die Items aus DR03 in DR08 ohnehin? Lassen Sie sich auf alle Fälle mal die Variablen anzeigen:

debug($main);
debug($other);
debug($all);

> For the question GD01 no item with the ID 0 has been found.

Dafür dürfte das "free" in der ersten Zeile verantwortlich sein. Lassen Sie dies bitte mal weg:

$main = value('DR03');

Wenn da ein "Sonstiges" ausgewählt wird, brauchen Sie ja dennoch die Item-Kennung für Ihre Itemliste $all.

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

...