====== Fortsetzung anhand eines externen Codes ======
Diese Anleitung beschreibt, wie Sie eine Referenz ([[:de:survey:url#einen_link_markieren_r|Einen Link markieren]]) oder einen anderweitig übergebenen Personencode ([[:de:create:questions:client]]) nutzen können, ...
* um ein unterbrochenes Interview fortzusetzen (siehe auch [[:de:survey:resume]]).
* um die mehrfache Teilnahme zu unterbinden (siehe auch [[:de:survey:unique-respondents]]).
* um mehrere Frageböge in einem Befragungsprojekt unabhängig voneinander fortsetzen zu können (verwenden Sie dafür unterschiedliche Präfixe in den Datenbankschlüsseln).
**Hinweis:** Verwenden Sie diese Umsetzung nur, wenn die reguläre Lösung mittels [[:de:survey:mailing:sosci|Serienmails]] oder [[:de:survey:serials]] etwas aus organisatorischen Gründen nicht verwendet werden kann.
===== Funktion =====
Bei dieser Lösung wird die [[:de:create:databank]] genutzt. Hier wird für jeden Personencode die [[:de:survey:url#interview-kennung_i|Kennung des Interviews]] (case token) abgelegt. Anhand der Interview-Kennung kann das vormals begonnene Interview fortgesetzt werden.
===== Umsetzung =====
Lesen Sie auf der ersten Seite des Fragebogens die Personenkennung ein, hier im Beispiel würde diese als Referenz (''r=...'') im Link übergeben.
$personID = reference();
Prüfen Sie anschließend, ob in der Datenbank für Inhalte ein Eintrag für diese Personenkennung existiert. Der folgende PHP-Code stellt der Kennung noch ein Präfix ''user'' voran. Dies vereinfachte die Verwendung der Datenbank für unterschiedliche Zwecke. Das Präfix kann frei gewählt werden.
$key = 'user-'.$personID;
$info = dbGet($key);
Falls ein Eintrag existiert, erfolgt direkt eine Weiterleitung zu dem entsprechenden Fall, und das aktuelle Interview wird aus dem Datensatz gelöscht. Ansonsten (''else'') wird die Interview-Kennung des aktuellen Interviews in die Datenbank geschrieben.
if ($info) {
$url = info('project.url').'?i='.$info[0];
dropCase();
redirect($url);
} else {
dbSet($key, caseToken());
}
Die oben genannten PHP-Code-Teile müssen alle zusammen in einem "PHP-Code" Element stehen. Dieses ganz oben auf der ersten Fragebogen-Seite platziert werden. Es ist aber auch denkbar, z.B. den Eintrag in die Datenbank für Inhalte erst nach einem Screenout vorzunehmen. DAnn würde der ''else''-Teil zu Beginn wegfallen, und der später platzierte Code wurde aussehen wie folgt.
$personID = reference();
$key = 'user-'.$personID;
dbSet($key, caseToken());
Somit würde ein Interview nur dann fortgesetzt, wenn die Stelle mit dem zweiten PHP-Code mit ''dbSet()'' erreicht wurde.