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 (305k 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)
Vielen Dank.
Mit der richtigen Anzeige der Codes funktioniert es jetzt soweit.
Hier der PHP-Code dazu:

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

Wie kommt man dann zur Anzeige der Seiten?
Vielen Dank.
by SoSci Survey (305k points)
Das kommt darauf an, was Sie wie anzeigen möchten. Was haben Sie denn pro Item auf einer (eigenen) Seite?
by s134393 (120 points)
Pro Item habe ich dann wiederum 8 Items auf den einzelnen Seiten.
by SoSci Survey (305k points)
Sind diese 8 Items in jeweils eine Frage gebündelt? Oder sind es mehrere Fragen, die Sie für jede angekreuzte Option zeigen möchten?
by s134393 (120 points)
Es sind mehrere Fragen, auf je einer eigenen Seite, die ich für jede angekreuzte Option zeigen möchte.
by SoSci Survey (305k points)
Schade, sonst wäre es (besonders) einfach gewesen :)

Ich ergänze oben gleich eine Möglichkeit, das zu realisieren.
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 (305k 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 (305k 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

...