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

Liebes Support-Team,

ich möchte ungefähr 110 Items zu einer Frage auf mehrere Seiten verteilen (20 Items pro Seite).

Dafür habe ich folgenden Code benutzt:

if (!isset($itemsAN03)) {
$itemsAN03 = getItems('AN03', 'all');

shuffle($itemsAN03);  
$itemsAN03 = array_chunk($itemsAN03, 20);
registerVariable($itemsAN03);
} 
$i = loopPage(count($itemsAN03));
question('AN03', $itemsAN03[$i]);

Jetzt kommt bei mir folgende Fehlermeldung, wenn ich den Fragebogen teste:

![][1]

Außerdem kommt im Bereich "Fragebogen zusammenstellen" folgende Warnung:

![][2]
Was diese put()-Funktion bewirken soll, habe ich nicht wirklich verstanden.

Mein Ziel ist es einfach nur diese 110 Items auf mehrere Seiten zu verteilen, wobei diese Items bei jedem Aufruf in zufälliger Reihenfolge erscheinen. Die Antworten für jedes einzelne Item sollen dann trotzdem richtig zu jedem Item zugeordnet werden.

Ich wäre Ihnen sehr dankbar, wenn Sie mir da weiterhelfen würden.

Vielen Dank im Voraus und liebe Grüße.
[1]: https://support.soscisurvey.de/?qa=blob&qa_blobid=10679598371402484012
[2]: https://support.soscisurvey.de/?qa=blob&qa_blobid=16997174043845443926

by SoSci Survey (305k points)
Eine Frage erlaubt in aller Regel nur 99 Items. Insofern wird es mit den 110 Items ein wenig komplizierter. Haben Sie sich dieser Problematik schon angenommen?

Haben Sie die Frage AB03 eventuell noch auf die Seite gezogen? Wenn Sie sie mittels question() einbinden, dann darf die Frage nicht noch zusätzlich auf die Seite gezogen werden.
by s248936 (120 points)
Liebes Support-Team, vielen Dank für die Rückmeldung.
Inwiefern wird es denn komplizierter? Es ist tatsächlich wichtig für meine Umfrage, dass alle Items in einer Frage platziert sind und bei jedem Aufruf rotieren.

Ich freue mich über eine Rückmeldung und bedanke mich im Voraus.
by s248936 (120 points)
edited by s248936
Alternativ wollte ich noch fragen, ob und wie man folgende Situationen technisch umsetzen kann: Kann ich die Items in 8 verschiedene Blöcke aufteilen, die bei jedem Aufruf aus diesen Blöcken komplett randomisiert rausgezogen und angezeigt werden?

Ich habe es mit folgendem Code probiert aber da kommt dann die Fehlermeldung "Warnung (Seite 3) Für die Frage AN20 wurde kein Item mit der Kennung 0 gefunden":


$fragen = ['AN20', 'AN21'];
$itemliste = [];
foreach ($fragen as $frage) {
  foreach (getItems($frage, 'all') as $item) {
    $itemsliste[] = [$frage, $item];
  }
}
 

if (!isset($itemMix)) {
  $itemMix = $itemliste;
  registerVariable($itemMix);
}
 

question('AN20', 'show-items=none', 'spacing=0');
 

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

2 Answers

0 votes
by SoSci Survey (305k points)

Es ist tatsächlich wichtig für meine Umfrage, dass alle Items in einer Frage platziert sind und bei jedem Aufruf rotieren.

Technisch werden Sie die Items auf mehrere Fragen verteilen und dann zusammengefügt anzeigen müssen: Items aus unterschiedlichen Fragen rotieren - den Code dafür haben Sie ja bereits gepostet. Ich denke nur, dass ein shuffle() fehlt, damit auch etwas rotiert wird:

if (!isset($itemMix)) {
  $itemMix = $itemliste;
  shuffle($itemMix);     // ergänzt
  registerVariable($itemMix);
}

"Warnung (Seite 3) Für die Frage AN20 wurde kein Item mit der Kennung 0 gefunden":

Lassen Sie sich Ihr Array doch mal als Debug-Info anzeigen:

debug($itemMix);

Da dürfte eigentlich in der rechten Spalte keine 0 stehen?

by s248936 (120 points)
Liebes Support-Team,

nach Absprache mit meinem Projektteam, wollte ich Sie fragen, ob das ein zu hoher Aufwand wäre oder ob Sie mir dies bzgl. helfen könnten, diesen JavaScript zu erstellen, damit die Funktion zum Scrollen der grafischen Verankerung trotzdem funktioniert.

Vielen Dank im Voraus für eine Rückmeldung.
by SoSci Survey (305k points)
> ob das ein zu hoher Aufwand wäre

