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

Hallo zusammen,

ich möchte gerne abhängig von dem Wert in der Datenbank Antwortmöglichkeiten in einem Frage-Element anzeichen. Ich muss dazu sagen, der Code hat 2020 auch noch funktioniert, jetzt allerdings nicht mehr ganz richtig.
In der Datenbank liegen Einträge mit dem Schlüssel 001 bis 040. Dann für jedes Element in DB wird geschaut, ob bei dem Wert eine 0 steht und für den Fall wird die ID (nicht 001 bis 040, sondern: 1 bis 40) gespeichert, um dann die entsprecheneden Antwortmöglichkeiten von der Frage A001 zu aktivieren.

$fragen = array();

for($i=1; ; $i++) {
    $key= str_pad($i, 3 ,'0', STR_PAD_LEFT);
    $result= dbGet($key);
    if($result === false) {
        break;
    }

    if($result[0] == 0) {
        $fragen[] = $i; 
    } 
}

question('A001', $fragen);

Das interessante ist, es tut das was es soll, also es werden mir tatsächlich nur die gewünschten Antwortmöglichkeiten von A001 angezeigt. Aber ich bekomme auch einen (bzw. mehrere, je nach Anzahl der Elemente mit einer 0 als Value) Error angezeigt (und leider auch der Besucher des Survey):

here is an error in the PHP code:

Questionnaire Error: Undefined array key 0
line: 13

PHP code

010         break;
011     }
012 
013     if($result[0] == 0) {
014         $fragen[] = $i; 
015     } 
016 }

Es würde mich freuen, wenn jemand helfen kann.
Vielen lieben Dank schonmal :)

Viele Grüße

by SoSci Survey (302k points)
Bitte fügen Sie über dem ($result[0] == 0) einmal folgende Zeile ein:

debug($result);

Was wird denn dann im Debug-Modus angezeigt?
by s096001 (120 points)
Nacheinander wäre das dann:


Notice (page 1)
Debug information for $result:
Array (no elements at all)
Notice (page 1)
Debug information for $result:
01
Notice (page 1)
Debug information for $result:
01
Notice (page 1)
Debug information for $result:
Array (no elements at all)
Notice (page 1)
Debug information for $result:
Array (no elements at all)
Notice (page 1)
Debug information for $result:
01
Notice (page 1)
Debug information for $result:
01
Notice (page 1)
Debug information for $result:
01
Notice (page 1)
Debug information for $result:
01
Notice (page 1)
Debug information for $result:
01
by SoSci Survey (302k points)
Wenn ich es richtig sehe, kommt für $i=1 die erste Zeile

> Array (no elements at all)

Könnten Sie bitte einmal prüfen, was in der Datenbank für Inhalte unter dem Schlüssel 001 gespeichert ist?
by s096001 (120 points)
Kein Problem. Das ist meine Datenbank:

Einträge in der Datenbank
Schlüssel     Sprache      0      Zeitstempel
001     deu     0     25.08.2022, 12:55
002     deu     1     25.08.2022, 12:55
003     deu     1     25.08.2022, 12:55
004     deu     0     25.08.2022, 12:55
005     deu     0     25.08.2022, 12:55
006     deu     1     25.08.2022, 12:55
007     deu     1     25.08.2022, 12:55
008     deu     1     25.08.2022, 12:55
009     deu     1     25.08.2022, 12:55
010     deu     1     25.08.2022, 12:55

Aber wenn ich das richtig verstehe, würde ja wenn der Key falsch wäre die Überprüfung davor das feststellen, oder?
if($result === false) {
        break;
}

1 Answer

0 votes
by SoSci Survey (302k points)

Danke für die Übersicht, was da in der Datenbank für Inhalte gespeichert ist. Damit konnte ich einen Programmfehler aufdecken - und zwar trat dieser auf, wenn genau der Wert 0 in einem Eintrag gespeichert war.

Auf www.soscisurvey.de ist dieser Fehler nun behoben. Danke für den guten Hinweis!

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

...