SoSci Survey
Übersetzungen dieser Seite:
 

Datenbank für Inhalte

In den Spezialfunktionen findet sich eine Datenbank für Inhalte. Dies ist eine projektinterne Miniatur-Datenbank, in der Daten für die Verwendung im Fragebogen abgelegt oder sogar während des Inteviews geändert werden können. Das führt zu vielfältigen Möglichkeiten, z.B.

  • Eine größere Anzahl von Textfragmenten effizient verwalten
  • Werte an nachfolgende Interviews übergeben
  • Anhand des Teilnahmeschlüssels (Seriennummer) oder der Referenz personalisierte Daten einblenden
  • Eingabefelder im Fragebogen individuell vorbelegen (in Kombination mit preset())

Der Fragetyp Erweiterte Auswahl bietet darüber hinaus die Möglichkeit, auf die Datenbank zuzugreifen. So lassen sich lange und/oder dynamische Auswahlfagen programmieren.

Datenfragmente im PHP-Code verwenden

Mitunter benötigt man im PHP-Code eine Vielzahl von Texten - z.B. um nummerische Codes in Textbausteine oder Dateinamen zu übersetzen. Wenn die Anzahl der Texte überschaubar ist, kann man dies einfach mit einer if/elseif oder switch/case Konstruktion lösen:

$stimulus = random(1,3);
switch ($stimulus) {
  case 1: $text = 'Apfelbaum'; break;
  case 2: $text = 'Birnbaum'; break;
  case 3: $text = 'Clementinenbaum'; break;
}

Wenn die Anzahl der Möglichkeiten oder die Länge der Texte aber wächst, dann wird der PHP-Code schnell unübersichtlich – oder erzeugt beim Einfügen in den Fragebogen gar Probleme, weil er Größengrenzen sprengt. Für diesen fall gibt es eine projektinterne Datenbank für Inhalte, zu finden bei den Spezialfunktionen. Dieses Kapitel erklärt die Verwendung der Datenbank.

Wichtig: Bitte beachten Sie, dass die Daten in der Datenbank für Inhalte beim Export des Projekts noch nicht exportiert werden. Beim Archivieren eines Projekts werden die Daten nicht archiviert, sondern gelöscht. Eine Änderung dieses Verhaltens ist in kommenden Programmversionen vorgesehen.

Funktion

In der Datenbank für Inhalte können Paare aus jeweils einem Schlüssel (eine Kennung) und Daten hinterlegt werden.

  • Der Schlüssel kann eine Zahl oder ein kurzer Text (max. 64 Zeichen) sein.
    • Wenn man Schlüssel für unterschiedliche Kategorien benötigt, kann man dem zahlencode einfach einen Buchstaben voranstellen, z.B. A1, A2 und A3 für Kategorie 1 sowie B2, B2, B3 und B4 für Kategorie 2.
    • Der Schlüssel darf zu Beginn und am Ende keine Leerzeichen enthalten (diese werden abgeschnitten). Steuerzeichen (Tabulator o.ä.) werden entfernt. Leerzeichen und Sonderzeichen sind hingegen erlaubt.
  • Die Daten sind jeweils Kombinationen (Arrays) aus einer oder mehreren Texten und/oder Zahlen. Zahlen werden wie Texte behandelt und liegen später im Fragebogen als Text vor (z.B. '1'). Steuerzeichen (z.B. Zeilenumbrüche) sind in den Texten nicht möglich – HTML-Tags selbstverständlich schon.

Im Fragebogen kann man dann anhand des Schlüssels die hinterlegten Daten abrufen. Bildlich dargestellt könnte eine Datenbank folgende Paare aus Schlüsseln und Daten enthalten:

SchlüsselDaten (Kombinationen)
A1(Apfelbaum, Äpfel)
A2(Birnbaum, Birnen)
A3(Clementinenbaum, Clementinen)
B1(6)
B2(12)
B3(18)
B4(24)
B5(30)

Daten einlesen

Die Daten müssen zunächst in einer Tabelle vorliegen, z.B. in Excel oder OpenOffice Calc:

  • Dabei muss die erste Spalte den Schlüssel enthalten,
  • die weiteren Spalten enthalten die Daten.
  • In der ersten Zeile dürften keine Überschriften stehen, die Tabelle muss sofort mit Daten beginnen.