Posten Sie bitte mal einen Pretest-Link direkt zur ersten Seite des Loops. Dann schaue ich mal in die Codes, welche sich um das Scrollen der Verankerung kümmern und prüfe, ob man das mit realistischem Aufwand anpassen kann. Womöglich reicht es, wenn ich noch die ein oder andere Funktion im Script ergänze, damit man den Scrollbereich etwas flexibler definieren kann.
by s248936 (120 points)
by SoSci Survey (305k points)
Ja, danke. Ich sehe zu, dass ich Ihnen bis Mittwoch Genaueres sagen kann.
0 votes
by SoSci Survey (305k points)
edited by SoSci Survey

Für die mit-scrollende Verankerung haben wir inzwischen auch eine Lösung gebaut. Bitte gehen Sie wie folgt vor.

(1) Deaktivieren Sie in Ihren beiden Fragen die Option, dass die Kopfzeile mitscrollen soll. Wählen Sie aus, dass sie einfach oben angezeigt wird.

(2) Ergänzen Sie in Ihrem PHP-Code zwei replace() - einmal für die erste Frage und einmal für das letzte Item auf der Seite.

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

// Neuer Code
$chunk = $chunks[$i];
replace('%questionID%', $chunk[0][0]);
$lastElement = $chunk[count($chunk) - 1];
replace('%lastItem%', id($lastElement[0], $lastElement[1]));

(3) Ergänzen Sie einen PHP-Befehl, damit die passende JavaScript-BIbliothek geladen wird.

library('TitleScroller');

(4) Und jetzt ergänzen Sie unter dem PHP-Code noch ein wenig JavaScript-Code als HTML-Code.

<script>
var scroller = new S2TitleScroller("%questionID%");
scroller.addItem("%lastItem%");
</script>

Wenn das nicht funktioniert, posten Sie bitte die Debug-Information ... womöglich stimmen die Platzhalter noch nicht ganz. Ach ja ... Sie müssen auch den Browser-Cache noch leeren, damit die aktuelle Version der Bibliothek geladen wird.

by s248936 (120 points)
Genau, das steht alles im PHP-Code, außer eben der folgende Teil steht im HTML-Code:

<script>
var scroller = new S2TitleScroller("%questionID%");
scroller.addItem("%lastItem%");
</script>

Es kommt nun folgende Fehlermeldung:

debug()    Inhalt:
[0]    [0]Array [AN04, 24]    [1]Array [AN03, 48]    [2]Array [AN04, 20]    [3]Array [AN03, 8]    [4]Array [AN04, 48]    [5]Array [AN04, 3]    [6]Array [AN03, 17]    [7]Array [AN03, 42]    [8]Array [AN04, 41]    [9]Array [AN04, 39]    [10]Array [AN03, 37]    [11]Array [AN03, 58]    [12]Array [AN04, 36]    [13]Array [AN04, 43]    [14]Array [AN03, 36]
[1]    [0]Array [AN04, 8]    [1]Array [AN04, 12]    [2]Array [AN03, 52]    [3]Array [AN04, 38]    [4]Array [AN03, 59]    [5]Array [AN03, 34]    [6]Array [AN04, 4]    [7]Array [AN03, 32]    [8]Array [AN04, 23]    [9]Array [AN04, 46]    [10]Array [AN03, 56]    [11]Array [AN04, 13]    [12]Array [AN03, 63]    [13]Array [AN03, 43]    [14]Array [AN03, 62]
[2]    [0]Array [AN04, 15]    [1]Array [AN04, 34]    [2]Array [AN03, 28]    [3]Array [AN04, 17]    [4]Array [AN03, 49]    [5]Array [AN03, 27]    [6]Array [AN04, 33]    [7]Array [AN03, 51]    [8]Array [AN03, 18]    [9]Array [AN03, 53]    [10]Array [AN03, 25]    [11]Array [AN04, 51]    [12]Array [AN04, 6]    [13]Array [AN04, 44]    [14]Array [AN03, 55]
[3]    [0]Array [AN04, 10]    [1]Array [AN03, 54]    [2]Array [AN03, 12]    [3]Array [AN03, 4]    [4]Array [AN03, 26]    [5]Array [AN03, 3]    [6]Array [AN03, 10]    [7]Array [AN03, 64]    [8]Array [AN04, 22]    [9]Array [AN03, 6]    [10]Array [AN03, 9]    [11]Array [AN04, 1]    [12]Array [AN03, 22]    [13]Array [AN03, 5]    [14]Array [AN04, 21]
[4]    [0]Array [AN04, 40]    [1]Array [AN04, 37]    [2]Array [AN03, 60]    [3]Array [AN03, 1]    [4]Array [AN03, 40]    [5]Array [AN03, 21]    [6]Array [AN04, 9]    [7]Array [AN04, 28]    [8]Array [AN03, 50]    [9]Array [AN03, 31]    [10]Array [AN03, 45]    [11]Array [AN04, 50]    [12]Array [AN04, 14]    [13]Array [AN04, 26]    [14]Array [AN03, 14]
[5]    [0]Array [AN03, 29]    [1]Array [AN03, 2]    [2]Array [AN04, 18]    [3]Array [AN03, 24]    [4]Array [AN04, 29]    [5]Array [AN03, 13]    [6]Array [AN03, 39]    [7]Array [AN04, 25]    [8]Array [AN04, 7]    [9]Array [AN03, 7]    [10]Array [AN03, 65]    [11]Array [AN04, 47]    [12]Array [AN03, 61]    [13]Array [AN04, 49]    [14]Array [AN03, 47]
[6]    [0]Array [AN03, 20]    [1]Array [AN04, 2]    [2]Array [AN04, 42]    [3]Array [AN03, 38]    [4]Array [AN03, 35]    [5]Array [AN04, 30]    [6]Array [AN03, 33]    [7]Array [AN03, 46]    [8]Array [AN03, 11]    [9]Array [AN03, 44]    [10]Array [AN03, 41]    [11]Array [AN03, 19]    [12]Array [AN03, 16]    [13]Array [AN04, 35]    [14]Array [AN04, 19]
[7]    [0]Array [AN03, 15]    [1]Array [AN03, 23]    [2]Array [AN04, 45]    [3]Array [AN04, 11]    [4]Array [AN04, 31]    [5]Array [AN04, 27]    [6]Array [AN04, 32]    [7]Array [AN03, 57]    [8]Array [AN03, 30]    [9]Array [AN04, 16]    [10]Array [AN04, 5]

