0 votes
in SoSci Survey (dt.) by s085348 (120 points)

Hallo Support,
ich benutze folgenden Code, um Items mehrerer Fragen über mehrere Seiten zu rotieren:

 if (!isset($blocks)) {
  $fragen = array('VA01', 'VA02', 'VA03', 'VA04');
  $items = array();
  foreach ($fragen as $frage) {
    $itemsF = getItems($frage, 'all');
    foreach ($itemsF as $itemID) {
      $items[] = array($frage, $itemID);
    }
  }

  shuffle($items);
  $blocks = array_chunk($items, 6);
  registerVariable($blocks);
}

$i = loopPage(count($blocks));

foreach ($blocks[$i] as $pos => $item) {
  $frage = $item[0];
  $itemID = $item[1];
  if ($pos == 0) {
    question($frage, $itemID, 'spacing=5');
  } elseif ($pos == 9) {
    question($frage, $itemID, 'anchor=none');
  } else {
    question($frage, $itemID, 'spacing=5', 'anchor=none');
  }
}

Die Rotation bei einmaliger Verwendung funktioniert problemlos. Nun habe ich zwei weitere Probleme:

  1. Wenn ich diesen Code auf mehreren Seiten verwenden möchte (jeweils mit anderen Fragen-Arrays, die sich nicht doppeln), taucht ein Hinweis auf.

Dieser erscheint, nachdem alle 12 Items randomisiert korrekt auf zwei Seiten dargestellt wurden. Auf der dritten und vierten Seite tauchen abwechseln die Fehlermeldung und jeweils ein beantwortetes Item auf.

Der Hinweis lautet:
Hinweis (Seite 14)
Eine oder mehrere Variablen (VA03_01) wurden bereits auf Seite 13 abgefragt. Bitte beachten Sie, dass die Antworten von Seite 13 hier angezeigt und anschließend überschrieben werden. Falls Sie eine gleichartige Frage mehrfach benötigen, erstellen Sie eine Kopie der Frage.

Welche Namen/Befehle muss ich anpassen, damit ich den Code mehrfach verwenden kann?

  1. Ich möchte (mindestens auf der ersten Seite der rotierten Items/Fragen) oben die Frage und Anweisungen anzeigen lassen. Natürlich taucht die Fragestellung bisher nur vor dem ersten Item der Frage auf, aber durch die Rotation immer an einer unterschiedlichen Position. Für jede Frage sind die Fragen und Anweisungen gleich.

Wie kann ich hier den Code anpassen, damit die Frage samt Anweisungen einmal oben auf der Seite, gerne auch auf allen betreffenden Seiten, auftaucht?

1 Answer

0 votes
by SoSci Survey (328k points)

Wenn ich diesen Code auf mehreren Seiten verwenden möchte (jeweils mit anderen Fragen-Arrays, die sich nicht doppeln), taucht ein Hinweis auf.

Das liegt daran, dass Sie die Variable $blocks mit dem Befehl registerVariable() für alle Seiten fix definiert haben. Das ist notwendig, damit es mit loopPage() funktioniert - aber zugleich bedeutet das auch, dass der Filter mit isset() auf den anderen Seiten den Code nicht ausführt, sondern weiterhin die "alten" Items verwendet.

Die Lösung ist einfach: Verwenden Sie beim nächsten Block einen andren Namen für die Variable, z.B. $blocks2 statt $blocks.

by s085348 (120 points)
Danke, das funktioniert wunderbar. Ich hatte noch ein zweites Problem zum selben Code (oben hat leider die Aufzählung nicht eindeutig funktioniert):

Ich möchte (mindestens auf der ersten Seite der rotierten Items/Fragen) oben die Frage und Anweisungen anzeigen lassen. Natürlich taucht die Fragestellung bisher nur vor dem ersten Item der Frage auf, aber durch die Rotation immer an einer unterschiedlichen Position. Für jede Frage sind die Fragen und Anweisungen gleich. Jetzt meine Frage:
Wie kann ich hier den Code anpassen, damit die Frage samt Anweisungen einmal oben auf der Seite, gerne auch auf allen betreffenden Seiten, auftaucht?
by SoSci Survey (328k points)
Eigentlich sollte der question()-Befehl die Frage und Anweisungen vor jedem (!) Item anzeigen, so wie es aktuell im Code steht?!

Im question()-Befehl kann man mittels 'show-title=no' und 'show-explanation=no' festlegen, dass Titel und Anweisungen nicht angezeigt werden. Das müsste bei den unteren beiden question()-Befehlen noch ergänzt werden.

Ebenfalss möglich ist es, eine Frage ohne Items (=nur Titel und Anweisungen) anzuzeigen mit question('AB01', 'show-items=no');

Wenn SIe insgesamt nur 12 Items haben und offenbar auch nur einmal die Verankerung benötigen, dann verstehe ich ehrlich gesagt nicht ganz, warum Sie die Items nicht alle in eine Frage packen?

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

...