0 votes
in SoSci Survey (dt.) by s126130 (225 points)

Hallo,

ich möchte meinen Fragebogen abbrechen lassen, wenn bei einer Frage zum Alter von Bezugspersonen alle mit der Ausweichbedingung "verstorben" markiert wurden.

Mein Problem ist nun, dass die Items die dort erscheinen abhängig sind von einer vorherigen Frage bei der Personen angeben sollten bei wem sie aufgewachsen sind – d.h. ich weiß nie, welche Items beim Alter erscheinen werden.

So sieht die Skala aus:

Wie kann ich das lösen?

Danke!

1 Answer

0 votes
by SoSci Survey (325k points)
selected by s126130
 
Best answer

Sie könnten abzählen, bei wie vielen Items der Wert 1 (=nicht verstorben) gespeichert ist.

Allerdings könnte das immer noch falsch laufen, wenn man eine Person als "verstorben" markiert, dann im Fragebogen mittels Zurück-Knopf zurück geht, die Bedingungen ändert und dieses Item dann nicht mehr angezeigt wird (aber immer noch ein "verstorben" im Datensatz steht).

Die perfekte Lösung wäre mithin, dass Sie Ihre Itemliste nehmen und in einer FOR-Schleife prüfen, ob eine nicht-verstorbene Person in der Liste vorkommt:

$alive = false;
foreach ($items as $item) {
  $kennung = id('AB01', $item).'a';
  if (value($kennung) != 2) {
    $alive = true;
  }
}

if (!$alive) {
  // Screenout
}
by s126130 (225 points)
leider funktioniert das nicht recht.
Wie definiere ich die Itemliste richtig?

$items=[];
$alive = false;
foreach ($items as $item) {
  $kennung = id('SE07', $item).'a';
  if (value($kennung)!=2) {
    $alive = true;
  }
}

if (!$alive) {
  // Screenout
}
by SoSci Survey (325k points)
Wie haben Sie denn auf den früheren Seiten (bei der Frage deren Screenshot Sie oben zeigen) definiert, welche Items angezeigt werden sollen?
by s126130 (225 points)
Habe dort einfache Filterbedinungen verwendet (jene die ohnehin in SosciSurvey integriert sind). Wirklich etwas definieren musste ich also nicht.

Das heißt zum Beispiel für den Fall, dass in einer Frage zur Familienkonstellation die Mutter angereuzt wurde auch in dieser Frage die Mutter angezeigt wird. Das gleiche für alle anderen Personen. Sollten sie nicht angekreuzt worden sein, so tauchen sie auch hier nicht auf.
by SoSci Survey (325k points)
Verstehe ... dann können Sie sich jetzt entweder daran versuchen, das nochmal in PHP-Code umzusetzen. Oder Sie nehmen meinen ersten Vorschlag:

> Sie könnten abzählen, bei wie vielen Items der Wert 1 (=nicht verstorben) gespeichert ist.

Das funktioneirt mit folgendem PHP-Code:

$alive = false;
foreach (getItems('SE07', 'valid') as $item) {
  $kennung = id('SE07', $item).'a';
  if (value($kennung) == 1) {
    $alive = true;
  }
}

if (!$alive) {
  // Screenout
}
by s126130 (225 points)
Vielen Dank für die schnelle Antwort.
Wenn ich das so auf der folgenden Seite eingebe, dann funktioniert es leider nicht.
Der Fragebogen setzt fort, als wäre nichts gewesen.
by SoSci Survey (325k points)
> Der Fragebogen setzt fort, als wäre nichts gewesen.

Sie haben statt dem Kommentar "// Screenout" schon die Befehle für einen richtigen Screenout eingetragen, oder?

https://www.soscisurvey.de/help/doku.php/de:create:functions:pagestop
by s126130 (225 points)
Guter Hinweis ;) Vielen Dank für Ihre Hilfe.
Habe das ganze jetzt einfach mit goToPage ('end') gelöst. Das funktioniert auch. Aber nur um sicher zu gehen: Ist das in irgendeiner Form problematisch und sollte ich besser den Link befolgen, den Sie mir angehängt haben?
by SoSci Survey (325k points)
edited by SoSci Survey
Die beiden relevanten Unterschieden bestehen darin, dass (a) die Variable FINISHED beim goToPage('end') auf 1 gesetzt wird beim pageStop() + buttonHide() nicht und (b) dass man beim Screenout einen anderen Text anzeigen kann, wenn man möchte.
by s126130 (225 points)
Vielen Dank nochmals für Ihre Hilfe!

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

...