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

+1 vote

Vielen Dank für Ihre Antwort!

Die Fehlermeldung zu valueList() ist nun verschwunden.

Leider bleibt die Fehlermeldung zu setPageOrder()

In der Funktion setPageOrder() wurde ein ungültiger Parameter vom Typ NULL angegeben. Als Parameter sind entweder Strings (Texte) erlaubt oder Arrays, die ausschließlich Strings enthalten.

Hier noch einmal mein Code:

$blockfolge = valueList('RO10');
$blocks = [
  1 => valueList('RO08', null, 'label'),
  2 => valueList('RO09', null, 'label'),
];
$gesamtliste = array_merge(
  $blocks[$blockfolge[0]],
  $blocks[$blockfolge[1]],
);
setPageOrder($gesamtliste, 'SD');
related to an answer for: Fehlermeldung bei Blöcke Rotieren
in SoSci Survey (dt.) by s175109 (200 points)
edited by SoSci Survey
Vielen Dank für Ihre Lösung.
Ich habe den PHP-Code genauso übernommen.

Leider gibt es nun das Problem, dass beide Reihenfolgen hintereinander gezeigt werden und nicht rotiert werden, wie gewollt.

Die Rotation innerhalb der Blöcke funktioniert aber richtig.

ich habe folgenden debug-Code eingefügt:
debug(array_merge($blocks[1], $blocks[2]));
debug(array_merge($blocks[2], $blocks[1]));
debug($gesamtliste);
debug($blocks);

Die Debug-Information dazu ist folgende:

[Inhalt]    Erstelle Frage RO10
[Information]    Vom Zufallsgenerator RO10 wurden folgende Codes gezogen: 1
[Inhalt]    Erstelle Frage RO09
[Information]    Vom Zufallsgenerator RO09 wurden folgende Codes gezogen: 7, 8, 2, 1, 9, 3, 10, 5, 11, 4, 6
[Inhalt]    Erstelle Frage RO08
[Information]    Vom Zufallsgenerator RO08 wurden folgende Codes gezogen: 4, 1, 8, 9, 10, 3, 11, 5, 6, 7, 2
[Information]    Entsprechend setPageOrder() werden nun folgende Seiten gezeigt:
22 [B07], 23 [B08], 17 [B02], 16 [B01], 24 [B09], 18 [B03], 25 [B10], 20 [B05], 26 [B11], 19 [B04], 21 [B06], 8 [A04], 5 [A01], 12 [A08], 13 [A09], 14 [A10], 7 [A03], 15 [A11], 9 [A05], 10 [A06], 11 [A07], 6 [A02]
debug()    Inhalt: RO08x01A04, RO08x02A01, RO08x03A08, RO08x04A09, RO08x05A10, RO08x06A03, RO08x07A11, RO08x08A05, RO08x09A06, RO08x10A07, RO08x11A02, RO09x01B07, RO09x02B08, RO09x03B02, RO09x04B01, RO09x05B09, RO09x06B03, RO09x07B10, RO09x08B05, RO09x09B11, RO09x10B04, RO09x11B06
debug()    Inhalt: RO09x01B07, RO09x02B08, RO09x03B02, RO09x04B01, RO09x05B09, RO09x06B03, RO09x07B10, RO09x08B05, RO09x09B11, RO09x10B04, RO09x11B06, RO08x01A04, RO08x02A01, RO08x03A08, RO08x04A09, RO08x05A10, RO08x06A03, RO08x07A11, RO08x08A05, RO08x09A06, RO08x10A07, RO08x11A02
debug()    Inhalt: RO09x01B07, RO09x02B08, RO09x03B02, RO09x04B01, RO09x05B09, RO09x06B03, RO09x07B10, RO09x08B05, RO09xB11, RO09x10B04, RO09x11B06, RO08x01A04, RO08x02A01, RO08x03A08, RO08x04A09, RO08x05A10, RO08x06A03, RO08x07A11, RO08x08A05, RO08x09A06, RO08x10A07, RO08x11A02
debug()    Inhalt: 1[Array], 2[Array]

Laut der Information von SetPageOrder() werden die Blöcke jeweils nur einmal gezeigt. Doch nachdem Block B und dann Block A gezeigt wurden, wird Block A und nochmal Block B gezeigt.
Außerdem wird immer Block B als erstes gezeigt. Obwohl der RO10 die Reihenfolge 1 zieht, bei der Block A als erstes kommen sollte.

Zusätzlich wird auch noch diese Warnung angezeigt:

In setPageOrder() wurde eine Seite "SD" angegeben, die es im Fragebogen nicht gibt.

Ich hoffe, Sie haben noch Zeit, mir bei meinem Problem zu helfen.
> Doch nachdem Block B und dann Block A gezeigt wurden, wird Block A und nochmal Block B gezeigt.

Das kommt daher:

> In setPageOrder() wurde eine Seite "SD" angegeben, die es im Fragebogen nicht gibt.

Sie müssen in setPageOrder() angeben, wo es nach Abarbeiten der Seitenabfolge weitergehen soll. Geben Sie also der Seite nach B11 die Seitenkennung SD (oder was auch immer, sie muss nur in setPageOrder() eingetragen sein).

> Außerdem wird immer Block B als erstes gezeigt.

Was sagt denn:

debug($blockfolge);
Perfekt! das hat schonmal geklappt.

Jetzt fehlt nur noch die Reihenfolge.

debug($blockfolge); zeigt eigentlich abwechselnd Reihenfolge 1 und 2 an
RO10: 1
RO10: 2

auch die Infos von den array_merge() ist richtig.

nur die gesamtliste ist immer die gleiche
Arg ... wenn Sie nur einen Zettel ziehen, müssen Sie natürlich value('RO10') statt valueList('RO10') verwenden. Ich habe das unten im Code nun korrigiert.

Bei valueList() bekommen Sie ein Array und dann macht der Vergleich ==1 wenig Sinn.
Vielen Lieben Dank!!! Es funktioniert. Juhuuuu

Dankeschön für Ihre Hilfe :)

1 Answer

+1 vote
 
Best answer

Im Prinzip ist es korrekt, die Reihenfolge nur über einen Zettel zu ziehen - allerdings müssten Sie den PHP-Code dann wie folgt anpassen:

$blockfolge = value('RO10');
$blocks = [
  1 => valueList('RO08', null, 'label'),
  2 => valueList('RO09', null, 'label'),
];
if ($blockfolge == 1) {
    $gesamtliste = array_merge($blocks[1], $blocks[2]);
} else {
    $gesamtliste = array_merge($blocks[2], $blocks[1]);
}
setPageOrder($gesamtliste, 'SD');
by SoSci Survey (173k points)
selected by s175109
...