debug()    Inhalt: $i = 0 (integer)

Eine Frage an Sie: Wie sehr halten Sie es für sinnvoll oder umsetzbar, ein Live-Meeting via Zoom zu machen, in dem ich Ihnen mein Bildschirm teile?
by SoSci Survey (305k points)
Danke, jetzt fehlt noch die Debug-Information von dem $chunk-Teil (das dritte debug()) - wird da noch etwas angezeigt?

> Wie sehr halten Sie es für sinnvoll oder umsetzbar, ein Live-Meeting via Zoom zu machen, in dem ich Ihnen mein Bildschirm teile?

Heute Nacht zwischen 3:00 und 3:15 Uhr hätte ich vielleicht noch ein paar freie Minuten für solchen Luxus. Also ... nein, eher nicht ;)

Aber Sie können mir mitteilen, wie der Link zum Fragebogen ist und mir (hier, formlos) gestatten, dass ich mich einmal direkt in das Projekt einloggen darf. Wenn Sie mir dann noch sagen, in welchem Fragebogen und auf welcher Seite ich nachsehen soll, kann ich es mir einmal live ansehen.
by s248936 (120 points)
Ok, ich gestatte Ihnen hiermit, dass Sie sich einmalig in das Projekt einloggen können.
Fragebogen: base
Seite: 3

https://www.soscisurvey.de/antinomien/

Eine Frage noch zu dieser Warnung, auch auf Seite 3:
Warnung
Bitte beachten Sie, dass die von random() oder shuffle() erzeugten Zufallswerte nicht automatisch im Datensatz gespeichert werden. Zum Speichern können Sie ggf. die Funktion put() verwenden.

Also die Antworten werden beim Ausfüllen schon richtig abgespeichert im Datensatz, deshalb verstehe ich den Sinn dieser Warnung nicht. Welche Zufallswerte sind denn damit gemeint?
by SoSci Survey (305k points)
Okay ... ich musste ein wenig suchen ... das Problem war die Kombination dieser beiden Zeilen:

$i = loopPage(count($chunks));
...
foreach ($chunks[$i] as $i => $item) {

Da wird die Variable $i für zwei unterschiedliche Dinge verwendet - und die zweite Zeile überschreibt das $i aus der ersten Zeile. Ich habe das zweite $i mal durch $k ersetzt.

Außerdem musste ich die separate Anzeige des Titels noch ändern, sodass der Titel nun gemeinsam mit dem ersten Item angezeigt wird. Sonst arbeitet die Lösung zum Scrollen nicht.

Stellen Sie sicher, dass AN03 und AN04 dieselben Fragetexte eingetragen haben.

> Also die Antworten werden beim Ausfüllen schon richtig abgespeichert im Datensatz, deshalb verstehe ich den Sinn dieser Warnung nicht. Welche Zufallswerte sind denn damit gemeint?

Wenn Sie nachher wissen wollten, in welcher Reihenfolge die Items angezeigt werden, und welche zusammen auf einer Seite, dann wäre diese Information im Datensatz nicht verfügbar.

In Ihrem Fall werden Sie das wohl auch nicht brauchen. Aber es gab schon Fälle, wo Nutzer:innen ihre experimentelle Variation per shuffle() erledigt hatten. Und als die Gruppenzuordnung dann nicht im Datensatz auftauchte ... das wünscht man eigentlich niemandem.
by s248936 (120 points)
Liebes Support-Team,

das klappt nun und die Umfrage ist Online. Ich bedanke mich ganz herzlich für Ihre tolle Unterstützung. Ich bin wirklich sehr begeistert von Ihrer Hilfe. Das werde ich auch so in meinem Umfeld weitergeben. Nochmals vielen Dank an das Team.

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

...