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

Hallo,
ich habe am Anfang des Fragebogens eine Filterfrage, in der die Ernährungsweisen abgefragt werden. Wenn jemand beispielsweise vegan oder vegetarisch anklickt, werden gewisse Antwortoptionen von zukünftigen Fragen ausgeblendet. Es gibt z.B eine Folgefrage, die heißt: An welchen Kochkursen würden Sie teilnehmen: vegan (ja/nein), vegetarisch (ja/nein), saisonal (ja/nein) etc. Veganer erhalten die Frage zum veganen und vegetarischen Kochkurs nicht. Vegetarier nicht den vegetarischen Kochkurs.
Es werden so 35 Items in 6 Skalenfragen abgefragt, die immer mit ja/nein beantwortet werden können. Es werden durch die Filter etwa 3-6 Items ausgeblendet, wenn jemand z.B Veganer oder Vegetarier ist.
Das klappt auch soweit gut.
Danach gibt es jedoch eine Folgefrage, in der man die Items, die man mit "ja" beantwortet hat, angezeigt bekommen soll, um diese in eine Rangfolge zu bringen.
Ich habe dafür folgenden PHP Code genutzt:

if (value('IN05_01') == 1) { \\ 1 steht hier für ja
$items[] = 1;  }
if (value('IN05_02') == 1) {
$items[] = 2;  }
if (value('IN05_03') == 1) {
$items[] = 3;  }
if (value('IN05_04') == 1) {
$items[] = 4;  }
if (value('IN05_05') == 1) {
$items[] = 5;  }
if (value('IN05_06') == 1) {
$items[] = 6;  }
if (value('IN05_07') == 1) {
$items[] = 7;  }
if (value('IN05_08') == 1) {
$items[] = 36;  }
if (value('IN06_01') == 1) {
$items[] = 8;  }
if (value('IN06_02') == 1) {
$items[] = 9;  }
if (value('IN06_03') == 1) {
$items[] = 10;  }
if (value('IN04_16') == 1) {
$items[] = 11;  }
if (value('IN04_17') == 1) {
$items[] = 12;  }
if (value('IN04_18') == 1) {
$items[] = 13;  }
if (value('IN04_19') == 1) {
$items[] = 14;  }
if (value('IN12_01') == 1) {
$items[] = 15;  }
if (value('IN12_02') == 1) {
$items[] = 16;  }
if (value('IN12_03') == 1) {
$items[] = 17; }
if (value('IN12_04') == 1) {
$items[] = 18;  }
if (value('IN12_05') == 1) {
$items[] = 19;  }
if (value('IN12_06') == 1) {
$items[] = 20;  }
if (value('IN12_07') == 1) {
$items[] = 21;  }
if (value('IN02_01') == 1) {
$items[] = 22;  }
if (value('IN02_02') == 1) {
$items[] = 23;  }
if (value('IN02_03') == 1) {
$items[] = 24;  }
if (value('IN02_04') == 1) {
$items[] = 25;  }
if (value('IN02_05') == 1) {
$items[] = 26;  }
if (value('IN02_06') == 1) {
$items[] = 27;  }
if (value('IN02_07') == 1) {
$items[] = 28;}
if (value('IN01_06') == 1) {
$items[] = 29;}
if (value('IN01_07') == 1) {
$items[] = 30;  }
if (value('IN01_08') == 1) {
$items[] = 31;  }
if (value('IN01_10') == 1) {
$items[] = 32; }
if (value('IN01_09') == 1) {
$items[] = 33; }
if (value('IN01_11') == 1) {
$items[] = 34;  }
if (value('IN01_12') == 1) {
$items[] = 35; }
question('IN14', $items);

An sich funktioniert der Code für Teilnehmende, die alle 35 Frageitems erhalten haben und diese mit ja/nein beantworten konnten.
Er funktioniert jedoch nicht bei den Vegetarieren und Veganern, da diese ja nicht alle Items angezeigt und beantwortet haben, weil dadurch nicht für alle Items Werte vorhanden sind.
Es erscheint zudem eine Fehlermeldung, wenn kein einziges Item mit "ja" beantwortet wurde. Dann werden alle Items zusammen mit einer Fehlermeldung angezeigt.

Würde mich über Hinweise und Lösungsvorschläge freuen!
Danke!

in SoSci Survey (dt.) by s076395 (165 points)
edited by SoSci Survey

1 Answer

0 votes

Nun Sie haben hier zwei Optionen:

(1) Sie können die Fehlermeldung ignorieren, denn es ist nur eine Warnung (orange) - und die sehen nur Sie, nicht Ihre Teilnehmer.

(2) Sie können mit getItems() und ein paar Arrays für die Zuordnung arbeiten. Dann wird auch der Code etwas übersichtlicher (aber nicht unbedingt trivialer). Das könnte dann wie folgt aussehen:

$items = array(
  'IN05' => array(
    1 => 1,
    2 => 2,
    // u.s.w.
    7 => 7,
    8 => 36
  ),
  'IN06' => array(
    1 => 8,
    2 => 9,
    3 => 10,
  )
  // u.s.w.
);

$shown = array();
foreach ($items as $qst => $subset) {
  $selected = getItems($qst, 'is', 1);
  // Die ausgewählten nun "umkodieren"
  foreach ($selected as $item) {
    $shown[] = $subset[$item];
  }
}
question('IN14', $shown);

Gut, zugegeben ... ich habe bei der Länge ein wenig geschummelt und oben nicht alle Items eingetragen.

by SoSci Survey (85.4k points)
...