0 votes
in SoSci Survey (dt.) by s115114 (140 points)

Hallo,
ich habe eine Befragung durchgeführt und musste am Ende feststellen, dass auf einer bestimmten Seite immer nur die Hälfte der Antworten gespeichert wurde.
Insgesamt sollten 16 Fragen auf zwei aufeinanderfolgenden Seiten angezeigt werden (funktioniert auch problemlos). Allerdings werden pro Nutzer nur 8 Fragen im Datensatz gespeichert. Bei den anderen Fragen finde ich im Datensatz keinen Eintrag. Es wird keine "-9" (nicht beantwortet) bei den fehlenden Antworten eingetragen, sondern das entsprechende Feld im Datensatz ist leer.

Folgenden Code habe ich verwendet:

// Das isset() vermeidet, dass die Rotation etwa wg. fehlenden Antworten verändert wird
if (!isset($itemsC402)) {
  // Alle Items der Frage C402 auflisten
  $itemsC402 = getItems('C402', 'all');
  // Liste Mischen
  shuffle($itemsC402);
  // Die Liste in Teillisten à 10 Items teilen
  $itemsC402 = array_chunk($itemsC402, 8);
  // Die Variable für andere Seiten verfügbar machen
  registerVariable($itemsC402);
}
 
// Die Items über mehrere Seiten verteilt anzeigen
$i = loopPage(count($itemsC402));
question('C402', $itemsC402[$i]);

Mich wundert es, da ich ähnliche Codes an anderer Stelle verwendet habe und das Problem dort nicht auftritt. Die Frage C402 beinhaltet auch alle 16 Items.

Auf de gleichen Seite habe ich noch folgenden PHP-Code stehen, falls das eine Rolle spielen sollte;

// PHP-Code auf der Seite mit dem Stimulus
$zahl = value('EE02');
 
if ($zahl == 1) {
  setNextPage('S25');
} elseif ($zahl == 2) {
  setNextPage('S25');
} elseif ($zahl == 3) {
  setNextPage('S25');
} elseif ($zahl == 4) {
  setNextPage('S27');
} elseif ($zahl == 5) {
  setNextPage('S27');
} elseif ($zahl == 6) {
  setNextPage('S27');

}

Im Voraus schon einmal vielen Dank für die Hilfe!

Liebe Grüße
Lucas

1 Answer

0 votes
by SoSci Survey (330k points)

In dieser Zeile PHP-Code ...

$itemsC402 = array_chunk($itemsC402, 8);

... zerlegen Sie die (gemischte) Liste aller Items in Blöcke zu jeweils 8 Items. Diese Blöcke sollten dann hier nacheinander angezeigt werden:

$i = loopPage(count($itemsC402));
question('C402', $itemsC402[$i]);

Auf der gleichen Seite habe ich noch folgenden PHP-Code stehen, falls das eine Rolle spielen sollte

Ja, das spielt eine ganz wesentliche Rolle, denn setNextPage() setzt das loopPage() außer Kraft. Anstatt also nach dem "Weiter" die Seite noch einmal anzuzeigen, geht es direkt weiter zu der mit setNextPage() definierten Seite.

Es wurden also tatsächlich nur die ersten 8 (zufüllen) Items im Fragebogen abgezeigt und abgefragt. Der zweite Block der gemischten Itemliste wurde nie abgefragt.

by s115114 (140 points)
Vielen vielen Dank für Ihre Hilfe! Damit kann ich die Fehler direkt ausbessern. Ärgerlich, dass mir das an dieser Stelle passiert ist.

Gibt es denn eine Möglichkeit, dass setNextPage drinnen zu lassen? Kann man erst nach erfolgter Beantwortnung aller 16 Items das setNextPage aktivieren lassen, oder wäre das Codetechnisch zu aufwändig? Ansonsten würde ich eine zusätzliche Seite einbauen.

Vielen Dank und einen schönen Abend noch.
by SoSci Survey (330k points)
> Gibt es denn eine Möglichkeit, dass setNextPage drinnen zu lassen?

Ich empfehle, dass Sie den PHP-Code mit dem `setNextPage()` einfach auf die folgende Seite setzen.

Oder vermutlich können Sie die Konstruktion mit dem Herumspringen im Fragebogen auch einfach anders lösen, indem Sie auf nur einer Seite mittels Filter den richtigen Inhalt anzeigen. Das vereinfacht es auch mit dem Fortschrittsbalken, der sonst allen Gruppen etwas anderes anzeigt ... und was wäre im Experiment ja wirklich nicht optimal.

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

...