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

Ich habe 3 Konstrukte in denen ich die Fragen innerhalb eines Konstruktes rotieren lassen möchte und mit jeweiligen Bild-Stimuli gekoppelt habe.
Als Lösung dachte ich mir jeweils einen php-Code pro Seite, der eben die Fragen mischt.

Wie kann ich nun meinen Code auf eine Seite limitieren, damit auf der nächsten Seite beim nächsten Konstrukt nicht schon beantwortete Fragen wiederholt werden?

Hier der Code zu einem der Konstrukte:

if (!isset($blocks)) {
  $blocks = array(  // Liste der Frage-Kennungen und zugehöriger Bilder
    array('KO01', 'M1k.jpg'),
    array('KO02', 'M2k.jpg'),
    array('KO03', 'M3k.jpg'),
    array('KO04', 'M4k.jpg'),
    array('KO05', 'M5k.jpg'),
    array('KO06', 'W1k.jpg'),
    array('KO07', 'W2k.jpg'),
    array('KO08', 'W3k.jpg'),
    array('KO09', 'W4k.jpg'),
    array('KO10', 'W5k.jpg'),
    array('KO11', 'W6k.jpg')
  );
 
  // Die Liste mischen
  shuffle($blocks);
   // Die Listen auf allen Seiten verfügbar machen
  registerVariable($blocks);

}
 
// Anzeige der Blöcke
$i = loopPage(count($blocks));
// Bild anzeigen
html('<p><img src="'.$blocks[$i][1].'" alt="Personen"></p>');
// Frage anzeigen
question($blocks[$i][0]);
in SoSci Survey (dt.) by s052451 (130 points)
edited by SoSci Survey

1 Answer

+1 vote
 
Best answer

Der in der Frage zitierte PHP-Code sollte eine Seite 11-mal anzeigen und dabei jede Frage genau einmal anzeigen

Wie kann ich nun meinen Code auf eine Seite limitieren, damit auf der nächsten Seite beim nächsten Konstrukt nicht schon beantwortete Fragen wiederholt werden?

Nachdem alle 11 Fragen angezeigt werden, verstehe ich Ihre Frage nicht. Haben Sie noch eine weitere Seite im Fragebogen? Wie sieht diese aus?

by SoSci Survey (53k points)
selected by s052451
Ja ich habe 3 Seiten angelegt
Seite 1: 11 Fragen mit 11 Bildern zu Konstrukt 1 - rotierte Fragen, aber Konstrukt 1 immer an 1. Stelle
Seite 2: 11 Fragen mit 11 Bildern zu Konstrukt 2 - rotierte Fragen, immer nach Konstrukt 1
Seite 3: 11 Fragen mit 11 Bildern zu Konstrukt 3 - rotierte Fragen, immer nach Konstrukt 2

Seite 1 rotierte die 11 Fragen, aber auf Seite 2 wiederholen sich dann die beantworteten Fragen von Seite 1, ohne die neuen Fragen zu Konstrukt 2 zu stellen.

Ich vermute, dass mein Fehler bei
"// Die Listen auf allen Seiten verfügbar machen
registerVariable($blocks);"
liegt, da ich ja eigentlich die Listen NUR auf 1 Seite verfügbar haben möchte. Leider bin ich sehr unerfahren im php-Code und kann das deshalb nicht beschränken.
> Seite 1 rotierte die 11 Fragen, aber auf Seite 2 wiederholen sich dann die beantworteten Fragen von Seite 1, ohne die neuen Fragen zu Konstrukt 2 zu stellen.

Danke für die Erklärung. Hier liegt das Problem

if (!isset($blocks)) {

Diese Zeile sorgt dafür, dass die Variable $blocks nicht überschrieben wird, wenn die Seite mittels loopPage() erneut angezeigt wird. Das ist auch soweit korrekt, aber sie verhindert auch eine Änderung im zweiten 11er-Block.

Lösung: Benennen Sie die Variable einmal $blocks1, einmal $blocks2 und einmal $blocks3.
Vielen Dank, das ist die Lösung

Eine kleine Nachfrage hätte ich noch, kann ich im diesem php-Code auch einstellen, dass die Bilder mittig statt automatisch linksbündig angezeigt werden?
Im HTML-Teil des Codes, ja:

html('<p style="text-align: center;"><img src="'.$blocks[$i][1].'" alt="Personen"></p>');

Wenn Sie CSS Style googeln, finden SIe auch weitere Einstellungen wie z.B. Abstände (margin).
Vielen Dank!
...