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

Ich möchte, dass aus einer Liste zum Ankreuzen, nur die Frageseiten von maximal 3 der angekreuzten Optionen in zufälliger Reihenfolge angezeigt werden. Ist das irgendwie möglich?
Momentan bin ich mit der Filterfunkion soweit, dass alle Frageseiten zu den angekreuzten Objekten angezeigt werden.
Ich würde aber gerne die Fragenanzahl verringer, daher nur maximal 3 weitere Frageseiten und diese in zufälliger Reihenfolge angezeigt.

Bisher habe ich folgendes eingegeben:

$itemliste = getItems('BK01', 'min', 2); // Liste der relevanten Items
debug($itemliste);
shuffle($itemliste);
$itemliste3 = array_slice($itemliste, 0, 3);

Funktioniert aber leider nicht....

Kann mir da jemand helfen?
Danke.

1 Answer

0 votes
by SoSci Survey (328k points)
edited by SoSci Survey

Bitte ergänzen Sie unter Ihrem Code noch ein

debug($itemliste3);

Und vermutlich werden Sie noch ein

registerVariable($itemliste3);

benötigen.

Wenn in dieser Liste das richtige steht, dann posten Sie doch bitte den PHP-Code, den Sie bislang zur Anzeige der folgenden 3 Seiten verwenden. Denn der obige PHP-Code sucht ja erst einmal nur die Codes, zu welchen Items die Fragen gezeigt werden sollen. Er kümmert sich noch nicht um die Anzeige.

Ergänzung

Ich gehe einmal davon aus, dass es von Vorteil wäre, wenn die Seiten/Fragen zu den markierten Optionen in zufälliger Abfolge angezeigt werden. Eine Möglichkeit ist die Verwendung von setPageOrder(). Dafür muss man jeder Seite, die zu einer Option gehört, eine Kennung geben (z.B. K01, K02, u.s.w.) und der Seite, die danach kommt, ebenfalls, z.B. "KX").

Anschließend benötigt man noch eine "Übersetzung" von Options-Nummern in Seiten-Kennungen, z.B.

$seiten = [
  1 => 'K01',
  2 => 'K02',
  3 => 'K03',
  4 => 'K04',
  // u.s.w.
];

Dann erstellt man eine Liste der nun anzuzeigenden Seiten:

$zeigen = [];
foreach ($itemliste3 as $item) {
  $zeigen[] = $seiten[$item];
}

... und übergibt diese an setPageOrder().

setPageOrder($zeigen, 'KX');
by s134393 (120 points)
Jetzt werden die gewünschen Seiten leider gar nicht mehr angezeigt und man springt sofort zu Seite KX.

Hier der Code.
$itemliste = getItems('BK01', 'min', 2); // Liste der relevanten Items
debug($itemliste);
shuffle($itemliste);
$itemliste3 = array_slice($itemliste, 0, 3);
debug($itemliste3);
registerVariable($itemliste3);
$seiten = [
  1 => 'K01',
  2 => 'K02',
  3 => 'K03',
  4 => 'K04',
  5 => 'K05',
  6 => 'K06',
  7 => 'K07',
  8 => 'K08',
  9 => 'K09',
  10 => 'K10',
  11 => 'K11',
  12 => 'K12',];
$zeigen = [];
foreach ($itemliste3 as $item) {
  $zeigen[] = $seiten[$item];
};
setPageOrder($zeigen, 'KX');
by SoSci Survey (328k points)
Was sagt denn die Debug-Information auf dieser Seite? Jetzt und wenn Sie noch ein debug($zeigen) ergänzen?
by s134393 (120 points)
Array (ohne elemente)

wenn ich dann auf weiter und dann wieder zurück gehe funktionierts...
by SoSci Survey (328k points)
Sie haben den PHP-Code schon unter den vorigen gesetzt (in den gleichen PHP-Code Block), ja?
by s134393 (120 points)
Habe die Codes jetzt auf eine eigenen Seite gegeben, jetzt funktioniert alles. Vielen Dank!!!

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

...