0 votes
in SoSci Survey (dt.) by s116690 (125 points)
edited by SoSci Survey

Hallo zusammen,

ich verzweifle gerade an folgendem Problem:
Ich habe eine Frage der Kategorie erweiterte Antwort (BO01) mit Mehrfachauswahl
hier habe ich über %input% drei Felder zur offenen Texteingabe angelegt an den Positionen BO01x38, BO01x39, BO01x40

Ich möchte nun, dass wenn ein Text eingegeben wird das Kästchen vorne automatisch ausgewählt wird und die Eingabe als Antwort gezählt wird. Dies ist insofern wichtig, da bei der Mehrfachauswahl nur insgesamt 8 Antworten ausgewählt werden dürfen.

Ich habe die Möglichkeiten mittels html Code gefunden, allerdings mache ich hier wohl noch nicht alles richtig...
https://www.soscisurvey.de/help/doku.php/de:create:inputs-single#optimierung

<script type="text/javascript">
 S2Selection.linkOptionToInput("BO01x38", "ZE01_01");
 S2Selection.linkOptionToInput("BO01x39", "ZE01_02");
 S2Selection.linkOptionToInput("BO01x40", "ZE01_03");
</script>

Diesen html Code habe ich als neue Rubrik -> Text hinzufügen -> html Code angelegt (ZE02) und bei Fragebogen zusammenstellen dieses dann unter die Frage (BO01) auf dies es sich beziehen soll eingefügt.

Kann mir hier jemand helfen, was ich noch falsch mache?

Vielen Dank!

by SoSci Survey (307k points)
Wenn Sie einen Pretest-Link direkt (!) zur betroffenen Seite posten, sollten wir die Frage schnell aufklären können.
by s116690 (125 points)
Das müsste der richtige Link sein, oder? die Frage ist auf Seite2

https://www.soscisurvey.de/bartenderGin/?act=oGXhjMgX8cQPaY5B6E1J7kLD

1 Answer

0 votes
by SoSci Survey (307k points)
selected by s116690
 
Best answer

Soweit ich in der Browserkonsole sehe, haben die Auswahlfelder in der (erweiterten) Mehrfachauswahl einfach nur einen Unterstrich als Trennzeichen anstatt dem "x". Also:

<script type="text/javascript">
 S2Selection.linkOptionToInput("BO01_38", "ZE01_01");
 S2Selection.linkOptionToInput("BO01_39", "ZE01_02");
 S2Selection.linkOptionToInput("BO01_40", "ZE01_03");
</script>
by s116690 (125 points)
Vielen vielen Dank!!! Genau das war das Problem! Jetzt funktioniert es :D
by s116690 (125 points)
jetzt hat sich leider ein Folgeproblem ergeben... die ausgewählten Antworten aus BO01 (Mehrfachauswahl) sollen nun im Fragetext der Folgefrage (BO02) mittels Platzhalter (%bot%) auftauchen.
Bisher hab ich dies immer ohne Probleme mit php code hinbekommen aber nun kommt folgender Fehler:

"Variable BO01 is unknown to this project (see listing of variables). Therefore no result can be retrieved."

Diesen php Code habe ich auf Seite 3 vor der Frage BO02 eingefügt:
replace('%bot%', 'BO01', 'response');
by SoSci Survey (307k points)
> Variable BO01 is unknown to this project (see listing of variables).

Naja, Sie haben ja auch keine solche Variable - die Mehrfachauswahl hat mehrere Variablen.

Aber die Funktion value() sollte für eine Mehrfachauswahl eine Komma-Liste liefern:

replace('%bot%', value('BO01', 'label'));

Wenn Sie die offenen Antworten auch noch benötigen, werden Sie ein wenig mehr programmmieren müssen, etwas in dieser Richtung: https://www.soscisurvey.de/help/doku.php/de:create:transfer-responses#mehrere_offene_antworten_uebernehmen ... nur dass Sie ein Array bauen, dieses dann mittels implode() in einen String umwandeln und dieses dann per replace() anzeigen.
by s116690 (125 points)
leider hat es mit value() noch nicht geklappt und es kommt noch der gleiche Fehler...
by SoSci Survey (307k points)
Dann ist diese Komfort-Funktion mit dem automatischen Einsammeln der Antworten bisher wohl nur für die normale Mehrfachauswahl implementiert.

Ind em Fall müssen Sie bitte den Weg über eine FOR-Schleife gehen und alle Optionen einzeln prüfen. getItems() hilft dabei.
by s116690 (125 points)
Danke für den HInweis. Ich komme der Problemlösung nun ein Stück näher. Folgender php Code ergibt keinen fehler mehr, allerdings werden nur die numerischen Item Codes angezeit für den Platzhalter %bot% und nicht die Antwort an sich

$itemlist = getItems('BO01', '==', 2);
replace('%bot%', $itemlist);

wenn ich noch zusätzlich mit getItemtext () arbeite kommt ein eine komplette Fehlermeldung. WIe man mit FOR Schleifen umgeht ist mir bisher nicht bekannt, Könnten SIe mir hier nochmal weiterhelfen?
by SoSci Survey (307k points)
edited by SoSci Survey
Versuchen Sie es mal hiermit:

$names = [];
foreach (getItems('BO01', '==', 2) as $itemID) {
  $names[] = getItemtext('BO01', $itemID);
}
$list = implode(', ', $names);
replace('%bot%', $list);

Die offenen Eingabefelder sind damit allerdings noch nicht erledigt. Dafür muss dann noch eine IF-Konstruktion an die Stelle von  $names[] = ..., die bei den Items IDs mit den Sonstiges-Feldern deren Textinhalt aus den anderen Variablen abruft.
by s116690 (125 points)
Hier kommt leider direkt wieder der Fehler:

Variable BO01 is unknown to this project (see listing of variables). Therefore no result can be retrieved.
by SoSci Survey (307k points)
Es muss natürlich getItemtext() statt getValueText() heißen - ich habe es in meiner Antwort oben geändert.
by s116690 (125 points)
Danke! ich hab die ganze Frage BO01 wieder zurück auf die Kategorie in "Mehrfachauswahl" geändert und schon flutscht wieder alles ganz einfach mit den bekannten Codes... Danke trotzdem für den support!

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

...