0 votes
in SoSci Survey (dt.) by s261495 (170 points)
edited by SoSci Survey

Hallo!

Ich habe eine Frage zum Anzeigen personalisierter Infos in einem Fragebogen.

Konkret möchte ich den Namen einer Person sowie die Teilgruppe, der die Person angehört, auf jeweils einer Seite im Fragebogen anzeigen lassen. Die Infos dazu habe ich in einer Excel-Tabelle gespeichert.

Bisher habe ich unter "Adressen hinzufügen" --> "Import per CSV-Datei" eine Excel-Datei mit folgenden Testdaten importiert:
Email,frstname,subgroup

annegret@example.com,Anne,nurse
bertram@example.com,Bert,teacher
caroline@example.com,Caro,doctor
daniel@example.com,Dani,canteen

Im Anschluss habe ich Serienmails erstellt und eine Datei für den Import individueller Versandzeitpunkte mit folgenden Testdaten hochgeladen:

time,Email,ID,frstname,subgroup
31.05.24 14:00,annegret@example.com,1,Anne,nurse
31.05.24 14:01,bertram@example.com,2,Bert,teacher
31.05.24 14:02,caroline@example.com,3,Caro,doctor
31.05.24 14:03,daniel@example.com,4,Dani,canteen

Meine Idee war es, die Informationen zu Name und Teilgruppe über den Befehl panelData() im Fragebogen anzeigen zu lassen.
Ich habe deshalb folgenden PHP-Code auf der ersten Seite des Fragebogens eingefügt:

$data = panelData();
if ($data === null) {

 text('XX01');
 buttonHide();
 pageStop();
}
$firstname = $data[firstname];
replace('%firstname%', $firstname);

XX01 ist dabei die Kennung des Textes, der die Fehlermeldung anzeigen soll.

Unter dem PHP-Code steht folgender Text, mit dem ich den Namen anzeigen lassen möchte:

Hello %firstname%

Wenn ich nun allerdings die Serienmail an mich versende (ich habe dazu natürlich die Testdaten gelöscht und jeweils eine Datei mit meiner Mail-Adresse und den weiteren Angaben unter "Adressen hinzufügen" und "Individuelle Versandzeitpunkte importieren" hochgeladen) und auf den Link in der Mail klicke, erscheint folgende Fehlermeldung:

Questionnaire Error (page 1)

An error occured while creating the questionnaire page. Please inform the project administrators about the problem via email to ... and include a copy of the error message below. Thank you very much.

There is an error in the PHP code:
Questionnaire Error: Uncaught Error: Undefined constant "s2survey\questionnaire\environment\firstname" in /var/www/s2survey/html/s2survey/phpcode/PHPCodeExecutor.php(547) : eval()'d code:10 Stack trace: #0 /var/www/s2survey/html/s2survey/phpcode/PHPCodeExecutor.php(547): eval() #1 /var/www/s2survey/html/s2survey/questionnaire/php/PHPCodeExecutorQnr.php(71): s2survey\phpcode\PHPCodeExecutor->runCode() #2 /var/www/s2survey/html/inc/QuestionnairePHP.php(613): s2survey\questionnaire\php\PHPCodeExecutorQnr->runCode() #3 /var/www/s2survey/html/s2survey/questionnaire/QuestionnaireElement.php(494): QuestionnairePHP->runElement() #4 /var/www/s2survey/html/s2survey/questionnaire/QnrPage.php(1569): s2survey\questionnaire\QuestionnaireElement->run() #5 /var/www/s2survey/html/s2survey/questionnaire/QnrPage.php(1635): s2survey\questionnaire\QnrPage->runContent() #6 /var/www/s2survey/html/inc/InterviewCase.php(1537): s2survey\questionnaire\QnrPage->runCreate() #7 /var/www/s2survey/html/inc/Interviewer.php(664): InterviewCase->createQuestionnairePage() #8 /var/www/s2survey/html/inc/Interviewer.php(836): Interviewer->handleCreate() #9 /var/www/s2survey/html/inc/Interviewer.php(1965): Interviewer->handleInterview() #10 /var/www/s2survey/html/discefrn/index.php(4): Interviewer::run() #11 {main} thrown
line: 10

This is an error which dows not allow to show the PHP code.

Könnt ihr mir vielleicht sagen, wo mein Fehler liegt, bzw. was ich ändern muss?

Vielen Dank schon mal und liebe Grüße!

1 Answer

0 votes
by SoSci Survey (327k points)

Wie so oft sind es in der Programmierung die kleinen Dinge. Anführungszeichen zum Beispiel: Sie sagen PHP, dass ein Text wirklich ein Text ist und kein Befehl.

Questionnaire Error: Uncaught Error: Undefined constant "s2survey\questionnaire\environment\firstname"

Bezieht sich auf diese Zeile:

$firstname = $data[firstname];

Und will Ihnen sagen, dass "firstname" kein Name einer Konstante oder Funktion ist, also müsste es heißen:

$firstname = $data[' firstname'];

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

...