0 votes
in SoSci Survey (dt.) by s168788 (130 points)
edited by SoSci Survey

Liebes SoSci Survey Team,

ich möchte zum Abschluss meines Fragebogens eine Probandenkennung generieren lassen. Diese stellt sich auf S.26 wie folgt zusammen:

IC01_01 Erster Buchstabe des Vornamens (z.B. M bei Martha)	
IC01_02 Zweiter Buchstabe des Geburtsortes (z.B. E bei Berlin)	
usw. bis IC01_05

Um demr Probandenin den Code in vollständiger Form anzuzeigen, nutzte ich den HTML Code, der auf Ihrer Website zum Thema individueller Code angegeben ist (funktioniert).

Jetzt möchte ich diesen zusammengesetzten Code (IC01_01 bis IC01_05) als interne Variable speichern. Dazu habe ich im Fragebogen eine Variable IC06_01 (Interne Variable namens "VpnCode") erstellt. Damit die Variable weiß, woraus sie besteht, habe ich den PHP-Code (ebenfalls auf S.26) in den Fragebogen eingesetzt:

$code = implode(valueList('IC01'));
put('IC06_01', $code);

(Stimmt/reicht das?)

Und jetzt das Problem: Ich möchte demr Probandin auf S.27 einen weiteren personalisierten Code mitteilen, der aus einem fixen Surfix und dem Code besteht ("PSYCHOSTUDIEXY+persönlicher Code")

Ich habe Verschiedenstes probiert und weiß leider überhaupt nicht, wie und wo und in welcher Schreibweise/mit welchem Befehl ich die interne Variable im Fließtext so einbinden kann.

Ich hoffe sehr, dass das trotz sehr begrenztem IT-Verständnis verständlich ausgedrückt war.
Vielen, vielen Dank!

1 Answer

+1 vote
by SoSci Survey (306k points)
selected by s168788
 
Best answer

(Stimmt/reicht das?)

Funktioniert es denn?

Probleme würde ich hier nur erwarten, wenn man die Seite neu lädt: Dann wird der Code aus IC06_01 beim valueList() nämlich auch mitgenommen und hinten nochmal angehängt.

Lösung 2 demnach:

$code = implode(valueList('IC01', [1,2,3,4,5]));
put('IC06_01', $code);

Oder weniger elegant Lösung 3:

$code = value('IC01_01').value('IC01_02').value('IC01_03').value('IC01_04').value('IC01_05');
put('IC06_01', $code);

Ich habe Verschiedenstes probiert und weiß leider überhaupt nicht, wie und wo und in welcher Schreibweise/mit welchem Befehl ich die interne Variable im Fließtext so einbinden kann.

Am einfachsten mit einem Platzhalter:

replace('%code%', $code);

Und passend darunter dann z.B. der HTML-Code oder Text

Ihr Code ist <strong>%code%</strong>.
by s168788 (130 points)
edited by s168788
Vielen Dank für die schnelle Hilfe!

Leider klappt es immer noch nicht:

Ich habe nun auf S. 26 im Fragebogen Ihre Lösung 2 als PHP Code eingefügt. (Auf der Seite kommt keine Fehlermeldung).
Dann auf S. 27 wie beschrieben replace('%code%', '$code'); als PHP Code und darunter im Text (HTML) den Platzhalter eingefügt.

Es erscheint im Fragebogen auf S. 27 jetzt anstelle des Codes "$code"

Und wenn ich stattdessen replace('%code%', $code) schreibe kommen folgende Fehlermeldungen:

Fehler im Fragebogen (Seite 27)
Für die Funktion replace() wurden nicht ausreichend Argumente angegeben, 2 Argumente sind zwingend erforderlich. Weitere Details finden Sie in der Anleitung zur Funktion.
Fehler im Fragebogen (Seite 27)
Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Die PHP-Variable $code wurde verwendet, in diesem PHP-Code aber noch nicht definiert (sie enthält noch keinen Wert).

PHP-Code

001 namespace s2survey\questionnaire\environment;
002
003 replace('%code%', $code);
004 return 'ok';
Warnung (Seite 27)
by SoSci Survey (306k points)
PHP-Variablen (also z.B: die Variable $code) sind immer nur innerhalb eines PHP-Blocks gültig.

Sie können das replace() also entweder in denselben Block schreiben wie das put():

$code = implode(valueList('IC01', [1,2,3,4,5]));
put('IC06_01', $code);
replace('%code%', $code);

Oder Sie verwenden in einem späteren Block die interne Variable:

replace('%code%', 'IC06_01', 'response');
by s168788 (130 points)
GELÖST! Auf S. 27 im Fragebogen habe ich

$code = implode(valueList('IC01', [1,2,3,4,5]));
put('IC06_01', $code);

nochmal eingefügt und jetzt klappt es!
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

...