0 votes
in SoSci Survey (dt.) by s303917 (220 points)
edited by SoSci Survey

Sehr geehrtes SoSci Survey-Team,

ich habe ein Problem bei der Implementierung meines Fragebogens und hoffe auf Ihre Unterstützung. In meinem Fragebogen wird auf Seite 2 eine Länderfrage (A007) gestellt, die die Teilnehmenden auffordert, ihr aktuelles Land anzugeben. Basierend auf der Antwort möchte ich am Ende des Fragebogens (Seite 11) einen individuellen Gutscheincode ausspielen, der aus einem spezifischen Zufallsgenerator (z. B. voucher_DE, voucher_FR etc.) gezogen wird.

Mein Ansatz:

  1. Speicherung der Länderantwort:
    Auf Seite 2 speichere ich die Antwort der Länderfrage mithilfe des folgenden Codes:
    put('country', value('A007'));

  2. Anzeige des Gutscheincodes:
    Auf Seite 11 rufe ich die gespeicherte Variable country ab und ziehe den passenden Code aus den Zufallsgeneratoren. Der PHP-Code lautet:
    $country = value('country');


if ($country == 1) {
    $voucher = value('voucher_DE');
} elseif ($country == 2) {
    $voucher = value('voucher_FR');
} elseif ($country == 3) {
    $voucher = value('voucher_ES');
} elseif ($country == 4) {
    $voucher = value('voucher_IT');
} elseif ($country == 5) {
    $voucher = value('voucher_GB');
} else {
    $voucher = 'Kein Code verfügbar';
}

if (!empty($voucher)) {
    put('<p>Ihr Gutscheincode lautet: <strong>' . htmlspecialchars($voucher) . '</strong></p>');
} else {
    put('<p>Leider ist kein Gutscheincode verfügbar.</p>');
}

Das Problem:

Trotz des Codes treten folgende Probleme auf:

  1. Auf Seite 11 erhalte ich die Fehlermeldung:
    „Die Variable country gibt es in diesem Projekt nicht (siehe Variablen-Übersicht).“
  2. Zusätzlich wird der Text innerhalb der Funktion put() fälschlicherweise als Variablenname interpretiert, was zu der Meldung führt:
    „In der Funktion put() wurde der Variablenname

    Leider ist kein Gutscheincode verfügbar.

    angegeben. Es existiert keine Variable mit dieser Kennung.“

Meine Fragen:

  1. Woran könnte es liegen, dass die Variable country auf Seite 11 nicht verfügbar ist, obwohl sie auf Seite 2 mit put() gespeichert wurde?
  2. Gibt es eine alternative Methode, um die Länderantwort dauerhaft zu speichern und sie auf einer späteren Seite im PHP-Code zu verwenden?
  3. Wie kann ich sicherstellen, dass der Text in put() korrekt als HTML ausgegeben wird und nicht als Variablenname interpretiert wird?

Vielen Dank für Ihre Hilfe,

Leon

1 Answer

0 votes
by SoSci Survey (330k points)

Auf Seite 2 speichere ich die Antwort der Länderfrage mithilfe des folgenden Codes:
put('country', value('A007'));

Die Antwort der Länderfrage ist bereits in A007 gespeichert. Das Kopieren in eine interne Variable scheint mir hier nicht zielführend, und wenn Sie keine Variable mit der Kennung (!) "country" angelegt haben, erscheint die genannte Fehlermeldung.

$country = value('country');

Verwenden Sie hier bitte

$country = value('A007');

Sie können die Variable A007 auch nach "country" umbenennen. Das können Sie im "Variablen" Karteireiter der Frage A007 erledigen.

if ($country == 1) {
    $voucher = value('voucher_DE');
}

Ich vermute, es gibt auch keine Variable "voucher_DE"? Falls Ihr Zufallsgenerator RG01 heißt, würde der folgende Code evtl. eher das sein, was Sie suchen:

if ($country == 1) {
    question('RG01');
    $voucher = value('RG01');
}

Woran könnte es liegen, dass die Variable country auf Seite 11 nicht verfügbar ist, obwohl sie auf Seite 2 mit put() gespeichert wurde?

Daran, dass es eine solche Variable im Datensatz gar nicht gibt.

Wie kann ich sicherstellen, dass der Text in put() korrekt als HTML ausgegeben wird und nicht als Variablenname interpretiert wird?

Verwenden Sie die korrekte Funktion html() statt put().

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

...