0 votes
in SoSci Survey (dt.) by s104962 (290 points)

Ich habe einen Zufallsgenerator angelegt, der 3 Zettel (3 aus 5 Texten) zieht. Diese gebe ich über PHP Code wie folgt zurück:

$codeFallvignette = valueList('ZU11'); //zieht 3 Zettel und gibt die Zahlen als Array zurück

Jetzt würde ich gerne mit einer IF-Schleife die drei gezogenen Texte anzeigen und dafür nacheinander auf die Arraywerte zurückgreifen.

If ($codeFallvignette == 1)[text('D101');}else if ...

Welche Ergänzung braucht diese Codezeile, um das Array zu händeln?

1 Answer

0 votes
by SoSci Survey (328k points)

$codeFallvignette = valueList('ZU11');

Diese Zeile gibt nur die gezogenen Werte zurück. Damit überhaupt gezogen wird, müssten Sie entweder ZU11 in die Seite ziehen (oberhalb dieses Codes) oder den Zufallsgenerator mit question() oder show() einbinden.

show('ZU11');
$codeFallvignette = valueList('ZU11');

nacheinander auf die Arraywerte zurückgreifen.

Ergänzen Sie bitte einmal debug($codeFallvignette), dann wird die Struktur dieser Variable etwas klarer.

Welche Ergänzung braucht diese Codezeile

Eine Lösung könnte so aussehen:

foreach ($codeFallvignette as $code) {
  if ($code == 1) {
    text('D101');
  } else  if ($code == 2) {
    text('D102');
  } ...
}

Oder wenn Sie die Kennungen der Texte ohnehin im Zufallsgenerator stehen haben;

show('ZU11');
$idFallvignette = valueList('ZU11', NULL, 'label');
foreach ($idFallvignette as $textID) {
  text($textID);
}

Wenn Sie es auf unterschiedlichen Seiten haben wollen, dann eher so:

$textID = value('ZU11x1', 'label');
text($textID);
by s104962 (290 points)
Vielen herzlichen Dank, so hat es geklappt!
Eine Rückfrage noch: kann ich direkt im PHP Code eine neue Seite einführen? Der Code hat so viele Schleifen und Zählvariablen, dass ich ihn unmöglich auf zwei Seiten im SoSci ohne Fehler einzubauen ablegen kann. Cool wäre daher, wenn ich im Code die neue Seite erzwingen könnte.
by SoSci Survey (328k points)
Das wird nicht funktionieren, weil SoSci Survey Seitenweise arbeitet.

Wenn Sie mit demselben Code mehrere Seite anzeigen möchten, wäre loopPage() die Funktion der Wahl. Also statt

foreach ($idFallvignette as $textID) {
  text($textID);
}

Dann z.B.

$textID = loopPage($idFallvignette);
text($textID);

Aber ob es das ist, was Sie haben möchten, kann ich nicht sicher beurteilen.

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

...