0 votes
in SoSci Survey (dt.) by s071843 (185 points)

Guten Tag,

ich habe mehrere Fragen, bei denen die Befragten nur sie betreffende Variablen aus der Datenbank für Inhalte angezeigt bekommen und dort dann ggf. Text ergänzen können.
Pro Befragtem kann die Anzahl der gezeigten Variablen zwischen 1 und 11 variieren.

Bisher habe ich für diese Frage den Fragentyp "Mehrfachauswahl" genutzt, jedoch sind mir 2 Nachteile aufgefallen:

  1. Die Checkbox links könnte irritieren. Die Befragten sollen hier ja nichts auswählen, sondern lediglich den Text ergänzen, falls nötig.

  2. Es werden immer 11 Felder angezeigt, auch wenn bspw. nur 1 Variable für diesen Befragten angezeigt wird, auch das könnte irritieren (siehe Bild).

Daher meine Fragen:

  1. Gibt es die Möglichkeit, dies ohne Checkbox zu machen? Ich hatte den Typ "offene Nennungen" probiert, bekomme hier jedoch die Fehlermeldung "The variable P126_01a used with the function preset() is invalid in this project."

Der Code sieht aktuell so aus:

$serial = caseSerial();
$data = dbGet($serial);

debug($data);
if ($data[3] == 'TRUE') {
debug($data[2]);
$value = preset('P126_01a', $data[2]);
}

[etc. bis insgesamt alle 11 Variablen abgefragt sind]

if (($data[3] == 'TRUE') || ($data[7] == 'TRUE') || ($data[11] == 'TRUE') || ($data[15] == 'TRUE') || ($data[19] == 'TRUE') || ($data[23] == 'TRUE') || ($data[27] == 'TRUE') || ($data[31] == 'TRUE') || ($data[35] == 'TRUE') || ($data[39] == 'TRUE') || ($data[43] == 'TRUE')){
question('P126'); // earliest results publication
}

  1. Gibt es außerdem die Möglichkeit, nur die Antwortfelder anzuzeigen, für die die Auswahlvariable wahr ist?

Vielen Dank

1 Answer

+1 vote
by SoSci Survey (328k points)

Ich hatte den Typ "offene Nennungen" probiert, bekomme hier jedoch die Fehlermeldung "The variable P126_01a used with the function preset() is invalid in this project."

Ja, ich hätte auch die offenen Nennungen vorgschlagen. Die Variable heißt dann aber nicht P126_01a, sondern (wahrscheinlich) P126x1. Die genauen Variablen-Namen finden Sie in der Variablen-Übersicht oder im Karteireiter "Variablen" in der Frage.

$value = preset('P126x1', $data[2]);
by s071843 (185 points)
Vielen Dank. "P126x01" war die Lösung - die Variablenübersicht hatte ich bisher nicht gefunden, immer nur die Variablen in der Frage gesucht (und bei "offener Nennung" gab es den Punkt nicht).

Haben Sie noch eine Idee für den zweiten Punkt? In meinem Testdatensatz sind von 11 Variablen 5 wahr, im Survey werden diese angezeigt, dazwischen dann leere Felder (entsprechend den "falschen" Variablen in der Datenbank). Schöner wäre es, wenn tatsächlich nur 5 Textfelder angezeigt werden, gibt es dafür eine Möglichkeit?
by SoSci Survey (328k points)
Da sehe ich unterschiedliche Möglichkeiten. Die offenen Nennungen sind ja explizit so ausgelegt, dass man noch mehr eingeben kann. Möchten Sie das? Sonst wäre eine Frage "Texteingabe offen" vermutlich besser geeignet.

Sie könnten dann auch im Fragebogen sammeln, in welchen Eingabefeldern (Items) etwas steht und nur diese anzeigen mittels question().

Oder wenn die Zuordnung egal ist, aber noch Ergänzungen möglich sein sollen, dann könnten Sie erstmal nur die Texte sammeln (als Array) und diese dann in die ersten Felder der offenen Nennungen schreiben.

Mehr dazu gerne in einer neuen Frage :)
by s071843 (185 points)
Zuordnung ist nicht egal und die Felder sind auf jeden Fall dafür gedacht, dass die Befragten eigene Eingaben machen können. Wie könnte in diesem Fall eine Lösung aussehen?
by SoSci Survey (328k points)
> die Felder sind auf jeden Fall dafür gedacht, dass die Befragten eigene Eingaben machen können.

Das verstehe ich jetzt aber so, dass die leeren Felder auch angezeigt werden sollen? Die feste Zuordnung spricht m.E. aber für eine "Texteingabe offen" anstatt für offene Nennungen.
by s071843 (185 points)
Ok, dann habe ich "Zuordnung egal" falsch verstanden.

So lange die Variablen bestehen bleiben (es klang für mich oben so, als ob die in irgendeiner Form zusammengefasst werden sollen), ist das ok. Wie gesagt, leere Felder sollen nicht angezeigt werden, das wäre am besten.
by SoSci Survey (328k points)
In Ordnung. Dann also doch die offenen Nennungen? Sammeln Sie zuerst Ihre Texte:

$texte = [];
if ($data[3] == 'TRUE') {
  $texte[] = $data[2];
}
if ($data[5] == 'TRUE') {
  $texte[] = $data[4];
}
// u.s.w. - gerne auch als Schleife, wenn es mehr als 5 Texte sind.

// Und dann in die offenen Nennungen übernehmen
foreach ($texte as $i => $text) {
  preset(id('P126', $i+1), $text);
}
by s071843 (185 points)
Vielen Dank, funktioniert im Prinzip, leider werden mir nach den mit Text gefüllten Feldern immer noch 2 leere angezeigt. Habe schon in der Frage die Option angepasst und "Leere Eingabefelder" auf 0 gesetzt, jedoch bleiben die 2 leeren Felder am Ende dennoch erhalten. Gibt es hierfür eine Lösung?
by SoSci Survey (328k points)
> leider werden mir nach den mit Text gefüllten Feldern immer noch 2 leere angezeigt.

Ich hatte Sie so verstanden, dass Ergänzungen durch die Teilnehmer möglich sein sollen:

> auf jeden Fall dafür gedacht, dass die Befragten eigene Eingaben machen können

Aber ja, Sie haben auch geschrieben, dass es keine leeren Felder geben soll. Kein Problem: Verwenden Sie den Fragetyp "Texteingabe offen" und zeigen Sie nur die passenden Items.

$texte = [];
if ($data[3] == 'TRUE') {
  $texte[1] = $data[2];
}
if ($data[5] == 'TRUE') {
  $texte[2] = $data[4];
}
// u.s.w. - gerne auch als Schleife, wenn es mehr als 5 Texte sind.

// Und dann in die offene Texteingabe übernehmen
foreach ($texte as $i => $text) {
  preset(id('P126', $i), $text);
}
// Und nur die befüllten Items zeigen
question('P126', array_keys($texte));

Beachten Sie, dass oben nun bei $texte auch immer ein Index (1, 2, ...) gesetzt wird. Und die Frage P126 müssen Sie natürlich aus der Seite entfernen, wenn sie im PHP-Code mittels question() eingebunden wird.

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

...