Inhaltsverzeichnis

caseData()

array caseData()
array caseData(array Filter, [boolean LeereWerte])
array caseData(string Filter, [boolean LeereWerte])

Die Funktion caseData() liefert alle Antwortcodes und Texteingaben aus dem laufenden Interview oder einen Teil davon.

Rückgabewert

Die Funktion liefert ein assoziatives Array zurück mit den Variablennamen als Schlüssel und den Daten als Wert.

[
  'AB01_01' => 1,
  'AB01_02' => 2,
  'AB01_03' => 5,
  'AB01_04' => 2,
  'AB01_05' => -9
]

Die Funktion liefert für geschlossene Fragen Antwortcodes. Dies entspricht der dem Ausgabeformat 'code' in der Funktion value().

Beispiel: Angaben aus vorigem Interview vorbelegen

Wenn eine Erhebung regelmäßig mit denselben Personen durchgeführt wird, sollen einige Antworten aus dem vorhergehenden Fragebogen automatisch in den neuen Fragebogen übernommen werden.

Eine Herausforderung besteht darin, die Person zu identifizieren, sodass eine Zuordnung zwischen den Erhebungswellen möglich ist. Wenn die Einladung zur Befragung mittels Serienmail erfolgt, so steht dafür die Personenkennung SERIAL zur Verfügung, welche mittels caseSerial() ermittelt werden kann.

Die Daten aus dem vorhergehenden Interview können in der Datenbank für Inhalte abgelegt werden. Als Schlüssel für den Eintrag bietet sich die Personenkennung an. Um die Verknüpfung zwischen Variablen-Labels und Daten zu erhalten, werden die Daten mittels json_encode() als JSON-String kodiert.

Wenn also beispielsweise die demografischen Daten in den nächsten Fragebogen übernommen werden sollen, müssen im ersten Interview die Daten in der Datenbank für Inhalte abgelegt werden. Im folgenden Beispiel sind die relevanten Fragen in den Rubriken „SD“ und „PA“ zu finden. Der folgende PHP-Code muss auf einer Seite platziert werden, auf welcher alle relevanten Fragen bereits abgefragt wurden. Wenn die Demografie also auf den Seite 12 bis 15 abgefragt wird, darf der PHP-Code frühestens auf Seite 16 stehen.

// Einen eindeutigen Schlüssel
// aus der Personekennung erzeugen
$serial = caseSerial();
 
// Nur speichern, wenn eine Personenkennung vorliegt
if ($serial) {
    // Ein Präfix (z.B. 'data-') is hilfreich wenn man
    // die Datenbank noch für andere Zwecke verwenden will
    $key = 'data-'.$serial;
 
    // Die eigentlichen Daten des Interviews abrufen
    $data = caseData(['SD','PA']);
 
    // Diese Daten kodieren und in die
    // Datenbank für inhalte schreiben
    $package = json_encode($data);
    dbSet($key, $package);
}

In dem folgenden Fragebogen kann man die Daten nun auslesen – und wenn Daten für die Person vorliegen, mittels put() direkt in die Variable schreiben. Stellen Sie z.B. mittels caseData() sicher, dass noch keine Antworten vorliegen. Der folgende PHP-Code würde im zweiten Fragebogen auf der ersten Seite platziert.

$currentData = caseData(['SD','PA']);
$serial = caseSerial();
 
// Daten nur schreiben, wenn in dem Interview
// noch keine Daten vorliegen und wenn eine
// Personenkennung vorhanden ist
if ($serial && empty($currentData)) {
    $key = 'data-'.$serial;
    $entry = dbGet($key);
 
    // Nur fortfahren, wenn Daten vorliegen
    if ($entry) {
        $data = json_decode($entry[0]);
 
        // Nur fortfahren, wenn die Daten gültig sind
        if ($data) {
            // Alle Variablen einzeln setzen
            foreach ($data as $varName => $value) {
                // Der dritte Parameter (true) erlaubt es,
                // auch nicht-interne Variablen zu setzen
                put($varName, $value, true);
            }
        }
    }
}

Hinweis: Dieser PHP-Code schreibt die vorhandenen Daten direkt in den Datensatz. Die Daten liegen also auch dann vor, wenn der Befragte die entsprechenden Seiten gar nicht (mehr) ausfüllt bzw. korrigiert. Alternativ kann statt put() auch die Funktion preset() genutzt werden. Allerdings muss diese auf jeder Seite aufgerufen werden, auf welche relevante Fragen stehen. Dafür würde es sich anbieten, eine Funktion unter PHP-Funktionen im Fragebogen zu speichern, und diese auf allen betroffenen Seiten aufzurufen.

Hinweis: Der Speicherplatz in der Datenbank für Inhalte ist auf 64kb pro Eintrag begrenzt. Behalten Sie dies im Auge, wenn Sie deutlich mehr als 1000 Variablen oder sehr lange Textantworten oder Rohdaten im Datensatz haben.

Beispiel: Antworten zur Weiterverarbeitung übermitteln

Mitunter sollen die Daten zur Weiterverarbeitung direkt per API an einen anderen Server übermittelt werden. Dafür können die Funktionen sendJSON(), sendPOST() und sendXML() genutzt werden. Die Funktion sendJSON() arbeitet direkt mit caseData() zusammen.

Um die gesamten Daten des Interviews an die URL https://api.example.com/analyze.php zu senden, würden Sie vor der „letzten Seite“ im Fragebogen eine zusätzliche Seite einfügen und darauf folgenden PHP-Code.

$data = caseData();
sendJSON('https://api.example.com/analyze.php', $data);