0 votes
in SoSci Survey (dt.) by s051613 (140 points)
edited by s051613

Liebes Support-Team,

ich würde gerne die Reihenfolge der Präsentation von 7 Textbausteinen (jeweils mit einer zugehöriger Frage) rotieren. Ich habe dazu den folgenden Code verwendet, den ich in einem anderen Forums-Beitrag gefunden habe:

if (!isset($B1G)) {

$B1Goptions = array(
1 => array('B1G1', 'QG11'),
2 => array('B1G2', 'QG12'),
3 => array('B1G3', 'QG13'),
4 => array('B1G4', 'QG14'),
5 => array('B1G5', 'QG15'),
6 => array('B1G6', 'QG16'),
7 => array('B1G7', 'QG17')
);

$B1Gkeys = array_keys($B1G);

shuffle($B1Gkeys);

$B1G = array();

foreach ($B1Gkeys as $i => $B1Gkey) {
put(id('IV03', $B1Gkey), $i+1);
B1G[] = $B1Goptions[$B1Gkey];
}

registerVariable($B1G);
}

Leider bekomme ich die folgende Fehlermeldung angezeigt: "Fehler im Fragebogen: Cannot use temporary expression in write context", die sich auf die folgende Codezeile bezieht: B1G[] = $B1Goptions[$B1Gkey];

Ich konnte das Problem leider noch nicht identifizieren, geschweige denn lösen. Hat das etwas damit zutun, dass ich versuche Textsteine zu rotieren und deren Reihefolge abzuspeichern?

Ich möchte die Texte und zugehörige Items später auf jeweils aufeinanderfolgenden FB-Seiten präsentieren:

// Seite 1: 1. Textbaustein anzeigen 
text($B1G[0]);
// Seite 2: Frage zum vorher präsentierten Textbaustein anzeigen
question($B1G[0]);
// Seite 5: 2. Textbaustein anzeigen
text($B1G[1]);
// Seite 6: Frage zum vorher präsentierten Textbaustein anzeigen
question($B1G[1]);

(Ich habe eine fixe Sequenz an Kartenblöcken, deren Reihenfolge ich mischen möchte - aus diesem Grund die etwas umständliche Benennung der Arrays)

1 Answer

+1 vote
by SoSci Survey (302k points)

Cannot use temporary expression in write context", die sich auf die folgende Codezeile bezieht: B1G[] = $B1Goptions[$B1Gkey];

Fehlermeldungen beziehen sich meist auf sehr basale Syntaxtfehler.

In der besagten Zeile fehlt einfach das Dollarzeichen ($) vor dem Variablennamen.

Ich möchte die Texte und zugehörige Items später auf jeweils aufeinanderfolgenden FB-Seiten präsentieren:

Das können Sie so machen ... oder Sie verwenden loopPage(), dann brauchen Sie nur eine statt 7 Seiten anzulegen.

by s051613 (140 points)
edited by s051613
Vielen Dank für die rasche Antwort! Nachdem ich den Syntaxfehler behoben habe, und versucht habe, die Textbausteine anzeigen zu lassen, erhalte ich allerdings nun die Meldung:

Code:
´text($B1G[0]);
question($B1G[0]);´

Meldung:
´Für die Funktion text() wurde anstatt einer Kennung ein Parameter vom Typ array angegeben.´

Das Anzeigen der Auswahlfrage funktioniert hingegen. Das Problem scheint darin zu liegen, dass man der Text()-Funktion die Kennung des Textbausteins übergeben sollte, was bei einer Rotation allerdings nicht möglich ist. Sollte ich einen andere PHP-Funktion verwenden, um die Textbausteine anzuzeigen? Oder liegt das Problem darin, dass ich jeweils "Text-Fragen" Paare rotiere? Ich konnte leider kein Beispiel dazu finden.

Die loopPage() - Variante scheint für mich nicht geeignet, da ich die Textbausteine u. Fragen nicht immer auf konsekutiven Seiten anzeigen lassen möchte.
by SoSci Survey (302k points)
Sie haben ja ein Arrays, welches nochmal Arrays enthält. Im "inneren" Array ist 0 der Textbaustein und 1 das Bild. Also...

text($B1G[0][0]);
question($B1G[0][1]);

Für Seite 2 dann

text($B1G[1][0]);
question($B1G[1][1]);

Oder wenn Sie es mit loopPage() machen wollen, dann brauchen Sie nur eine einzige Seite:

$i = loopPage(count($B1G));
text($B1G[$i][0]);
question($B1G[$i][1]);
by s051613 (140 points)
Ahh, natürlich! Das hatte ich nicht verstanden - 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

...