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

Liebes Support-Team,

gerne würde ich Daten von meiner Vorerhebung in meine Tagebuchstudie übertragen. Dazu habe ich auch eine Anleitung auf SoSci.de gefunden. Allerdings weiß ich nicht genau, wie ich das Beispiel für meine Studie anpassen kann. Bisher habe ich es so gemacht:

In der Vorerhebung einer Tagebuchstudie wird in Kategorien abgefragt, welche Aufgaben eine Person bei ihrer Arbeit hat (Mehrfachauswahl). In den weiteren Erhebungen der Tagebuchstudie wird die täglich abgefragt, welche Aufgaben die Person an diesem Tag gemacht hat. Dafür sollen nur die Kategorien angeboten werden, die in der Vorerhebung ausgewählt wurden (auch per Mehrfachauswahl).

In der Vorerhebung werden die zutreffenden Kategorien mit der Mehrfachauswahl „TA01“ auf Seite 12 des Fragebogens abgefragt. Auf Seite 13 (oder später) wird die Auswahl in der Datenbank vermerkt:

PHP-Code:
$kategorie = getItems('TA01', 'is', 12);
$key = 'TA-'.caseSerial(); // Dem Teilnahmecode wird noch ein "FS-" vorangestellt, damit in der Datenbank auch noch andere Inhalte gespeichert werden können.
dbSet($key, $kategorie);

In den täglichen Fragebögen wird abgefragt, welche ihrer generellen Aufgaben die Personen heute gemacht haben (mit „TA03“). Diese Frage enthält dieselben Items wie Mehrfachauswahl „TA01“ in derselben Reihenfolge. Folgender PHP-Code liest die Daten aus der Datenbank und zeigt nur die entsprechenden Eingabefelder an:

PHP-Code:
$key = 'FS-'.caseSerial();
$kategorie = dbGet($key);
question('TA03', $kategorie);

--> Frage 1: Füge ich anstelle der angelegten Frage nur den PHP-Code in den Tagebuch-Fragebogen ein? Muss TA03 im Format offene Texteingabe sein oder kann ich hier auch eine Mehrfachauswahl anlegen?

Wichtig: dbGet() liefert immer ein Array – auch wenn man mit dbSet() nur einen einzelnen Wert speichert.

Wenn man im ersten Fragebogen einen einzelnen Wert speichert, muss man im anderen Fragebogen mittels eckiger Klammer ([0]) auf das erste (und einzige) Array-Element zugreifen.

--> Frage 2: Ab hier verstehe ich den Code nicht mehr: Was ist RG01? Wie würde der Code hier für mein Beispiel oben aussehen?

PHP-Code:
$group = value('RG01');
$key = 'RG-'.caseSerial(); // Auch hier wird ein Präfix für den Datenbank-Eintrag verwendet, um alle Optionen offen zu halten
dbSet($key, $group);

PHP-Code:
$key = 'RG-'.caseSerial();
$data = dbGet($key);
if ($data) {
$group = $data[0];
// Zwischenspeichern des Werts in eine interne Variable,
// um den Wert später via value() zu verwenden (optional)
put('IV01_01', $group);
} else {
// Fehlermeldung anzeigen, dass etwas schief gelaufen ist
show('XY01');
put('IV01_01', -1);
}

Ich würde mich sehr freuen, wenn Sie mir meine beiden Fragen (oben, fett gedruckt) beantworten könnten. Ganz lieben Dank schon einmal!

1 Answer

+1 vote
by SoSci Survey (316k points)

Auf Seite 13 (oder später) wird die Auswahl in der Datenbank vermerkt

Dann prüfen Sie als erstes in der Datenbank für Inhalte, ob dort die korrekten Informationen gespeichert werden.

Folgender PHP-Code liest die Daten aus der Datenbank und zeigt nur die entsprechenden Eingabefelder an

Daraus schließe ich, dass es soweit funktioniert?

Füge ich anstelle der angelegten Frage nur den PHP-Code in den Tagebuch-Fragebogen ein?

Ja, ein question() und das Hineinziehen einer Frage in die Seite machen dasselbe. Wenn Sie beides machen, sehen Sie die Frage doppelt.

Muss TA03 im Format offene Texteingabe sein oder kann ich hier auch eine Mehrfachauswahl anlegen?

Das kann auch eine Mehrfachauswahl sein - oder irgend ein anderer Fragetyp, der Items oder Optionen hat.

Ab hier verstehe ich den Code nicht mehr: Was ist RG01?

Das wäre im Beispielcode ein Zufallsgenerator - der ein wenig anders als Ihr TA01 nur einen Wert liefert und nicht mehrere.

by s264419 (120 points)
Vielen Dank für Ihre ausführliche Antwort!

Jetzt konnte ich es einmal im ganzen Durchgang testen und habe tatsächlich einen Fehler im Code gefunden, aber jetzt auch die Lösung. Falls jemand in Zukunft das gleiche Problem hat, folgender Code funktioniert bei mir:

Basisfragebogen:

$key = 'TA-'.caseSerial();  
$data = array(
    value('TA01_01'),
    value('TA01_02'),
    value('TA01_03'),
    value('TA01_04'),
    value('TA01_05'),
    value('TA01_06'),
    value('TA01_07'),
);
dbSet($key, $data);


Tagebuch-Fragebogen:

$key = 'TA-' . caseSerial();        
$result = dbGet($key);            

if ($result[0] == 2) {              
  question('TA03', '1', 'show-title=no');      
}                     
if ($result[1] == 2) {
  question('TA03', '2', 'show-title=no');
}
if ($result[2] == 2) {
  question('TA03', '3', 'show-title=no');
}
if ($result[3] == 2) {
  question('TA03', '4', 'show-title=no');
}
if ($result[4] == 2) {
  question('TA03', '5', 'show-title=no');
}
if ($result[5] == 2) {
  question('TA03', '6', 'show-title=no');
}
if ($result[6] == 2) {
  question('TA03', '7', 'show-title=no');
}

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

...