0 votes
in SoSci Survey (dt.) by s250258 (110 points)

Liebes SoSci-Survey Team.

Im Rahmen einer Studie rund um die Mediennutzung von Teilnehmenden, bin ich darauf angewiesen, dass der Fragebogen 'dynamisch' arbeitet. Konkret bedeutet das folgendes:

Im ersten Teil des Fragebogens frage ich Motivationen ab, die Teilnehmende u.U. haben, um Medien zu nutzen.

Anschliessend frage ich ab, welche Medienträger sie am häufigsten benutzen. Hierzu biete ich ihnen auch ein offenes Textfeld an, in dem sie freiwillig ein bestimmtes Medium ergänzen dürfe.

Im dritten und letzten Teil möchte ich wissen, welche dieser Medienträger sie für welche Motivationen verwenden. In dieser Frage wird ihnen auch das Medium angeboten, welches sie auf der vorherigen Seite freiwillig eingetragen haben.

Um nur die Motivationen anzuzeigen, die die Teilnehmenden als relevant für sich empfinden, habe ich den folgenden PHP-Code vorbereitet (beispielhaft, anhand Seite MN16 des Fragebogens), der auch super funktioniert:

$items = getItems('MN09', 'min', 4); // Eine Liste der Items abfragen, die in MN09 min. den Antwortcode 4 bekommen haben
question('MN16', $items); // Ausfrage MN16 nur diese Items anzeigen

Nun müsste ich jedoch auch die Antwortoptionen, also die verschiedenen Medienträger, die sie zur Verfügung haben, dynamisch gestalten. D.h. konkret von der vorherigen Seite alle Items die mehr als den Antwortcode 1 erhalten haben als Optionen anbieten. Die entsprechende Seite habe ich als geschlossener Lückentext gestaltet, d.h. die Optionen müssten als 'Bubbles' angezeigt werden. Ich habe Mühe damit, einen Code hierfür zu schreiben, da ich nicht verstehe, wie ich diese Optionen referenzieren kann (im Unterschied zu einer Variable, die ja immer mit einer Referenz versehen ist).

Zu guter Letzt habe ich auch Mühe damit, die Antwort im offenen Textfeld auf der nächsten Seite zu 'replacen'. Wenn die Teilnehmenden etwas eingeben, ist es kein Problem. Wenn es aber ein 'empty string' ist, dann erscheint die 'Bubble'/das 'Feld' der Option trotzdem, aber einfach leer. Das sieht rein ästhetisch nicht besonders hübsch aus. :-) Ich habe es z.B. so versucht, was aber nicht funktioniert:

// read participant's answer
$media = value('MN24_01');

// check if the participant entered something
if (empty($media)) {

// if nothing was entered, replace placeholder with an empty string
replace('%other%', '');

} else {

// if something was entered, replace placeholder with their answer
replace('%other%', $media);

}

Das wäre der Link zu einem Pre-Test des Fragebogens ab S. (Die Motivationen müssen ausgefüllt werden, damit die anderen Seiten anschliessend erscheinen): https://www.soscisurvey.de/wbmu/?act=SwYTxfWWIbbNo1pyjIrTGWqH

Ich habe auch Screenshots beigelegt.

Besten Dank und freundliche Grüsse

1 Answer

0 votes
by SoSci Survey (341k points)

Verstehe ich Ihre ziemlich lange Frage korrekt, dass Sie Items (Medien) aus unterschiedlichen Fragen "zusammentragen" müssen?

Dann wäre es zunächst einmal wichtig, dass jedes Medium eine eindeutige Nummer bekommt. Wenn Frage 1 also die Item-Nummern 1-10 verwendet, würden Sie in Frage 2 die Item-Nummern 11-20 verwenden. Das können Sie beim Import der Items angeben.

Die offenen Eingabefelder haben dann auch eine feste ID, und ab der zweiten Verwendung wird für dieses Medium immer derselbe Platzhalter verwendet. Dann können Sie dieses Item genauso verwenden wie alle anderen.

Wenn Ihnen das noch nicht so richtig weiterhilft, dann würde ich Sie bitten, dass Sie sich mal ein einzelnes Problem herauspicken, und wir uns erstmal dieses vornehmen. Notieren Sie gerne die Kennungen und Typen der beteiligten Fragen, dann kann ich in meiner Antwort darauf eingehen.

by SoSci Survey (341k points)
> Nun ist es so, dass auf der ersten Seite, auf der der Code benötigt wird, lediglich die leere, offene Antwortoption zu sehen ist.

Ergänzen Sie bitte folgende Zeilen und berichten Sie kurz, was angezeigt wird;

debug($items);
debug($options);

Prüfen Sie außerdem bitte, welche Codes die Antwortvorgaben in MN16 verwenden.
by s250258 (110 points)
Es wird folgendes angezeigt:
Debug information for $items: 04, 5 (auf der 04 ist ein Stoppschild, auf der 5 eine kleine 1)

Debug information for $options: 01-13, 14 (auf der 13 ist ein Stoppschild, auf der 14 eine kleine 1)
by SoSci Survey (341k points)
Sie führende Null bei "01" irritiert mich ein wenig, die sollte da nicht stehen. Aber ich glaube, das Problem geht ein wenig tiefer ... der 'filter'-Parameter ist nicht so flexibel, wie die Item-Definition, und will ein richtiges Array anstatt dem Text '1-13'. Bitte verwenden Sie folgende Modifikation für Ihre Code:

// Lücken bzw. Nutzungsmotive filtern
$items = getItems('MN09', 'min', 4);  // Eine Liste der Items abfragen, die in MN09 min. den Antwortcode 4 bekommen haben

// Optionen bzw. Medienträger filtern
$options = getItems('MN22', 'all');
if (trim(value('MN22_14')) != '') {  // MN22_14 ist das Eingabefeld
  replace('%other%', 'MN24_01', 'response'); // Wenn etwas drin steht, ersetze %other% mit Inhalt von MN24_01
} else {
  // Option 14 nicht anzeigen
  $options = array_diff($options, [14]);
}

// Frage anzeigen
show('MN16', [
  'items' => $items,
  'filter' => $options
]);
by s250258 (110 points)
Danke! Ich habe den Code kopiert und eingefügt. Die gute Nachricht ist, dass nun wieder alle Items angezeigt werden. Die schlechte aber, dass das leere Antwortfeld immer noch da steht.
by s250258 (110 points)
Korrektur: Es ist geschafft!
Ich habe MN22_14 (das Eingabefeld) durch die ursprüngliche Frage ersetzt (MN24_01). Zuvor hat das nicht geklappt, da das System mir meldete, dass ich das Item nicht zwei Mal wählen kann. Nun funktioniert es aber einwandfrei und die 14. Option verschwindet, wenn das Eingabefeld leer bleibt. Vielen herzlichen Dank für die Unterstützung!

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

...