0 votes
in SoSci Survey (dt.) by s285997 (110 points)

Guten Tag,

ich möchte einen Fragebogen mit 200 items erstellen, welche zufällig rotiert sein sollen. Da dies zu viele items für eine einzige Frage sind, habe ich sie auf drei (identische) Fragen verteilt. Wenn ich den Code unter "Manuelle Rotation von items" verwende, funktioniert die Rotation einwandfrei (aber halt nur für eine der drei Fragen). Der Code, der für mich wichtig wäre, nämlich der unter "Items aus unterschiedlichen Fragen rotieren" leider nicht. Es werden dann nur meine Fragen und die items angezeigt, allerdings nicht rotiert. Ich habe im Code nur die Kennungen der Fragen verändert. Was muss ich noch ändern?

Vielen Dank schon mal!

by s285997 (110 points)
Hinweis (Seite 3)
Debug-Information für $itemMix:
Keine Daten (null)
Hinweis (Seite 3)
Debug-Information für $itemMix:
Array (ohne Elemente)
Warnung (Seite 3)
Für die Frage HT01 wurde kein Item mit der Kennung 0 gefunden
Fehler im Fragebogen (Seite 3)
Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Undefined variable $itemMix
Zeile: 12

PHP-Code

009 }
010  
011  
012 debug($itemMix);
013 if (!isset($itemMix)) {
014   $itemMix = $itemliste;
015   registerVariable('itemMix');
by s285997 (110 points)
Guten Abend, das Problem hat sich im Großen und Ganzen gelöst: Der Code auf der englischen Seite funktioniert :D ich hänge ihn hier mal an, vielleicht kann man ihn auf der deutschen Seite für zukünftige user anpassen...

Jetzt wäre es noch super, etwas einzufügen, sodass 1. die Skalenverankerungen nicht bei jedem item wieder angezeigt werden, und 2. die Fragen über mehrere Seiten verteilt würden. Könnten Sie mir dabei helfen?


if (!isset($items)) {
  $questions = ['AB01', 'AB02', 'AB03'];
  // Create a list with all items
  $items = [];
  foreach ($questions as $qstID) {
    $qstItems = getItems($qstID, 'all');
    foreach ($qstItems as $itemID) {
      $items[] = [$qstID, $itemID];
    }
  }
  // Merge list
  shuffle($items);
  registerVariable($items);
}
 
// show question text
question('AB01', 'spacing=0', 'show-items=no');
 
// show items
foreach ($items as $item) {
  question($item[0], [$item[1]], 'spacing=0', 'show-title=no', 'show-explanation=no');
}
by SoSci Survey (328k points)
> vielleicht kann man ihn auf der deutschen Seite für zukünftige user anpassen...

Helfen Sie mir kurz, welche Seite(n) Sie meinen ... dann schaue ich mir das mal an. Eigentlich ist die deutsche Seite in der Anleitung die aktuellere.

> Jetzt wäre es noch super, etwas einzufügen, sodass 1. die Skalenverankerungen nicht bei jedem item wieder angezeigt werden

Ergänzen Sie dafür noch ein 'anchor=none'

question($item[0], [$item[1]], 'spacing=0', 'show-title=no', 'show-explanation=no', 'anchor=none');

> 2. die Fragen über mehrere Seiten verteilt würden.

Dafür würden Sie das

foreach ($items as $item) {
  question($item[0], [$item[1]], 'spacing=0', 'show-title=no', 'show-explanation=no');
}

z.B. ersetzen durch ein

$item = loopPage($items);
question($item[0], [$item[1]], 'spacing=0', 'show-title=no', 'show-explanation=no');

Dann aber vielleicht besser wieder mit Verankerung.
by s285997 (110 points)
ich meine die Anleitung auf dieser Seite:

https://www.soscisurvey.de/help/doku.php/de:create:rotation-items?s[]=%2Aitems%2A&s[]=%2Aaus%2A&s[]=%2Aunterschiedlichen%2A&s[]=%2Afragen%2A&s[]=%2Arotieren%2A



Das Verteilen über mehrere Seiten hat geklappt, danke!


Das mit der Skalenverankerung leider nicht. Wenn ich anchor=none verwende, wird sie gar nicht mehr angezeigt (ich brauche sie aber am Anfang jeder Seite einmal). Ich habe anchor=<20> versucht, um sie bei jedem 20. item anzuzeigen, aber dann wird sie leider wieder über jedem einzelnen item angezeigt (bei allen anderen Zahlen statt 20 auch)
by SoSci Survey (328k points)
Danke, das mit der Anletung prüfen wir. Das mit der Verankerung habe ich unten beantwortet.

1 Answer

0 votes
by SoSci Survey (328k points)

Wenn ich anchor=none verwende, wird sie gar nicht mehr angezeigt

Wenn Sie per loopPage() wie oben vorgeschlagen immer nur ein Item pro Seite anzeigen, scheint es mir sinnvoll, sie immer anzuzeigen...

ich brauche sie aber am Anfang jeder Seite einmal

Bei anderen Loops müssten Sie in der Schleife dafür sorgen, dass sie beim ersten Mal angezeigt wird und dann nicht mehr. Also z.B.

foreach ($items as $i => $item) {
  if ($i==0) {
    question($item[0], [$item[1]], 'spacing=0', 'show-title=no', 'show-explanation=no');
  } else {
    question($item[0], [$item[1]], 'spacing=0', 'show-title=no', 'show-explanation=no', 'anchor=none');
  }
}

Ich habe anchor=<20> versucht, um sie bei jedem 20. item anzuzeigen, aber dann wird sie leider wieder über jedem einzelnen item angezeigt

Ja, wenn Sie die Items einzeln per question()einbinden, dann ist das jedesmal eine eigene Frage mit eigener Zählung.

by s285997 (110 points)
ich hatte den loop schon abgeändert, um mehrere items auf einer Seite zu verteilen. Der Code sieht jetzt so aus:

if (!isset($items)) {
  $questions = ['HT01', 'HT02', 'HT03'];
  // Create a list with all items
  $items = [];
  foreach ($questions as $qstID) {
    $qstItems = getItems($qstID, 'all');
    foreach ($qstItems as $itemID) {
      $items[] = [$qstID, $itemID];
    }
  }
  // Merge list
  shuffle($items);
  registerVariable($items);
}

$itemBlocks = array_chunk($items, 20);
  registerVariable($itemBlocks);

$i = loopPage(count($itemBlocks));
 
// show question text
question('HT01', 'spacing=0', 'show-items=no');
 
// show items
$items = $itemBlocks[$i];
foreach ($items as $item) {
  question($item[0], [$item[1]], 'spacing=0', 'show-title=no', 'show-explanation=no', 'anchor=20',);
}


Wo und wie genau muss ich jetzt den anchor verändern, damit er nur beim ersten item jeder Seite angezeigt wird?
by SoSci Survey (328k points)
Das würden Sie in der foreach-Schleife ganz am Ende einbauen:

foreach ($items as $k => $item) {
  if ($k == 0) {
    question($item[0], [$item[1]], 'spacing=0', 'show-title=no', 'show-explanation=no');
  } else {
    question($item[0], [$item[1]], 'spacing=0', 'show-title=no', 'show-explanation=no', 'anchor=none');
  }
}
by s285997 (110 points)
Jetzt passiert folgendes: Die erste Seite (mit den ersten 20 items) sieht ganz wunderbar aus, wie gewünscht steht die Skalenverankerung nur einmal ganz oben und dann nicht mehr! Wenn ich die ersten 20 items aber bearbeitet habe, und auf Weiter klicke, erscheint für die nächste Seite folgende Fehlermeldung:

Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Undefined array key 1
Zeile: 27

PHP-Code

024 question('HT01', 'spacing=0', 'show-items=no');
025  
026  
027 $items = $itemBlocks[$i];
028 foreach ($items as $k => $item) {
029   if ($k == 0) {
030     question($item[0], [$item[1]], 'spacing=0', 'show-title=no', 'show-explanation=no');
Fehler im Fragebogen: foreach() argument must be of type array|object, null given
Zeile: 28

PHP-Code

025  
026  
027 $items = $itemBlocks[$i];
028 foreach ($items as $k => $item) {
029   if ($k == 0) {
030     question($item[0], [$item[1]], 'spacing=0', 'show-title=no', 'show-explanation=no');
031   } else {



Die nächste Seite erscheint dann wieder (seltsamerweise sind einige items schon bearbeitet, also möglicherweise werden auf jeder Seite ALLE items noch mal rotiert, auch schon die bereits bearbeiteten), und anstatt der übernächsten erscheint wieder die Fehlercode, usw.
by SoSci Survey (328k points)
Was zeigt denn (auf der ersten und zweiten Seite) folgende Zeile an?

debug($i);
debug($itemBlocks);
by s285997 (110 points)
auf der ersten Seite (ich habe den Array aus Platzgründen jetzt nur halb kopiert, er ist aber vollständig):

[Information]    Interview gestartet (neue Nummer 186)
[Information]    Der Fragebogen base im Projekt psyche_koerper wird verwendet
[Verarbeitung]    Erstelle Seite 3 in Fragebogen base
[Information]    loopPage() wiederholt die Seite 3 nun 11 mal, beginnend mit dem Wert 0
[Inhalt]    Erstelle Frage HT01
[Inhalt]    Erstelle Frage HT03
[Inhalt]    Erstelle Frage HT03
[Inhalt]    Erstelle Frage HT01
[Inhalt]    Erstelle Frage HT03
[Inhalt]    Erstelle Frage HT01
[Inhalt]    Erstelle Frage HT01
[Inhalt]    Erstelle Frage HT01
[Inhalt]    Erstelle Frage HT02
[Inhalt]    Erstelle Frage HT02
[Inhalt]    Erstelle Frage HT02
[Inhalt]    Erstelle Frage HT03
[Inhalt]    Erstelle Frage HT02
[Inhalt]    Erstelle Frage HT02
[Inhalt]    Erstelle Frage HT02
[Inhalt]    Erstelle Frage HT01
[Inhalt]    Erstelle Frage HT02
[Inhalt]    Erstelle Frage HT01
[Inhalt]    Erstelle Frage HT03
[Inhalt]    Erstelle Frage HT01
[Inhalt]    Erstelle Frage HT01
debug()    Inhalt: $i = 0 (integer)
debug()    Inhalt:
[0]    [0]Array [HT03, 43]    [1]Array [HT03, 52]    [2]Array [HT01, 5]    [3]Array [HT03, 35]    [4]Array [HT01, 2]    [5]Array [HT01, 76]    [6]Array [HT01, 65]    [7]Array [HT02, 18]    [8]Array [HT02, 44]    [9]Array [HT02, 56]    [10]Array [HT03, 44]    [11]Array [HT02, 2]    [12]Array [HT02, 52]    [13]Array [HT02, 46]    [14]Array [HT01, 23]    [15]Array [HT02, 29]    [16]Array [HT01, 1]    [17]Array [HT03, 19]    [18]Array [HT01, 57]    [19]Array [HT01, 94]
[1]    [0]Array [HT03, 24]    [1]Array [HT02, 4]    [2]Array [HT03, 9]    [3]Array [H



auf der zweiten Seite (wieder mit vollständigem array):


[Information]    Interview Nummer 186 wird fortgesetzt
[Information]    Der Fragebogen base im Projekt psyche_koerper wird verwendet
[Information]    Die Verweildauer auf Seite 3 war 296 Sekunden
[Verarbeitung]    Lese Antworten von Seite 3
[Information]    Antwort auf HT01_01 = 3
[Information]    Antwort auf HT01_02 = 3
[Information]    Antwort auf HT01_05 = 3
[Information]    Antwort auf HT01_23 = 3
[Information]    Antwort auf HT01_57 = 3
[Information]    Antwort auf HT01_65 = 3
[Information]    Antwort auf HT01_76 = 3
[Information]    Antwort auf HT01_94 = 3
[Information]    Antwort auf HT03_19 = 3
[Information]    Antwort auf HT03_35 = 3
[Information]    Antwort auf HT03_43 = 2
[Information]    Antwort auf HT03_44 = 3
[Information]    Antwort auf HT03_52 = 3
[Information]    Antwort auf HT02_02 = 3
[Information]    Antwort auf HT02_18 = 3
[Information]    Antwort auf HT02_29 = 3
[Information]    Antwort auf HT02_44 = 3
[Information]    Antwort auf HT02_46 = 3
[Information]    Antwort auf HT02_52 = 3
[Information]    Antwort auf HT02_56 = 3
[Information]    Fragen bisher zu 100% vollständig beantwortet
[Information]    Entsprechend der vorher festgelegten Seitenabfolge wird Seite 3 [] angezeigt
[Verarbeitung]    Erstelle Seite 3 in Fragebogen base
[Information]    loopPage() i=1
[Inhalt]    Erstelle Frage HT01
debug()    Inhalt: $i = 1 (integer)
debug()    Inhalt:
[0]    [0]Array [HT03, 43]    [1]Array [HT03, 52]    [2]Array [HT01, 5]    [3]Array [HT03, 35]    [4]Array [HT01, 2]    [5]Array [HT01, 76]    [6]Array [HT01, 65]    [7]Array [HT02, 18]    [8]Array [HT02, 44]    [9]Array [HT02, 56]    [10]Array [HT03, 44]    [11]Array [HT02, 2]    [12]Array [HT02, 52]    [13]Array [HT02, 46]    [14]Array [HT01, 23]    [15]Array [HT02, 29]    [16]Array [HT01, 1]    [17]Array [HT03, 19]    [18]Array [HT01, 57]    [19]Array [HT01, 94]
by SoSci Survey (328k points)
In der Tat scheint $itemBlocks nur einen Block à 20 Items zu beinhalten - daher die Fehlermeldung, dass es in der Wiederholung keinen zweiten Block ($i=1) mehr gibt. Oder haben Sie die Debug-Information einfach nur nach dem [19]Array [HT01, 94] abgeschnitten?

Ergänzen Sie gerne noch ein debug(count($items)); und ein debug(count($itemBlocks));
by s285997 (110 points)
[Information]    Interview gestartet (neue Nummer 188)
[Information]    Der Fragebogen base im Projekt psyche_koerper wird verwendet
[Verarbeitung]    Erstelle Seite 3 in Fragebogen base
[Information]    loopPage() wiederholt die Seite 3 nun 11 mal, beginnend mit dem Wert 0
[Inhalt]    Erstelle Frage HT01
[Inhalt]    Erstelle Frage HT01
[Inhalt]    Erstelle Frage HT03
[Inhalt]    Erstelle Frage HT02
[Inhalt]    Erstelle Frage HT03
[Inhalt]    Erstelle Frage HT03
[Inhalt]    Erstelle Frage HT01
[Inhalt]    Erstelle Frage HT02
[Inhalt]    Erstelle Frage HT01
[Inhalt]    Erstelle Frage HT02
[Inhalt]    Erstelle Frage HT03
[Inhalt]    Erstelle Frage HT02
[Inhalt]    Erstelle Frage HT01
[Inhalt]    Erstelle Frage HT02
[Inhalt]    Erstelle Frage HT02
[Inhalt]    Erstelle Frage HT02
[Inhalt]    Erstelle Frage HT02
[Inhalt]    Erstelle Frage HT01
[Inhalt]    Erstelle Frage HT03
[Inhalt]    Erstelle Frage HT01
[Inhalt]    Erstelle Frage HT01
debug()    Inhalt: $i = 0 (integer)
debug()    Inhalt:
[0]    [0]Array [HT01, 88]    [1]Array [HT03, 2]    [2]Array [HT02, 6]    [3]Array [HT03, 45]    [4]Array [HT03, 47]    [5]Array [HT01, 67]    [6]Array [HT02, 26]    [7]Array [HT01, 75]    [8]Array [HT02, 47]    [9]Array [HT03, 10]    [10]Array [HT02, 32]    [11]Array [HT01, 79]    [12]Array [HT02, 57]    [13]Array [HT02, 27]    [14]Array [HT02, 58]    [15]Array [HT02, 36]    [16]Array [HT01, 32]    [17]Array [HT03, 34]    [18]Array [HT01, 70]    [19]Array [HT01, 5]
[1]    [0]Array [HT02, 5]    [1]Array [HT01, 68]    [2]Array [HT01, 33]    [3]Array [HT03, 43]    [4]Array [HT01, 80]    [5]Array [HT01, 7]    [6]Array [HT03, 14]    [7]Array [HT02, 7]    [8]Array [HT03, 26]    [9]Array [HT03, 52]    [10]Array [HT01, 45]    [11]Array [HT03, 13]    [12]Array [HT02, 22]    [13]Array [HT01, 57]    [14]Array [HT03, 27]    [15]Array [HT03, 56]    [16]Array [HT01, 25]    [17]Array [HT01, 28]    [18]Array [HT01, 58]    [19]Array [HT01, 71]
[2]    [0]Array [HT01, 38]    [1]Array [HT03, 29]    [2]Array [HT01, 27]    [3]Array [HT01, 35]    [4]Array [HT02, 2]    [5]Array [HT02, 44]    [6]Array [HT03, 58]    [7]Array [HT03, 53]    [8]Array [HT03, 57]    [9]Array [HT02, 14]    [10]Array [HT01, 23]    [11]Array [HT03, 11]    [12]Array [HT02, 29]    [13]Array [HT02, 66]    [14]Array [HT03, 28]    [15]Array [HT01, 47]    [16]Array [HT01, 19]    [17]Array [HT01, 49]    [18]Array [HT02, 50]    [19]Array [HT01, 2]
[3]    [0]Array [HT02, 38]    [1]Array [HT03, 12]    [2]Array [HT02, 13]    [3]Array [HT03, 31]    [4]Array [HT01, 96]    [5]Array [HT03, 4]    [6]Array [HT01, 59]    [7]Array [HT01, 91]    [8]Array [HT03, 44]    [9]Array [HT03, 23]    [10]Array [HT01, 46]    [11]Array [HT01, 92]    [12]Array [HT02, 48]    [13]Array [HT01, 43]    [14]Array [HT02, 20]    [15]Array [HT02, 65]    [16]Array [HT01, 72]    [17]Array [HT02, 18]    [18]Array [HT02, 54]    [19]Array [HT01, 81]
[4]    [0]Array [HT01, 63]    [1]Array [HT03, 22]    [2]Array [HT02, 25]    [3]Array [HT01, 95]    [4]Array [HT03, 36]    [5]Array [HT01, 20]    [6]Array [HT02, 67]    [7]Array [HT01, 37]    [8]Array [HT03, 15]    [9]Array [HT01, 6]    [10]Array [HT02, 45]    [11]Array [HT02, 40]    [12]Array [HT03, 32]    [13]Array [HT01, 39]    [14]Array [HT01, 94]    [15]Array [HT03, 16]    [16]Array [HT02, 16]    [17]Array [HT01, 86]    [18]Array [HT01, 41]    [19]Array [HT01, 40]
[5]    [0]Array [HT01, 69]    [1]Array [HT02, 49]    [2]Array [HT01, 55]    [3]Array [HT02, 34]    [4]Array [HT02, 9]    [5]Array [HT02, 31]    [6]Array [HT01, 60]    [7]Array [HT01, 34]    [8]Array [HT03, 50]    [9]Array [HT01, 18]    [10]Array [HT03, 9]    [11]Array [HT01, 77]    [12]Array [HT02, 21]    [13]Array [HT02, 12]    [14]Array [HT02, 35]    [15]Array [HT03, 1]    [16]Array [HT03, 8]    [17]Array [HT01, 22]    [18]Array [HT01, 52]    [19]Array [HT01, 11]
[6]    [0]Array [HT03, 33]    [1]Array [HT03, 18]    [2]Array [HT02, 41]    [3]Array [HT01, 50]    [4]Array [HT01, 53]    [5]Array [HT02, 24]    [6]Array [HT02, 52]    [7]Array [HT03, 17]    [8]Array [HT01, 3]    [9]Array [HT01, 4]    [10]Array [HT03, 3]    [11]Array [HT03, 30]    [12]Array [HT03, 54]    [13]Array [HT03, 5]    [14]Array [HT01, 83]    [15]Array [HT02, 43]    [16]Array [HT02, 42]    [17]Array [HT03, 7]    [18]Array [HT03, 41]    [19]Array [HT03, 37]
[7]    [0]Array [HT01, 61]    [1]Array [HT02, 10]    [2]Array [HT02, 1]    [3]Array [HT01, 73]    [4]Array [HT01, 78]    [5]Array [HT03, 6]    [6]Array [HT01, 1]    [7]Array [HT02, 55]    [8]Array [HT03, 40]    [9]Array [HT03, 49]    [10]Array [HT01, 24]    [11]Array [HT02, 63]    [12]Array [HT01, 87]    [13]Array [HT01, 76]    [14]Array [HT01, 74]    [15]Array [HT01, 62]    [16]Array [HT01, 56]    [17]Array [HT02, 46]    [18]Array [HT03, 51]    [19]Array [HT01, 84]
[8]    [0]Array [HT02, 33]    [1]Array [HT01, 82]    [2]Array [HT03, 55]    [3]Array [HT03, 21]    [4]Array [HT01, 10]    [5]Array [HT01, 64]    [6]Array [HT02, 8]    [7]Array [HT01, 31]    [8]Array [HT03, 48]    [9]Array [HT02, 53]    [10]Array [HT02, 61]    [11]Array [HT02, 60]    [12]Array [HT01, 36]    [13]Array [HT01, 51]    [14]Array [HT02, 23]    [15]Array [HT02, 30]    [16]Array [HT03, 42]    [17]Array [HT01, 48]    [18]Array [HT01, 29]    [19]Array [HT02, 51]
[9]    [0]Array [HT03, 25]    [1]Array [HT02, 39]    [2]Array [HT01, 42]    [3]Array [HT02, 15]    [4]Array [HT02, 3]    [5]Array [HT02, 64]    [6]Array [HT01, 89]    [7]Array [HT01, 85]    [8]Array [HT02, 56]    [9]Array [HT01, 8]    [10]Array [HT02, 17]    [11]Array [HT03, 20]    [12]Array [HT01, 90]    [13]Array [HT01, 44]    [14]Array [HT02, 28]    [15]Array [HT02, 4]    [16]Array [HT03, 38]    [17]Array [HT03, 46]    [18]Array [HT01, 97]    [19]Array [HT01, 66]
[10]    [0]Array [HT01, 9]    [1]Array [HT02, 19]    [2]Array [HT01, 30]    [3]Array [HT03, 35]    [4]Array [HT01, 21]    [5]Array [HT02, 62]    [6]Array [HT01, 26]    [7]Array [HT01, 54]    [8]Array [HT02, 59]    [9]Array [HT01, 93]    [10]Array [HT03, 39]    [11]Array [HT02, 11]    [12]Array [HT03, 19]    [13]Array [HT03, 24]    [14]Array [HT01, 65]    [15]Array [HT02, 37]
debug()    Inhalt: count($items) = 20 (integer)
debug()    Inhalt: count($itemBlocks) = 11 (integer)
by SoSci Survey (328k points)
An der Stelle sieht das alles sehr gut aus. Und auf der nächsten Seite (also in der nächsten Wiederholung von loopPage()) wird es genauso angezeigt, ebenfalls mit 11 Blöcken? Dann kommt aber dennoch die Fehlermeldung?

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

...