0 votes
in SoSci Survey (dt.) by s012103 (110 points)
edited by SoSci Survey

Hallo,

für eine Umfrage erstelle ich individualisierte vorausgefüllte offene Texteingaben. Die für jeden Teilnehmer individualisierten Inhalte habe ich in einer Datenbank erstellt und hochgeladen. Jeder Teilnehmer wird per Seriennummer eingeladen und die individuellen Inhalte ergeben sich dann über die Seriennummer. Soweit habe ich das auch hinbekommen.

Bislang sieht meine Datenbank so aus, dass für jeden Teilnehmer eine Zeile reserviert ist und hinter die Seriennummer dann in dieselbe Zeile sämtliche Inhalte kommen, auf die dann zugegriffen wird.

Also:

0                               1                2       3          4
Seriennummer 1 Teilnehmer1, Info1, Info2, Info3 
Seriennummer 2 Teilnehmer2, Info1, Info2, Ino3
Seriennummer 3 Teilnehmer3, Info1, Info2, Ino3

Meine Frage ist, ob es möglich ist, pro Teilnehmer auch mehrere Zeilen anzulegen.

Also:

0                               1                2       3          4
Seriennummer 1 Teilnehmer1, Info1, Info2, Info3 
Seriennummer 1 Teilnehmer1, Info4, Info5, Info6
Seriennummer 1 Teilnehmer1, Info7, Info8, Info9
Seriennummer 2 Teilnehmer2, Info1, Info2, Info3  

Falls das geht wäre dann meine Frage, wie ich dann auswähle, aus welcher Zeile für Teilnehmer 1 die Informationen gezogen werden. Bislang nutze ich folgenden Befehl:

$key = caseSerial();
$info = dbGet($key);
if ($info !== false) {
  preset('AB01_01', $info[2]);

Vielen Dank

1 Answer

0 votes
by SoSci Survey (305k points)
edited by SoSci Survey

Technisch ist das möglich - Sie müssen dafür nur die Schlüssel entsprechend anpassen. Im Extremfall also z.B. ein Schlüssel pro Frage:

Seriennummer01-AB01  Item-1-Preset  Item-2-Preset  Item-3-Preset
Seriennummer01-CD02  Item-1-Preset  Item-2-Preset
Seriennummer01-EF03  Preset-A       Preset-B
Seriennummer02-AB01  Item-1-Preset  Item-2-Preset  Item-3-Preset
Seriennummer02-CD02  Item-1-Preset  Item-2-Preset
Seriennummer02-EF03  Preset-A       Preset-B

Im Fragebogen dann entsprechend:

$infoAB01 = dbGet(caseSerial().'-AB01');
if ($infoAB01) {
   preset('AB01_01', $infoAB01[0]);
   preset('AB01_02', $infoAB01[1]);
   preset('AB01_03', $infoAB01[2]);
}
$infoBC02 = dbGet(caseSerial().'-BC02');
if ($infoBC02) {
   preset('BC02_01', $infoBC02[0]);
   preset('BC02_02', $infoBC02[1]);
}
by s012103 (110 points)
Schon mal vielen Dank.
Toll zu wissen, dass es klappen kann. An der Umsetzung hapert es allerdings noch ein wenig.

Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Die PHP-Variable $info wurde verwendet, in diesem PHP-Code aber noch nicht definiert (sie enthält noch keinen Wert).

PHP-Code

002
003 $infoTV05 = dbGet(caseSerial().'-TV05');
004 if ($infoTV05) {
005    preset('TV05_01', $info[0]);
006    preset('TV05_02', $info[1]);
007    preset('TV05_03', $info[2]);
008 preset('TV05_04', $info[3]);


Ich hab auch noch eine weitere Frage: Kann ich mir am Ende ausschließlich Daten ausgeben lassen, die geändert wurden, oder diese irgendwie hervorheben?
by SoSci Survey (305k points)
Oh, ich hatte vergessen, die Variablennamen in den IF-Blöcken anzupassen. Das habe ich in meiner Antwort oben nun korrigiert.

> Kann ich mir am Ende ausschließlich Daten ausgeben lassen, die geändert wurden, oder diese irgendwie hervorheben?

Im Prinzip schon, aber das wird schnell aufwändig. Im Prinzip müssen Sie für jede Variable per PHP-Code (z.B: auf der nächsten Seite) prüfen, ob die Antwort geändert wurde und dann eine interne Variable per put() setzen. Das könnte so aussehen:

$infoAB01 = dbGet(caseSerial().'-AB01');
if ($infoAB01) {
   if (value('AB01_01') != $infoAB01[0]) {
       put('IV01_01', 2);
   }
}

Weil das ziemlich schnell ziemlich lang wird, wäre es vermutlich sinnvoll, das in eine Funktion zu bündeln.

Eventuell ist der Abgleich in Excel nach der Erhebung schneller. Das ist eher eine Aufgabe der Auswertung denn der Erhebung :)

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

...