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

Liebes Team von SoSciSurvey,

ich erhebe Daten in einem Vorab-Fragebogen sowie in mehreren täglichen Fragebögen. Gerne möchte ich im letzten täglichen Fragebogen eine automatisierte persönliche Auswertung einbauen. Diese soll Daten aus dem Vorab-Fragebogen anzeigen. Dafür möchte ich die Datenbank für Inhalte nutzen. Genauer möchte ich nacheinander jeweils die Ergebnisse aus 6 Fragen mit jeweils mehreren Items als Mittelwert anzeigen. Z.B. soll zuerst der Gesamtmittelwert der Frage 1 angezeigt werden, dann der von Frage 2 etc.

Meine erste Frage: Könnte so ein korrekter php-Code zum Einlesen der Daten aus meiner Frage 'HT01' in die Datenbank aussehen, den ich in meinen Vorab-Fragebogen einbaue?

$val_selfcare = valueMean('HT01');
$key = value ('M101_RV1');
dbSet ($key, $val_selfcare);

zum $key: Hier nutzen wir nicht die Serienmail-Funktion von SoSciSurvey, sondern vergeben vorab Codes zur Zuordnung der VPN, welche dann in der Variable 'M101_RV1' gespeichert werden.

Meine zweite Frage: In der automatisierten Rückmeldung soll dann jeweils der Mittelwert in einen Satz wie den folgenden eingebaut werden: Ihr Wert liegt auf einer Skala von 1 (trifft nicht zu) bis 5 (trifft zu) im Mittel bei .sprintf('%1.1f', $val_selfcare).'.
An welcher Stelle und mit welchem php-Code kann ich hier dann meine Daten aus der Datenbank einbauen, damit diese korrekt ausgelesen werden?

Vielen Dank im Voraus für Ihre Antwort!

1 Answer

0 votes
by SoSci Survey (327k points)

Könnte so ein korrekter php-Code zum Einlesen der Daten aus meiner Frage 'HT01' in die Datenbank aussehen

Ja. Aber wenn Sie mehrere Werte speichern möchten, ist dbStore() eventuell sinnvoller:

$val_selfcare = valueMean('HT01');
$key = value ('M101_RV1');
$data = dbRetrieve($key);
if (!is_array($data)) {
    $data = [];
}
$data['w1'] = $val_selfcare;
dbStore($data);

Auf diesem Wege können Sie die Werte unterschiedlicher Wellen einfach in einem gemeinsamen Datenbank-Eintrag ablegen. Hier wird z.B. "w1" für die erste Welle verwendet.

An welcher Stelle und mit welchem php-Code kann ich hier dann meine Daten aus der Datenbank einbauen, damit diese korrekt ausgelesen werden?

Dort, wo Sie den Satz anzeigen möchten...

$key = value ('M101_RV1');
$data = dbRetrieve($key);
show('TX01', ['%val1%' => $data['w1']]);
by s183718 (120 points)
Vielen Dank für die Antwort. Ich habe noch eine Rückfrage: Ich möchte tatsächlich nicht die Werte der einzelnen Wellen speichern, sondern nur 6 Mittelwerte aus dem Vorab-Fragebogen. Diese sollen dann am Ende des letzten täglichen Fragebogens angezeigt werden.
Würden Sie dann empfehlen, doch mit dbSet() zu arbeiten? Und wie würde entsprechend ein php-Code aussehen, um dann die Daten aus der Datenbank auszulesen, wenn ich mit dbSet() arbeite? Wie kombiniere ich am besten den php-Code zum Auslesen mit diesem Code ".sprintf('%1.1f', $val_selfcare).'" im Befehl?
by SoSci Survey (327k points)
> sondern nur 6 Mittelwerte aus dem Vorab-Fragebogen

Dann können Sie auch komfortabel mit dbSet() arbeiten :)

dbSet($key, [
  valueMean('HT01'), valueMean('HT02'), ...
])

> Wie kombiniere ich am besten den php-Code zum Auslesen mit diesem Code

Ich würde dort mit Platzhaltern arbeiten:

$data = dbGet($key);
replace('%value1%', $data[0]);

aber es funktioniert auch

".sprintf('%1.1f', $data[0]).'"

Die Datenbank für Inhalte speichert bei dbSet() intern Strings, insofern können Sie das sprintf() gleich noch beim Abspeichern erledigen.
by s183718 (120 points)
Danke, jetzt funktioniert es gut!
by s183718 (120 points)
Hallo, ich habe nun leider doch noch ein Problem festgestellt: Mir wird jetzt konstant der gleiche Wert angezeigt in der personalisierten Rückmeldung, obwohl verschiedene Mittelwerte für HT01-HT06 angezeigt werden müssten.
Für die Speicherung in der Datenbank habe ich im Vorab-Fragebogen folgenden Code verwendet:
$key = value('M101_RV1');
dbSet($key, [
  valueMean('HT01'), valueMean('HT02'), valueMean('HT03'), valueMean('HT04'), valueMean('HT05'), valueMean('HT06')
]);

für das Abrufen folgenden Code:
$key = value('M101_RV1');
$data = dbGet($key);

und dann jeweils in einzelnen Sätzen Codes wie den folgenden für HT01-HT06:
Ihre ... liegt auf einer Skala von 1 (trifft nicht zu) bis 5 (trifft zu) im Mittel bei <b>'.sprintf('%1.1f', $data[valueMean('HT01')]).'</b>.

Können Sie mir weiterhelfen, wo der Fehler liegt?  Über die Variable 'M101_RV1' wird über die Fragebögen hinweg der Personencode gespeichert.
by SoSci Survey (327k points)
> Für die Speicherung in der Datenbank habe ich im Vorab-Fragebogen folgenden Code verwendet

Nur zur Sicherheit: Haben Sie einen Blick in die Datenbank für Inhalte geworfen, ob dort pro Eintrag unterschiedliche Werte stehen?

> <b>'.sprintf('%1.1f', $data[valueMean('HT01')]).'</b>.

Das ist nicht korrekt, das müsste heißen

<b>'.sprintf('%1.1f', $data[0]).'</b>.

und für den zweiten Wert dann

<b>'.sprintf('%1.1f', $data[1]).'</b>.
by s183718 (120 points)
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

...