Um die oben dargestellten Datenbankeinträge zu erzeugen, würde Ihre Tabelle aussehen wie folgt:

A1ApfelbaumÄpfel
A2BirnbaumBirnen
A3ClementinenbaumClementinen
B16
B212
B318
B424
B530

Diese Tabelle speichern Sie im Dateiformat CSV (Character Separated Values) ab. Das ist nichts anderes als eine Textdatei, in der die Werte hintereinander stehen und durch ein vorgegebenes Zeichen (z.B. einen Tabulator) getrennt sind.

In oFb wählen Sie unter SpezialfunktionenDatenbank für Inhalte nun bei Daten einlesen (CSV) die CSV-Datei aus und bestätigen mit OK. Im folgenden Fenster werden noch ein paar Details abgefragt – normalerweise erkennt oFb die korrekten Format-Einstellungen der Datei automatisch.

Wenn Sie in einem mehrsprachigen Projekt arbeiten, können Sie für unterschiedliche Sprachversionen unterschiedliche Daten hinterlegen. Das Programm wird immer prüfen, ob für die aktuelle Sprachversion ein eigener Eintrag vorliegt – und wenn nicht, wird der Eintrag aus der Basissprache verwendet (Mehrsprachige Befragungen).

Hinweis: Jede Zeile in der Tabelle muss mindestens 2 Spalten haben. Zeilen, die nur einen Schlüssel oder gar keine Daten enthalten, werden beim import ignoriert.

Verwendung im PHP-Code

Die Verwendung der Daten im PHP-Code ist trivial: Mit dem Befehl dbGet() werden die Daten zu einem Schlüssel ausgelesen. Mit dem befehl dbKeys() kann man sich die verfügbaren Schlüssel auflisten lassen.

Im folgenden Beispiel werden 2 Zufallszahlen gezogen (entsprechend den Kategorien A und B) und mithilfe der Daten in einen Text umgewandelt. Bitte beachten Sie, dass die Daten jeweils als Kombination (Liste) vorliegen – das erste und ggf. einzige Element in so einer Liste hat jeweils den Index 0.

$zahlA = random(1,3); // Obstsorte (1-3)
$zahlB = random(1,5); // Anzahl Früchte (1-5)
$keyA = 'A'.$zahlA; // Dem Zahlencode ein 'A' voranstellen => 'A1' bis 'A3'
$keyB = 'B'.$zahlB; // Dem Zahlencode ein 'B' voranstellen => 'B1' bis 'B5'
$dataA = dbGet($keyA); // Die Daten für den Schlüssel A auslesen
$dataB = dbGet($keyB); // Die Daten für den Schlüssel B auslesen
 
$baum = $dataA[0]; // Im ersten Datenfeld der A-Daten steht ein Baum
$frucht = $dataA[1]; // Im zweiten Datenfeld der A-Daten steht die zugehörige Frucht
$anzahl = $dataB[0]; // Im ersten Datenfeld der B-Daten steht eine Anzahl
 
// Das ganze zu einer Beschreibung verknüpfen
$text = 'Der '.$baum.' hatte in diesem Jahr '.$anzahl.' '.$frucht.'. Hat sich der eingesetzte Dünger bezahlt gemacht?';
// Auf die Seite schreiben - alternativ könne man den Text als Platzhalter verwenden
html('<p>'.$text.'</p>');

Das einfache Beispiel von ganz oben ließe sich wie folgt programmieren.

$stimulus = random(1,3);
$data = dbGet('A'.$stimulus);
$text = $data[0];

Daten ändern

Sofern Sie die Daten ändern möchten, importieren Sie eine neue CSV-Datei. Doppelte Schlüssel werden dabei einfach aktualisiert.

Um Einträge zu löschen, löschen Sie mit dem roten Kreuz rechts oben alle Einträge und importieren Sie die aktualisierten Daten erneut.

Daten dynamisch ändern

Mit der Funktion dbSet() können Einträge in der Datenbank für Inhalte auch während des Interviews geändert oder gelöscht werden.

de/create/databank.txt · Zuletzt geändert: 20.09.2012 22:04 von admin
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 3.0 Unported
Driven by DokuWiki