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

Liebes Support-Team,

zunächst eine generelle Frage: Ich verwende Sosci Survey über einen uniinternen Server. Ich habe keinen Weg gefunden, mich mit meinem dort registrierten Nutzernamen + Passwort anzumelden, um auch den Online-Support nutzen zu können - deswegen jetzt (schon wieder) ein Zweitaccount. Sollte der Support mit externem-Server-Account theoretisch nutzbar sein?

Und hier mein Problem: Für ein Projekt mit zwei Interventionsarmen und fünf Messzeitpunkten habe ich viele verschiedene Fragebögen angelegt. Im ersten Fragebogen wird das Geschlecht erfasst und es erfolgt eine Randomisierung zur Interventions- oder Kontrollgruppe. Das Geschlecht benötige ich in den nachfolgenden Fragebögen zum Vorlegen geschlechtsspezifischer Fragebögen. Die Zuteilung und das Geschlecht werden in der Datenbank für Inhalte abgespeichert.
Während in den nachfolgenden Fragebögen der Zugriff auf die gespeicherte Zuteilung und die entsprechende Zuweisung zu IG/KG korrekt funktioniert, erhalte ich bei dem Zugriff auf das Geschlecht eine Fehlermeldung: "Trying to access array offset on value of type bool"

Der PHP-Code zur Speicherung der Geschlechtsangabe im ersten Fragebogen lautet:

$data = array(
  value('SD01', 'label'),
  value('SD02_01')           //diese Variable ist für Frage unwichtig
);
$key = 'SX-'.reference();  
dbSet($key, $data);

Und in den nachfolgenden Fragebögen:

$key = 'SX-'.reference();
$data = dbGet($key);

if ($data[0] == 'weiblich') {  
  setNextPage('Fragebogen_w');
} elseif ($data[0] == 'männlich') { 
  setNextPage('Fragebogen_m');
} elseif ($data[0] == 'divers') { 
  setNextPage('Fragebogen_d');
} 

In der Datenbank sind die Referenz, Geschlecht (in Spalte 0) und Randomisierung korrekt gespeichert.
Über jeden Lösungsvorschlag bin ich dankbar!
LG

1 Answer

0 votes
by SoSci Survey (370k points)

Sollte der Support mit externem-Server-Account theoretisch nutzbar sein?

Nein, der Account auf dem Uni-Server gilt nur für selbigen. Wir denken darüber nach, für Hochschulen, die SoSci Survey entgeltlich einsetzen, einen direkten Login zu ermöglichen. Allerdings war die Nachfrage danach bisher sehr gering.

Während in den nachfolgenden Fragebögen der Zugriff auf die gespeicherte Zuteilung und die entsprechende Zuweisung zu IG/KG korrekt funktioniert, erhalte ich bei dem Zugriff auf das Geschlecht eine Fehlermeldung: "Trying to access array offset on value of type bool"

Diese Fehlermeldung kommt daher, weil dbGet() den Eintrag (noch) nicht findet, und daher false liefert. Das ist der "type bool" Wert, bei dem Sie nicht auf Array-Elemente zugreifen können.

Während in den nachfolgenden Fragebögen der Zugriff auf die gespeicherte Zuteilung und die entsprechende Zuweisung zu IG/KG korrekt funktioniert

An welcher Stelle funktioniert es denn nicht? Ich lese Ihre Frage so, dass ich oben nur den funkionierenden Code sehe?

Wie stellen Sie denn sicher, dass die Personen über alle 5 Wellen hinweg den richtigen Link mit der individuellen Referenz (r=) bekommen?

by s361067 (120 points)
Danke für die Hinweise!
Meine Hochschule hat heute von 3.7.06 auf 3.8.03 aktualisiert.

Die Referenz und die Randomisierung habe ich mit multiLevelDown() an den untergeordneten Fragebogen übergeben. Bei

$key = 'RD-'.reference();
$rand = dbGet($key);
html($key);
html($rand);

wird mir jetzt im untergeordneten Fragebogen "RD-RD-12345" zurückgegeben (besser als "RD-15", zumindest).

Das Geschlecht habe ich versucht, im untergeordneten Fragebogen in einer internen Variable (SD32_01) zu speichern und dann in den geschlechtsspezifischen Fragen anzuwenden. Hier muss ich aber einen Fehler einprogrammiert haben und mir kommt mein Weg auch etwas umständlich vor:

Erste Seite untergeordneter Fragebogen:

$rand = multiLevelData();
$rd_w = $rand[0];
$rd_m = $rand[1];
$rd_d = $rand[2];

if (
  ($rd_w == 'IG1') ||
  ($rd_w == 'KG1')
){
  put('SD32_01', 'weiblich');
}
elseif (
  ($rd_m == 'IG1') ||
  ($rd_m == 'KG1')
){
  put('SD32_01', 'männlich');
}
elseif (
  ($rd_d == 'IG1') ||
  ($rd_d == 'KG1')
){
  put('SD32_01', 'divers');
}

Seite im untergeordneten Fragebogen vor den Filterfragen:

if (value('SD32_01') == 'weiblich') {
  setNextPage('Fragebogen_w');
} elseif (value('SD32_01') == 'männlich') {
  setNextPage('Fragebogen_m');
} elseif (value('SD32_01') == 'divers') {
  setNextPage('Fragebogen_d');
} else {
  setNextPage('Fragebogen_d');
}

Ich lande immer bei "else". Wo könnte der Fehler liegen?
by SoSci Survey (370k points)
Wie sieht denn Ihr multiLevelDown() aus - und was kommt im untergeordnetne Fragebogen genau an?

$rand = multiLevelData();
debug($rand);
by s361067 (120 points)
multiLevelDown() im übergeordneten Fragebogen:

$key = 'RD-'.reference();
$rand = dbGet($key);
$rd_w = $rand[0];
$rd_m = $rand[1];
$rd_d = $rand[2];

if (
  ($rd_w == 'IG1') ||
  ($rd_m == 'IG1') ||
  ($rd_d == 'IG1')
){
  multiLevelDown('IG4', $key, $rand);
}
elseif (
  ($rd_w == 'KG1') ||
  ($rd_m == 'KG1') ||
  ($rd_d == 'KG1')
){
  multiLevelDown('KG4', $key, $rand);
}

Und bei

$rand = multiLevelData();
debug($rand);

erhalte ich im untergeordneten Fragebogen:

Debug-Information für $rand:
$rand = RD-12345 (string)

Das Speichern vom Geschlecht in der internen Variable funktioniert nicht:

Die Variable SD32_01 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt. Daher kann die Funktion value() keinen Antwort-Wert ermitteln.
by SoSci Survey (370k points)
Die Funktion multiLevelDown() gibt nur den zweiten Parameter (in Ihrem Fall $key) an den untergeordneten Fragebogen weiter. Die einfachste Lösung wäre demnach...

... im übergeordneten Fragebogen

multiLevelDown('IG4', $key);   // das $rand können sie hier weglassen

... um untergeordneten Fragebogen:

$key = multiLevelData();
$rand = dbGet($key);
$rd_w = $rand[0];
$rd_m = $rand[1];
$rd_d = $rand[2];
by s361067 (120 points)
Das hat funktioniert! Vielen Dank!

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

...