====== 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. Der Schlüssel muss zwischen 2 und 63 Zeichen lang sein. Umlaute benötigen u.U. mehr als ein Zeichen. * //Daten//\\ * ''false'' -- Der Datenbank-Eintrag wird gelöscht, falls er vorhanden ist * -- Wird ein Text angegeben, wird dieser als erstes (und einziges) Element für den Schlüssel gespeichert * -- 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]]). $data = array( value('SD04_01'), value('SD02') ); dbSet(caseSerial(), $data); ===== 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. $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(); } Der Zähler wird erst auf den letzten Seiten des Fragebogens hochgezählt -- ansonsten zählen auch abgebrochene Interviews. // 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'); } ===== 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. dbSet(reference(), false);