0 votes
in SoSci Survey (dt.) by s097987 (200 points)
edited by SoSci Survey

Hallo!
In meiner Erhebung möchte ich einrichten, dass die Teilnehmenden ihre Antworten auf drei offene Textfrage in Fragebogen 1 drei Tage später noch einmal in Fragebogen 2 angezeigt bekommen. Die Fragen sind auf drei unterschiedlichen Seiten und die Fragebögen sind über Serienmail verknüpft. Dazu habe ich folgende PHP Codes eingefügt:

In Fragebogen 1 (auf der Seite nach der eigentlichen Beantwortung)

$key = 'EG01-'.caseSerial();
$Reflektion1 = $key.value('EG01_01');
dbSet($key, $Reflektion1);

$key = 'EG02-'.caseSerial();
$Reflektion2 = $key.value('EG02_01');
dbSet($key, $Reflektion2);

(und entsprechend für die dritte Frage)

In Fragebogen 2 (auf der entsprechenden Seite)

$key = 'EG01-'.caseSerial();
$Reflektion1 = dbGet($key);
replace('%texteingabe%', $Reflektion1[0]);

$key = 'EG02-'.caseSerial();
$Reflektion2 = dbGet($key);
replace('%texteingabe2%', $Reflektion2[0]);

(und entsprechend für die dritte Frage)

Dennoch erscheint in Fragebogen 2 statt des Texts lediglich %texteingabe% oder %texteingabe2% unter dem Einleitungstext.

Ich habe schon verschiedene Varianten des PHP Codes ausprobiert (auch die aus dem Beispiel in "Antwort in späteren Fragebögen anzeigen" oder von der Forumsdiskussion "Über dbGet an Daten in DB mit verschiedenen Schlüssel Präfixen kommen", aber ich möchte ja lediglich, dass nur der entsprechende Teilnehmer auch seine Antwort wieder sieht).

Wo ist der Fehler?

Vielen Dank für die Hilfe bereits im Voraus!

1 Answer

+1 vote
by SoSci Survey (304k points)
edited by SoSci Survey

Suboptimal scheint mir folgende Zeile:

$Reflektion1 = $key.value('EG01_01');

Ich sehe keinen Grund, warum der $key Teil des Wertes sein sollte.

Dennoch erscheint in Fragebogen 2 statt des Texts lediglich %texteingabe% oder %texteingabe2% unter dem Einleitungstext.

Haben Sie das replace() vor dem Text aufgerufen/eingebunden? Wenn nicht, dann schieben Sie es bitte weiter nach oben.

dbGet() liefert immer ein Array. Und eigentlich bietet sich dieses an, um gleich alle 3 Werte zu speichern:

$key = caseSerial();
dbSet($key, array(
  value('EG01_01'),
  value('EG02_01')
));

Und entsprechend einfacher im Abruf:

$key = caseSerial();
$data = dbGet($key);
replace('%texteingabe%', $data[0]);
replace('%texteingabe2%', $data[1]);

Das nur eben vor dem Text mit den Platzhaltern.

by s097987 (200 points)
Herzlichen Dank für die schnelle Hilfe!
Funktioniert einwandfrei (im ersten PHP Code fehlt am Ende noch eine Klammer, falls sie diese noch einfügen wollen, falls andere Nutzer die gleiche Frage haben).
by SoSci Survey (304k points)
Stimmt, danke :)

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

...