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

0 votes

Guten Tag,

ich nutze für eine Umfrage die Datenbank für Inhalte, um vorliegende Daten der Befragten in die Umfrage einzubeziehen.

Bei bisherigen Fragetypen habe ich immer die Mehrfachauswahl mit Freitextfeld genutzt, da die Befragten hier die Möglichkeit bekommen sollten, Freitext zu den Angaben zu ergänzen.

Nun möchte ich jedoch eine Variable der Datenbank anzeigen lassen und dann eine Mehrfachauswahl von Optionen anbieten. Die Befragten sollen hier nun nichts in den Angaben der Datenbank ändern, sondern lediglich aus den Optionen wählen.

Gibt es eine andere Möglichkeit, die Variable aus der Datenbank anzuzeigen als in den Antwortoptionen (siehe Bild, die Variable erscheint im ersten Freitextfeld)? Wenn möglich, sollte der "Vorspann zu den Optionen" direkt über diesen stehen und die Variable aus der Datenbank noch darüber.

Der PHP-Code sieht aktuell folgendermaßen aus:

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

debug($data);
if ($data[4] == 'TRUE') {
  debug($data[2]);
  $value = preset('P102_01a', $data[2]);
}
if ($data[4] == 'TRUE'){
  question('P102');
}

if ($data[8] == 'TRUE') {
  debug($data[6]);
  $value = preset('P116_01a', $data[6]);
}
if ($data[8] == 'TRUE'){
question('P116');
}

Die Auswahl-Variable (4, 8, etc.) taucht ist mehrmals in der Datenbank auf und kann bei Befragten mehrfach TRUE sein und soll dann immer separat abgefragt werden.

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

1 Answer

+1 vote

Leider bin ich nicht sicher, ob ich Ihre Ausführungen korrekt verstehe.

Sie haben in den Daten unterschiedliche Variablen, die jeweils aktiv sein können oder nicht - und jeweils eine Beschriftung haben. Soweit korrekt?

Und Sie möchten in der Mehrfachauswahl Items anzeigen (oder nicht) und den Itemtext anpassen. Korrekt?

Hierfür benötigen Sie zwei Funktionen. Zum einen können Sie anhand eines Arrays festlegen, welche Optionen (Items) eine Mehrfachauswahl anzeigen soll:

$options = [];
if ($data[4] == 'TRUE') {
  $options[] = 1;
}
if ($data[8] == 'TRUE') {
  $options[] = 2;
}
question('XY01', $options);

Zum anderen können Sie mit replace() und Platzhaltern die Texte anpassen, die angezeigt werden.

if ($data[8] == 'TRUE') {
  replace('%platz01%', $data[6]);
}
by SoSci Survey (129k points)
Sie haben in den Daten unterschiedliche Variablen, die jeweils aktiv sein können oder nicht - und jeweils eine Beschriftung haben. Soweit korrekt?

--> Das stimmt.

Und Sie möchten in der Mehrfachauswahl Items anzeigen (oder nicht) und den Itemtext anpassen. Korrekt?

--> Am liebsten wäre es mir, wenn das jeweilige Item/die Variable aus der Datenbank nicht innerhalb der Mehrfachauswahl der Antwort angezeigt wird (so wie im Screenshot oben gezeigt), denn das finde ich für die Befragten verwirrend. Sie sollen dieses Item ja weder auswählen noch bearbeiten, sondern nur aus den darauffolgenden Antwortoptionen auswählen.

Die Fragebogenseite soll am Ende so aussehen, dass jeder Befragte diese Mehrfachauswahl so oft sieht, wie die entsprechenden Variablen (im Beispielcode 4 und 8) TRUE sind, also gar nicht, 1- oder 2-mal, darüber dann immer die passende "Beschriftungsvariable".
Zur Erläuterung: Frage 102 und 116 sind identisch, dienen eben nur zum Anbieten derselben Mehrfachauswahl für die jeweilige Variable.
> wenn das jeweilige Item/die Variable aus der Datenbank nicht innerhalb der Mehrfachauswahl der Antwort angezeigt wird (so wie im Screenshot oben gezeigt), denn das finde ich für die Befragten verwirrend.

Ach so, verstehe. Das vereinfacht die Sache. Dann verwenden Sie bitte einfach einen Platzhalter in Fragetitel, -anweisungen oder Vorspann.

> dass jeder Befragte diese Mehrfachauswahl so oft sieht, wie die entsprechenden Variablen (im Beispielcode 4 und 8) TRUE sind

Legen Sie die viele Kopien an, wie Sie entsprechende Variablen TRUE/FALSE haben. Und dann verwenden Sie den Code, den Sie oben schon in der Frage stehen haben. Nur eben ergänzt um `replace()` und die Fragen ergänzt um Platzhalter.
> Dann verwenden Sie bitte einfach einen Platzhalter in Fragetitel, -anweisungen oder Vorspann.

Das wäre perfekt, wenn der Platzhalter nach dem Titel angezeigt wird. Leider habe ich dazu nichts im Handbuch gefunden. Gibt es dazu Anleitungen/Beispiele, wie Platzhalter in Titel etc. eingebunden werden?

Vielen Dank!
Sie schreiben den Platzhalter (https://www.soscisurvey.de/help/doku.php/de:create:placeholders) einfach als Text in den Titel. Der PHP-Code mit dem replace() muss über der Frage stehen, damit es funktioniert.

Ich tue mich gerade schwer, auf Ihre Frage kontruktiv zu antworten. Wenn man selbst schon 100-mal mt Platzhaltern gerarbeitet hat, ist das so trivial, dass ich die Problematik gerade nicht nacvhvollziehen kann. Wenn Sie also mit meiner Antwort nicht zur Lösung kommen, dann beschreiben Sie mir bitte nochmal, was Sie schon haben und was angezeigt wird - und wo es noch hapert.
Vielen Dank!

Ich habe den PHP-Code nun folgendermaßen angepasst:

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

debug($data);
if ($data[4] == 'TRUE') {
  debug($data[2]);
  replace('%trialid%', $data[2]);
  question('P102');
}

if ($data[8] == 'TRUE') {
  debug($data[6]);
  replace('%trialid%', $data[6]);
question('P116');
}

Und den Fragetitel so hier:

For the following trial we found summary results in the registry: %trialid%

Es funktioniert, vielen Dank! Da ich noch nie mit PHP gearbeitet habe, lässt das Handbuch für mich oft noch viele Fragen offen, zum Glück ist der Support hier so super!
...