0 votes
in SoSci Survey (dt.) by s154695 (485 points)

Guten Tag,

ich plane eine dreiwellige Erhebung mit einem Panelanbieter. Für das Projekt habe ich pro Befragungswelle einen Fragebogen angelegt. Ich möchte dabei eine Antwort, die in der zweiten Erhebung gegeben wird, in der dritten Welle wieder aufgreifen.
Hierzu habe ich eine Frage bzw. benötige Hilfe bei der Fehlersuche.

Ich habe nun den folgenden Code zum Messzeitpunkt 1 gesetzt:

$key = value('C001_02');
$data = array(
  value('TN01_01')
);
dbSet($key, $data);

In C001_01 speichere ich die psid.
Und diesen Code habe ich zum Messzeitpunkt 2, um die gespeicherte Antwort abzurufen:

$key = value('C001_02');
$data = dbGet($key);
replace('%technology%', $data[0]);

Allerdings erhalte ich folgende Fehlermeldung beim Testen:

Fehler im Fragebogen (Seite 2) Beim Erstellen der Fragebogen-Seite ist
ein Fehler aufgetreten. Es wäre sehr freundlich, wenn Sie den
Projektleiter über das Problem informieren und die Fehlermeldung unten
weiterleiten. Herzlichen Dank. Für die Funktion replace() wurden nicht
ausreichend Argumente angegeben, 2 Argumente sind zwingend
erforderlich. Weitere Details finden Sie in der Anleitung zur
Funktion.

Fehler im Fragebogen (Seite 2) Beim Erstellen der Fragebogen-Seite ist
ein Fehler aufgetreten. Es wäre sehr freundlich, wenn Sie den
Projektleiter über das Problem informieren und die Fehlermeldung unten
weiterleiten. Herzlichen Dank. Im PHP-Code trat ein Fehler auf.

Fehler im Fragebogen: Trying to access array offset on value of type bool
Zeile: 6

PHP-Code

003 
004 $key = value('C001_02');
005 $data = dbGet($key);
006 replace('%technology%', $data[0]);
007 return 'ok';

In der Datenbank für Inhalte wird der Schlüssel korrekt abgespeichert. Wenn ich das richtig deute, gibt es also "nur" das Problem beim Abruf. Können Sie mir hier weiterhelfen?

Vielen Dank schon im Voraus!

1 Answer

0 votes
by SoSci Survey (327k points)
selected by s154695
 
Best answer

Für die Funktion replace() wurden nicht
ausreichend Argumente angegeben, 2 Argumente sind zwingend
erforderlich.

und

Trying to access array offset on value of type bool

beziehen sich beide auf diesen Code:

$data[0]

Offenbar wird unter dem genannten Schlüssel nichts gefunden, deshalb liefert dbGet() den Wert false zurück. Ich empfehle zur Fehlersuche folgende Ergänzung (in beiden Fragebögen):

$key = value('C001_02');
html('<p>Schlüssel: '.htmlspecialchars($key).'</p>');

Meine Vermutung ist, dass Sie entweder gar keine oder eine unterschiedliche PSID in C001_02 haben. Sie können natürlich auch einfach mal in den Datensatz schauen, was in dieser Variable gespeichert wird. Und prüfen Sie dann auch gleich in der Datenbank für Inhalte, ob unter diesem Schlüssel etwas gespeichert wurde.

Hier noch der Code zum Abfangen des Fehlers:

$key = value('C001_02');
$data = dbGet($key);
if ($data) {
    replace('%technology%', $data[0]);
} else {
    replace('%technology%', 'NICHT GEFUNDEN');
}
by s154695 (485 points)
Herzlichen Dank schon für die Hilfe! Das hat mich auf die richtige Fährte gebracht.

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

...