0 votes
in SoSci Survey (dt.) by s281092 (120 points)

Guten Tag,

in einer aktuellen Studie möchten wir gerne auf der Startseite eines Fragebogens im Hintergrund prüfen, ob jemand (1) bereits eine Einwilligung aus einem vorherigen Testzeitpunkt vorliegen hat und/oder (2) den aktuellen Fragebogen bereits bearbeitet hat (ggf. auch nur zum Teil). Um Ersteres zu erreichen, haben wir in die Datenbank für Inhalte ein csv-Dokument hochgeladen, das zum einen die Referenz aus einem vorherigen Testzeitpunkt als KEY enthält und zum anderen eine 0/1-kodierte Variable, die die Vorlage der Einwilligung angibt.

Um Zweiteres zu erreichen, wird im aktuellen Fragebogen auf jeder Seite unter dem Schlüssel "$key = 'T2PAG-'.reference();" die zuletzt aufgerufene Seite gespeichert - bestenfalls wird der Fragebogen natürlich direkt beendet. Falls dem nicht so ist, soll aber direkt auf die zuletzt bearbeitete Seite weitergeleitet werden, wenn der Fragebogenlink mit derselben Referenz erneut aufgerufen wird.

So viel der Vorrede. Für diese Verteilung auf verschiedene Startseiten nutzen wir aktuell folgenden php-code:

$keyConsent = 'T1CON-'.reference();
$consent = dbGet($keyConsent);
$keyPage = 'T2PAG-'.reference();
$previousPage = dbGet($keyPage);

if ($previousPage == false && $consent[0] == 1) {
goToPage('EinwilligungVorhanden');
} elseif ($previousPage == false && $consent[0] == 0) {
goToPage('EinwilligungEinholen');
} elseif ($previousPage != false && $previousPage[0] != 'end') {
goToPage('Start2');  // Anm.: Erst auf "Start2" findet dann die Weiterleitung auf zuletzt bearbeitete Seite statt
} elseif ($previousPage[0] == 'end') {
goToPage('Start3'); // Anm: hier ist nur ein Hinweis, dass Fragebogen bereits bearbeitet wurde
} else {
goToPage('EinwilligungEinholen');
}

Wenn jemand den Fragebogen aufruft, dessen Referenz tatsächlich in der Datenbank für Inhalte mit 'T1CON-'.reference() bereits vorkommt, funktioniert auch alles wie gewollt. Das Problem entsteht, wenn eine noch "unbekannte" Referenz verwendet wird. Das sollte in unserem Fall eigentlich nicht vorkommen, kann aber nicht ausgeschlossen werden. Es sollte also der "else"-Teil des if-Befehls greifen (Weiterleitung auf die Seite EinwilligungEinholen). Dabei tritt aber jedes mal eine Fehlermeldung auf:

Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Trying to access array offset on false
Zeile: 8
Fehler im Fragebogen: Trying to access array offset on false
Zeile: 10

Kann hier jemand weiterhelfen, wo das Problem liegen könnte?

Vielen Dank!

1 Answer

0 votes
by SoSci Survey (320k points)

Fehler im Fragebogen: Trying to access array offset on false

Diese Fehlermeldung bezieht sich auf die Zeile

 $consent[0]

Bauen Sie einen Filter ein, der das verhindert, und zwar noch vor dem ersten IF

if (empty($consent)) {
  goToPage('EinwilligungEinholen');
}
by s281092 (120 points)
Vielen Dank für die rasche Antwort! Das hat das Problem gelöst.

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

...