0 votes
in SoSci Survey (dt.) by s282590 (115 points)

Ich möchte aus einem Kontingent von 12 Bildern immer 4 Bilder pro Person abfragen lassen mit der Frage "Horizontaler Auswahl".
Dafür habe ich einen Zufallsgenerator erstellt (Gleichverteilung in abgeschlossenen Fragebögen) und meine 4 Bilder erscheinen immer.
Aber wenn jemand zuvor eine "2" als Antwort bei der Frage ausgewählt hat, dann bleibt der cursor in der darauffolgenden Frage auch auf "2" stehen. Wie lässt sich das ändern?
Das ist mein php-Code:

$fragen = valueList('B016', NULL, 'label');

$kennung = loopPage($fragen);
question($kennung);

by SoSci Survey (311k points)
Was sagt denn die Debug-Information auf der Seite?

> immer 4 Bilder pro Person

Zeigt die horizontale Auswahl alle 4 Bilder oder nur einen Teil davon?
by s282590 (115 points)
Die Debug-Information sagt nichts, bzw. dass der FragenTyp eben auch wiederholt wird.. also die Bilder wechseln sich wie gesagt habe und es zeigt alle 4 Bilder auf unterschiedlichen Seiten, nur die vorherige Antwort-Auswahl ist gleichbleibend und startet nicht von neu. Danke!
by SoSci Survey (311k points)
Bitte posten Sie die vollständige Debug-Information (https://www.soscisurvey.de/help/doku.php/de:create:debugging) von zwei aufeinanderfolgenden Seiten, danke.
by s282590 (115 points)
[Verarbeitung]    Erstelle Seite 6 in Fragebogen base
[Inhalt]    Erstelle Frage B002
[Inhalt]    Erstelle Frage B016
[Information]    Vom Zufallsgenerator B016 wurden folgende Codes gezogen: 2, 3, 4, 5
[Information]    valueList(B016) = Array [B016x01:B005, B016x02:B006, B016x03:B007, ...]
[Information]    loopPage() wiederholt die Seite 6 nun 4 mal, beginnend mit dem Wert B005
[Inhalt]    Erstelle Frage B005

[Information]    Die Verweildauer auf Seite 6 war 76 Sekunden
[Verarbeitung]    Lese Antworten von Seite 6
[Information]    Keine Antwort für B002
[Information]    Fragen bisher zu 0% vollständig beantwortet
[Information]    Entsprechend der vorher festgelegten Seitenabfolge wird Seite 6 [] angezeigt
[Verarbeitung]    Erstelle Seite 6 in Fragebogen base
[Inhalt]    Erstelle Frage B002
[Inhalt]    Erstelle Frage B016
[Information]    Der Zufallsgenerator B016 wurde bereits zu einem früheren Zeitpunkt im Interview verwendet, die gezogenen Codes bleiben unverändert: 2, 3, 4, 5
[Information]    valueList(B016) = Array [B016x01:B005, B016x02:B006, B016x03:B007, ...]
[Information]    loopPage() i=B006
[Inhalt]    Erstelle Frage B006
Fragebogen [base] – Seite 6[base] Fragebogen
Seite 6
Seitenabfolge: 6, 6, 6, ...
Seite:
Variable: =
B002

Ich würde gerne, dass die Frage nicht mit wiederholt wird, bzw. die Antwort von davor, nicht mit auf die nächste Seite genommen wird
by SoSci Survey (311k points)
Die 4 Fragen, deren Abfolge rotiert werden soll, sind B005 bis B008, korrekt? Was hat es denn mit B002 auf sich?

Wenn Sie noch folgende Zeilen einfügen, was ändert sich denn an der Anzeige? auf Seite 2?

debug(value('B005', 'code:ifany'));
debug(value('B006', 'code:ifany'));
debug(value('B007', 'code:ifany'));
debug(value('B008', 'code:ifany'));
by s282590 (115 points)
Die 12 Bilder, die rotiert werden sollen, sind B004-B015
B002 ist die Fragestellung die für alle Bilder gleich ist
Wenn ich die Codes einfüge, wird gesagt, dass die Variable nicht gefunden wird

1 Answer

+1 vote
by SoSci Survey (311k points)

B002 ist die Fragestellung die für alle Bilder gleich ist

Wenn Sie eine Frage im Frgebogen mehrfach abfragen möchten, benötigen Sie im Fragenkatalog mehrere Kopien der Frage. Falls Sie dieselbe Frage mehrfach anzeigen, passiert das, was SIe beschrieben haben: Die Frage wird mit der vorherigen Auswahl erneut angezeigt, und die neue Antwort überschreibt die vorherige Antwort.

In Ihrem Fall würde ich empfehlen, dass Sie Stimulus und Frage zusammen in den Zufallsgenerator schreiben (ich habe hier die 4 Kopien von B002 einmal C001 bis C004 genannt), also ...

B005,C001
B006,C002
B007,C003
B008,C004

Und den PHP-Code würden Sie wie folgt ein wenig abwandeln:

$entries = getItems('B016', 'all');

$entry = loopPage($entries);
$data = value(id('B016', $entry), 'csv');

question($data[1]);
question($data[0]);
by s282590 (115 points)
Die Frage funktioniert jetzt, danke!
Aber danach kommt immer eine Fehlermeldung:

In der Funktion id() wurde auf Variablen des Elements B016 verwiesen. Dieses Element hat keine Variable(n) Nr. 5
Fehler im Fragebogen (Seite 6)
Für die Funktion value() wurde anstatt einer Frage- oder Item-Kennung ein Parameter vom Typ NULL angegeben:
Fehler im Fragebogen (Seite 6)
Im Befehl question() wurde keine Frage-Kennung angegeben.
Fehler im Fragebogen (Seite 6)
Im Befehl question() wurde keine Frage-Kennung angegeben.
Fehler im Fragebogen (Seite 6)
Im PHP-Code trat ein Fehler auf.

Fehler im Fragebogen: Uninitialized string offset 1
Zeile: 8

PHP-Code

005 $entry = loopPage($entries);
006 $data = value(id('B016', $entry), 'csv');
007
008 question($data[1]);
009 question($data[0]);
010 return 'ok';

Fehler im Fragebogen: Uninitialized string offset 0
Zeile: 9

PHP-Code

006 $data = value(id('B016', $entry), 'csv');
007
008 question($data[1]);
009 question($data[0]);
010 return 'ok';

Es wurden alle 4 Bilder abgespielt und jetzt müsste Seite 7 folgen, wieso ist das jetzt so?
by SoSci Survey (311k points)
> In der Funktion id() wurde auf Variablen des Elements B016 verwiesen. Dieses Element hat keine Variable(n) Nr. 5

Scheinbar will SoSci Survey noch eine fünfte Frage anzeigen. Wenn Sie unter dem getItems()

debug($entries);

ergänzen, was wir denn dann angezeigt?
by s282590 (115 points)
Fehler im Fragebogen (Seite 6)
In der Funktion id() wurde auf Variablen des Elements B016 verwiesen. Dieses Element hat keine Variable(n) Nr. 5
Fehler im Fragebogen (Seite 6)
Für die Funktion value() wurde anstatt einer Frage- oder Item-Kennung ein Parameter vom Typ NULL angegeben:
Fehler im Fragebogen (Seite 6)
Im Befehl question() wurde keine Frage-Kennung angegeben.
Fehler im Fragebogen (Seite 6)
Im Befehl question() wurde keine Frage-Kennung angegeben.
Fehler im Fragebogen (Seite 6)
Im PHP-Code trat ein Fehler auf.

Fehler im Fragebogen: Uninitialized string offset 1
Zeile: 9

PHP-Code

006 $entry = loopPage($entries);
007 $data = value(id('B016', $entry), 'csv');
008
009 question($data[1]);
010 question($data[0]);
011 return 'ok';

Fehler im Fragebogen: Uninitialized string offset 0
Zeile: 10

PHP-Code

007 $data = value(id('B016', $entry), 'csv');
008
009 question($data[1]);
010 question($data[0]);
011 return 'ok';

das kommt dann..
ago by SoSci Survey (311k points)
Haben Sie das debug() direkt unter getItems(), also in der zweiten Zeile Ihres Codes, ergänzt? Dann sollte eigentlich oberhalb der Fehlermeldungen noch etwas anderes angezeigt werden.

> Uninitialized string offset 1

Diesen Fehler können wir wie folgt mal abfangen:

$entries = getItems('B016', 'all');
debug($entries);

$entry = loopPage($entries);
$data = value(id('B016', $entry), 'csv');

if (count($data) > 1) {
  question($data[1]);
  question($data[0]);
}
ago by s282590 (115 points)
Hinweis (Seite 6)
Debug-Information für $entries:
0:1, 1:2, 2:3, 3:4, 4:5, 5:6, 6:7, 7:8, 8:9, 9:10, 10:11, 11:12
Fehler im Fragebogen (Seite 6)
In der Funktion id() wurde auf Variablen des Elements B016 verwiesen. Dieses Element hat keine Variable(n) Nr. 5
Fehler im Fragebogen (Seite 6)
Für die Funktion value() wurde anstatt einer Frage- oder Item-Kennung ein Parameter vom Typ NULL angegeben:
Fehler im Fragebogen (Seite 6)
Im PHP-Code trat ein Fehler auf.

Fehler im Fragebogen: count(): Argument #1 ($value) must be of type Countable|array, string given
Zeile: 10

PHP-Code

007 $entry = loopPage($entries);
008 $data = value(id('B016', $entry), 'csv');
009
010 if (count($data) > 1) {
011   question($data[1]);
012   question($data[0]);
013 }

Das kommt dann als rote Meldung.
Das sind die debug-Informationen:     Die Verweildauer auf Seite 6 betrug zusätzliche 1 Sekunden
[Verarbeitung]    Lese Antworten von Seite 6
[Information]    Keine Antwort für B002
[Information]    Fragen bisher zu 0% vollständig beantwortet
[Information]    Entsprechend der vorher festgelegten Seitenabfolge wird Seite 6 [] angezeigt
[Verarbeitung]    Erstelle Seite 6 in Fragebogen base
[Inhalt]    Erstelle Frage B016
[Information]    Der Zufallsgenerator B016 wurde bereits zu einem früheren Zeitpunkt im Interview verwendet, die gezogenen Codes bleiben unverändert: 10, 11, 12, 1
debug()    Inhalt: 0:1, 1:2, 2:3, 3:4, 4:5, 5:6, 6:7, 7:8, 8:9, 9:10, 10:11, 11:12
[Information]    loopPage() i=5
ago by s282590 (115 points)
Also das Problem ist, dass die seite 12x wiederholt wird, wieso?
debug()    Inhalt: 0:1, 1:2, 2:3, 3:4, 4:5, 5:6, 6:7, 7:8, 8:9, 9:10, 10:11, 11:12
[Information]    loopPage() wiederholt die Seite 6 nun 12 mal, beginnend mit dem Wert 1
[Information]    value("B016x01") = ["B012","B024"]
[Inhalt]    Erstelle Frage B024
[Inhalt]    Erstelle Frage B012
ago by SoSci Survey (311k points)
> Also das Problem ist, dass die seite 12x wiederholt wird, wieso?

Offensichtlich haben Sie in B016 12 Items - wobei ich nachsehen müsste, was getItems() bei Zufallsgenerator liefert - das sind wahrscheinlich die hinterlegten Codes. Ich ging bisher aufgrund der obigen Kommunikation davon aus, dass es 4 wären.

B005,C001
B006,C002
B007,C003
B008,C004

Aber natürlich können wir auch mit mehr arbeiten. Bitte ändern Sie den Code wie folgt ab:

$entries = valueList('B016');

$entry = loopPage(array_keys($entries));
$data = value($entry, 'csv');

question($data[1]);
question($data[0]);

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

...