0 votes
in SoSci Survey (dt.) by s104288 (210 points)

Guten Tag,

Ich habe in meinem Fragebogen eine individuelle Antwortprüfung einprogrammiert, die folgendermaßen lautet:

if (value('PD11_01') > value('PD02_01') + value('PD03_01') + value('PD04_01')) {
  repeatPage('info101');
}

if (value('PD11_01') < value('PD02_01') + value('PD03_01') + value('PD04_01')) 
{
  repeatPage('info99');
}

Die Prüfung funktioniert in dem Sinne problemlos, dass dem Befragten nun angezeigt wird, ob der bei PD11 genannte Wert über- oder unterschritten wird (was nicht sein soll).
Mein Problem ist aber, dass mir als Fehler angezeigt wird, wenn der Befragte keine Zahl in eines der Fenster einträgt, die Frage also nicht mehr komplett übersprungen werden kann.

Wie kann ich dies in der Programmierung beheben?

Vielen Dank und freundliche Grüße

by SoSci Survey (308k points)
> Mein Problem ist aber, dass mir als Fehler angezeigt wird, wenn der Befragte keine Zahl in eines der Fenster einträgt, die Frage also nicht mehr komplett übersprungen werden kann.

Wie lautet die Fehlermeldung denn?
by s104288 (210 points)
Es sind 2 Fehlermeldungen.

Die erste lautet:
Im PHP-Code trat ein Fehler auf.

Fehler im Fragebogen: A non-numeric value encountered
Zeile: 3

PHP-Code

001 namespace s2survey\questionnaire\environment;
002
003 if (value('PD11_01') > value('PD02_01') + value('PD03_01') + value('PD04_01')) {
004   {
005   repeatPage('info101');
006   return 'repeat';

Fehler im Fragebogen: A non-numeric value encountered
Zeile: 3

PHP-Code

001 namespace s2survey\questionnaire\environment;
002
003 if (value('PD11_01') > value('PD02_01') + value('PD03_01') + value('PD04_01')) {
004   {
005   repeatPage('info101');
006   return 'repeat';

Fehler im Fragebogen: A non-numeric value encountered
Zeile: 3

PHP-Code

001 namespace s2survey\questionnaire\environment;
002
003 if (value('PD11_01') > value('PD02_01') + value('PD03_01') + value('PD04_01')) {
004   {
005   repeatPage('info101');
006   return 'repeat';

Die zweite lautet:
Im PHP-Code trat ein Fehler auf.

Fehler im Fragebogen: A non-numeric value encountered
Zeile: 3

PHP-Code

001 namespace s2survey\questionnaire\environment;
002
003 if (value('PD11_01') < value('PD02_01') + value('PD03_01') + value('PD04_01'))
004 {
005   {
006   repeatPage('info99');

Fehler im Fragebogen: A non-numeric value encountered
Zeile: 3

PHP-Code

001 namespace s2survey\questionnaire\environment;
002
003 if (value('PD11_01') < value('PD02_01') + value('PD03_01') + value('PD04_01'))
004 {
005   {
006   repeatPage('info99');

Fehler im Fragebogen: A non-numeric value encountered
Zeile: 3

PHP-Code

001 namespace s2survey\questionnaire\environment;
002
003 if (value('PD11_01') < value('PD02_01') + value('PD03_01') + value('PD04_01'))
004 {
005   {
006   repeatPage('info99');

Ich habe nun zwischenzeitlich eine Antwortpflicht für die betroffenen 4 Fragen eingebaut, wodurch ich das Problem umgehen kann.
Nichtsdestotrotz haben Sie möglicherweise eine bessere Idee, wie ich mir in diesem Fall die Antwortpflicht sparen kann.

Vielen Dank und freundliche Grüße

1 Answer

0 votes
by SoSci Survey (308k points)
selected by s104288
 
Best answer

Fehler im Fragebogen: A non-numeric value encountered

Prinzipiell können Sie das Ergebnis von value() immer in eine Zahl verwandeln, wenn Sie ein (int) davor setzen. Das nennt sich "type casting".

if ((int)value('PD11_01') < (int)value('PD02_01') + (int)value('PD03_01') + (int)value('PD04_01')) 

In diesem Fall würden die leeren Felder als "0" gerechnet. Womöglich reicht das für Ihre Anwendung bereits aus?

by s104288 (210 points)
Ja perfekt, genau danach habe ich gesucht. 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

...