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 wollte fragen, ob es möglich ist, kombinierte Fragen verpflichtend zu machen, und zwar so, dass für jedes Item mindestens eine Möglichkeit angekreuzt werden muss.
Gibt es hierfür vielleicht einen PHP-Code, den man nutzen kann?

Vielen Dank.

ago in SoSci Survey (dt.) by s133733 (130 points)
Welche Fragen (Fragetypen) haben Sie denn in Ihrer kombinierten Frage kombiniert?

2 Answers

0 votes

Es handelt sich um eine Mehrfachauswahl-Matrix, bei denen für jede Zeile (mindestens) ein Kreuz angekreuzt werden muss. Die kombinierten Fragen sind alles Fragen mit Mehrfachauswahl.
Wie dem Fragebogenausschnitt zu entnehmen ist, schließen sich die Antwortmöglichkeiten links und rechts der Linie gegenseitig aus.

Vielen Dank für die Mühe!

ago by s133733 (130 points)
edited ago by s133733
Haben Sie eine Frage vm Typ "Mehrfachauswahlmatrix" angelegt oder haben Sie diese als kombinierte Frage aus mehreren Mehrfachauswahl-Fragen zusammengesetzt?
Es handelt sich um eine kombinierte Frage aus drei Mehrfachauswahl-Fragen.

Wie zu sehen ist, habe ich mittlerweile einen Ausschnitt der Frage angehängt.
0 votes

Danke für den Screenshot und die Erläuterung. In der Tat nicht ganz trivial :)

Sie möchten also prüfen (a) ob pro Zeile mindestens eine Option gewählt wurde und (b) dass entweder Kreuzchen links stehen oder Kreuzchen rechts. Ist das soweit korrekt?

  • Meine erste Überlegung wäre, ob es sich hier wirklich um eine Mehrfachauswahl handeln soll. Die Optionen links der Trennlinie scheinen sich gegenseitig auszuschließen.
  • Meine zweite Überlegung ist, ob tatsächlich alle 5 Optionen rechts der Trennlinie erforderlich sind. Auch hier scheint es mir so, dass sich vieles ausschließt - und dass einiges in der Auswertung evtl. gar nicht so differenziert benötigt wird.

Im einfachsten Fall könnte man das nämlich als Skala (Zwischenwerte beschriftet) mit einer Differenzierung von 3 (links) plus max. 3 Ausweichoptionen (rechts) erledigen. Dann müsste man sich nicht weiter um die Prüfung der Antwort kümmern. Das könnte man in der Frage dann einfach einschalten.

Wenn Sie es mit Mehrfachauswahl beibehalten möchten, dann benötigen Sie ein wenig PHP-Code für die Prüfung der Antwort. Wie dieser genau aussieht, hängt von den Kennungen Ihrer Variablen ab. Aber im Prinzip muss er nur für jedes Item (via FOR-Schleife) prüfen, ob die Bedingungen erfüllt sind. Das könnte so aussehen:

$missing = false;
$tooMuch = false;

foreach (getItems('AB01', 'all') as $item) {
  // Zählen wie viele Kreuzchen links und rechts stehen
  $cntLeft = 0;
  $cntRight = 0;
  for ($value = 1; $value <= 3; $value+) {
    $varID = id('AB01', $item).'x'.$value;  // Würde z.B. AB01_01x1 ergeben
    if (value($varID) == 2) {
      $cntLeft++;
    }
  }
  for ($value = 1; $value <= 5; $value+) {
    $varID = id('AB02', $item).'x'.$value;  // Würde z.B. AB02_01x1 ergeben
    if (value($varID) == 2) {
      $cntRight++;
    }
  }
  // Gültigkeit prüfen
  if (($cntLeft == 0) && ($cntRight == 0)) {
    markFail(id('AB01', $item));
    $missing = true;
  }
  if (($cntLeft > 0) && ($cntRight > 0)) {
    markFail(id('AB01', $item));
    $tooMuch = true;
  }
}

// Jetzt noch die Meldung und Wiederholung
if ($missing) {
  repeatPage('infoMissing');
}
if ($tooMuch) {
  repeatPage('infoTooMuch');
}

Die zweite Schleife innerhalb des foreach muss evtl. noch etwas anders aussehen, wenn Sie hier einzelne Mehrfachauswahl-Fragen hinzukombiniert haben. Insbesondere die Zeile mit der $varID. Dazu gerne noch Tipps, wenn Sie Ihre Variablennamen erläutern.

ago by SoSci Survey (102k points)
...