====== dbSet() ======

Während der Befragung können mit ''dbSet()'' Daten in die **Datenbank für Inhalte** geschrieben werden. Falls schon Eintrag mit demselben Schlüssel existiert, wird dieser aktualisiert -- sonst wird ein neuer Eintrag angelegt.

Mit der Funktion kann auch ein Eintrag aus der Datenbank gelöscht werden.

''void **dbSet**(string //Schlüssel//, false|string|array //Daten//)''

  * //Schlüssel//\\ Der Datenbank-Schlüssel, der angelegt, aktualisiert oder gelöscht werden soll
  * //Daten//\\
    * ''false'' -- Der Datenbank-Eintrag wird gelöscht, falls er vorhanden ist
    * <string> -- Wird ein Text angegeben, wird dieser als erstes (und einziges) Element für den Schlüssel gespeichert
    * <array> -- Wird ein Array als //Daten// übergeben, so werden alle Elemente als Eintrag für den Schlüssel gespeichert

**Hinweis:** Jeder Eintrag in der Datenbank besitzt einen Zeitstempel mit Datum und Uhrzeit der letzten Änderung. Bei einer Aktualisierung mittels ''dbSet()''  wird auch der Zeitstempel aktualisiert (auch dann, wenn die Daten dieselben bleiben!). Falls Sie nur den Zeitstempel aktualisieren möchten, verwenden Sie ''[[:de:create:functions:dbtouch|dbTouch]]''.


===== Beispiel 1 =====

Der folgende PHP-Code speichert Alter (Variable "SD04_01") und Geschlecht (Variable "SD02") unter der Kennung des aktuellen Teilnehmers, damit diese Variablen in einer späteren Erhebungwelle wieder aufgerufen werden können ([[:de:create:databank|Datenfragmente im PHP-Code verwenden]]).

<code php>
$data = array(
  value('SD04_01'),
  value('SD02')
);
dbSet(caseSerial(), $data);
</code>


===== Beispiel 2 =====

Der folgende PHP-Code überprüft, ob ein Eintrag mit der übergebenen Referenz ([[:de:survey:url|Der Link zum Fragebogen]]) existiert. Die Referenz kodiert ein Unternehmen. Nur wenn bisher max. 10 Personen aus diesem Unternehmen teilgenommen haben, darf der Teilnehmer die Befragung fortsetzen.

<code php>
$info = dbGet(reference());
// Kein Zugang ohne gültige Referenz
if ($info == false) {
  text('invalidLink');
  buttonHide();
  pageStop();
}
// In der Datenbank ist im ersten Feld der Name des Unternehmens
// und im zweiten Feld die Anzahl der Teilnehmer hinterlegt.
replace('%unternehmen%', $info[0]);  // Den Platzhalter %unternehmen% vorbereiten
if ($info[1] >= 10) {
  text('tooMuch');
  buttonHide();
  pageStop();
}
</code>

Der Zähler wird erst auf den letzten Seiten des Fragebogens hochgezählt -- ansonsten zählen auch abgebrochene Interviews.

<code php>
// Den Zähler eins hochzählen
if (isset($counted)) {
  $info = dbGet(reference());
  $info[1]++;
  dbSet(reference(), $info);
  // Zusammen mit isset() dafür sorgen, dass nur einmal gezählt wird
  $counted = true;
  registerVariable('counted');
}
</code>


===== Beispiel 3 =====

Evtl. soll der Eintrag zur Referenz aus Beispiel 2 auch einfach gelöscht werden, wenn der erste Teilnehmer  aus dem Unternehmen den Fragebogen ausgefüllt hat. Dazu wird der zweite PHP-Code wie folgt modifiziert.

<code php>
dbSet(reference(), false);
</code>