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

Vielen Dank für die Hilfe! Die Vorschläge habe ich umgesetzt. Allerdings bringt er mir immer noch eine Fehlermeldung. Egal ob ich die Fragebögen im Debug Modus laufen lassen oder in einem echten Test-Durchlauf von Anfang an (mittels Wegwerf-E-Mail-Adressen).

Wo liegt der Fehler?

Fehlermeldung:
There is an error in the PHP code:
Questionnaire Error: Trying to access array offset on value of type bool
line: 5
PHP code
002
003 $key = caseSerial ();
004 $info = dbGet ($key);
005 $sender = $info[0];
006 return 'ok';

Auch meine spätere Filterfrage ist fehlerhaft:

Questionnaire Error: The PHP variable $sender has been used but the variable is yet undefined (the variable has no value).
PHP code
001 namespace s2survey\questionnaire\environment;
002
003 if ($sender == 2) {
004 question ('VA09');
005 question ('VA10');
006 }

1 Answer

0 votes
by SoSci Survey (327k points)

Questionnaire Error: Trying to access array offset on value of type bool

Das bezieht sich auf folgende Zeile:

$sender = $info[0];

Offenbar findet SoSci Survey unter dem Schlüssel $key keinen Eintrag in der Datenbank für Inhalte, sodass $info keine Daten enthält, sondern den Wert false hat. Sie können diese Fehler abfangen, wenn Sie möchten:

$key = caseSerial();
$info = dbGet($key);
if ($info) {
  $sender = $info[0];
} else {
  $sender = 9;
}

Aber vermutlich werden Sie die eigentliche Ursache bekämpfen müssen, nämlich dass Sie vermutlich ohne SERIAL testen. Kein Problem: Wenn Sie im Debug-Modus (gelber Pfeil) testen, können Sie einfach die Variable SERIAL mit einem beliebigen Code belegen (oben in der gelben Leiste). Dann sollte caseSerial() einen Wert liefern.

Ergänzen Sie noch ein debug($key); in Zeile 2 oder darunter, um das zu kontrollieren.

by s078094 (170 points)
Vielen Dank für den Tipp! Leider funktioniert es immer noch nicht sauber und ich finde den Fehler nicht. Bei beiden Fragebögen gebe ich zu Begin über den Debug-Modus die Variable SERIAL zum Test manuell ein. Warum habe ich keine Kontrolle/Einsicht was in der "Datenbank für Inhalte" weggeschrieben wird? Mir scheint so, als ob der dbGet Befehl nicht funktioniert weil meine Werte - scheinbar - nicht sauber weggeschrieben werden.

Jedenfalls bekomme ich im ersten Fragebogen nun keine Fehlermeldung mehr:
Mein PHP Code in Fragebogen 1 [A2]:
$key = caseSerial();
debug($key);
$sender = value('EA03');
debug($sender);

dbSet($key);
debug($key);
dbSet($sender);
debug($sender);

Infos aus dem Debug-Modus dazu:
[Processing]    Create page 7 in questionnaire A2
debug()    Content: $key = test (string)
[Information]    value("EA03") = 1
debug()    Content: $sender = 1 (string)
debug()    Content: $key = test (string)
debug()    Content: $sender = 1 (string)
[Information]    value("EA03") = 1
[Processing]    Go to the end of the interview
[Processing]    Create the questionnaire's last page

Dafür aber in meinem zweiten NACHFOLGENDEN Fragebogen [A3]:
Mein PHP Code am Anfang von [A3]:
$key = caseSerial();
debug($key);
$info = dbGet($key);
$sender = $info[0];
debug($info);

Infos aus dem Debug Modus dazu:
debug()    Content: $key = test (string)
debug()    Content: $info = false (boolean)

Er sagt:
There is no entry for the key test in the contents' database.
Debug information for $info:
$info = false (boolean)

Ich möchte nur meinen Wert aus Variable EA03 aus Fragebogen [A2] in Fragebogen [A3] übernehmen um darauf eine Filterfrage anwenden zu können!
by SoSci Survey (327k points)
> Mir scheint so, als ob der dbGet Befehl nicht funktioniert weil meine Werte - scheinbar - nicht sauber weggeschrieben werden.

Nun ja, Sie haben in dbGet() auch nicht angegeben, WAS gespeichert werden soll. Versuchen Sie es bitte wie folgt:

dbSet($key, $sender);

Mehr dazu s. https://www.soscisurvey.de/help/doku.php/de:create:functions:dbset

> Warum habe ich keine Kontrolle/Einsicht was in der "Datenbank für Inhalte" weggeschrieben wird?

Haben Sie: Unter "Spezialfunktionen" -> "Datenbank für Inhalte"

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

...