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

0 votes

Hallo

Für eine mehrwellige Befragung, sollte Soscisurvey im dritten Fragebogen auf die Antwort aus dem zweiten Fragebogen zurückgreifen. Dies funktioniert meines Wissens mit "Datenbank für Inhalte". Da wir nicht mit Serienmails arbeiten, können die Fragebögen nicht damit verbunden werden. Nun habe ich versucht, die Fragebögen über die Kennung r (also reference) zu verbinden.

Wir erheben also im zweiten Fragebogen einen Wert (Variable PB04). Diesen Werte möchte ich zusammen mit der Teilnehmerkennung REF in die Datenbank für Inhalte schreiben.

$person = array(  
value ('PB04')
);
dbSet (reference(), $person);

Und im dritten Fragebogen möchte ich dann diese Infos aus der Datenbank holen.
Zuerst die Teilnehmernummer setzen:

$key = reference();

Und dann den Wert auslesen und der Variable $person zuweisen

$person = dbGet($key);

Nun mein Problem: Soscisurvey zeigt mir die Warnung an: "In der Funktion dbSet() wurde kein gültiger Datenbank-Schlüssel angegeben"

Kann man reference nicht verwenden?

Vielen Dank im Voraus!!!

in SoSci Survey (dt.) by s083911 (110 points)
edited by SoSci Survey

1 Answer

0 votes

Kann man reference nicht verwenden?

Doch, kann man - aber nur, wenn eine Referenz (Kennung) für das laufende Interview vorliegt. Das heißt, das Interview muss über einen Link mit r=... gestartet worden sein.

Zum Testen können Sie die Referenz im Debug-Modus entweder oben setzen (Variable "REF") oder Sie können den Link nach dem Aufruf 10 Sekunden lang ergänzen.

by SoSci Survey (76.1k points)
> allerdings wird die 1 oder 2 unter der Überschrift "0" gespeichert und nicht unter "person".

Das ist soweit korrekt - die Inhalte (wenn mehr als ein Wert angegeben ist) werden als indiziertes Array gespeichert, also unter 0, 1, 2, ...

$key = reference();
//und dann den Wert 1 oder 2 auslesen und der Variablen $person zuweisen
$person = dbGet($key);

> Hier kommt die Fehlermeldung: In der Funktion dbGet() wurde kein gültiger Datenbank-Schlüssel angegeben.

Und wenn Sie inmitten dieses PHP-Codes noch das html('<p>REF='.$key.'</p>') ergänzen, dann wird der korrekte Schlüssel "test1" angezeigt? Und beide Fragebögen sind auch im selben Befragungsprojekt, ja?
Vielen Dank für Ihre Antwort.

Ja, beide Fragebögen sind im gleichen Befragungsprojekt.

Ja, wenn ich html('<p>REF='.$key.'</p>') im PHP-Code ergänze, wird im Fragebogen "REF=test1" angezeigt.

Die Meldung " In der Funktion dbGet() wurde kein gültiger Datenbank-Schlüssel angegeben" erscheint aber nach wie vor.
Man sollte nicht vergessen, $person auch für den Rest des FB verfügbar zu machen. Sonst ist die Variable nur für den Codeteil verfügbar.

registerVariable($person);
 
Ausserdem muss in der Folge auch diese Variable $ person angesprochen werden und nicht (mehr) PB04. Also im Folgenden:

if ($person[0] == 1) {
  replace('%Person%', 'Dominik');
} elseif ($person[0] == 2){
  replace('%Person%', 'Stefanie');
}

usw.

Grüsse, AF
Nur zur Sicherheit: Das html() und das dbGet() stehen im selben PHP-Code?

Wären Sie einverstanden, dass ich einen Administrator-Login für Ihr Befragungsprojekt einrichte, und mir das Problem direkt ansehe? Die Fehlermeldung wird nur angezeigt, wenn der Parameter NULL ist oder ungültige Zeichen enthält - und nach allem, was Sie hier gepostet haben, scheint nichts davon zuzutreffen...

Wenn sie einverstanden sind, teilen Sie mir bitte auch mit, auf welcher Seite der PHP-Code steht, danke.
Vielen Dank für Ihre Hilfe. Es hat nun mit den oben genannten Anpassungen (speichern der Variable person und ersetzen des Variablennames) funktioniert.

Besten Dank für Ihren Support.
...