vielseitiges Formular
Die Aufgabenstellung:
Im Zuge einer Marketingaktion sollten 400 Postkarten die einen personalisierten Link enthalten versendet werden.
Dieser Link sollte den Kunden zu einer Umfrage mit Gewinnspiel leiten.
Für die Postkartenempfänger sollte das Gewinnspiel personalisiert gestaltet sein.
Auch andere Besucher der Firmen-Homepage sollten am Gewinnspiel teilnehmen können. Hierfür sollten jedoch mehr Benutzerangaben abgefragt werden als bei den Postkarten empfängern.
Die Umsetzung:
Ich entschied mich dafür das Gewinnspiel für alle Benutzer als ein einziges Formular anzulegen. Zur erstellung des Formulars benutzte ich das HTML_QuickForm Packet. Ich habe schon öfters damit die verschiedensten Formulare entwickelt und nur gute Erfahrungen damit gemacht, deshalb griff ich auch hier wieder darauf zurück.
Um alles in nur einem einzigen Formular zu realisieren benötigte ich eine Art der Unterscheidung zwischen Postkartenempfänger und Homepage Besucher.
Dies bewerkstelligte ich über den personalisierten Postkartenlink den die Kunden erhalten hatten.
Über eine Konfigurationsdatei legte ich eine sogenannte “Rewrite-Rule” an.
RewriteRule ([a-zA-Z]*)(_|-)([a-zA-Z]*) http://www.tanner.it/it/sondaggio/sondaggio.php?vname=$1&name=$3 [L]
RewriteRule (.*) http://www.tanner.it/it/sondaggio/sondaggio.php [L]
Somit wurden die Kunden auf das Gewinnspiel umgeleitet und die Kombination aus Vor- und Nachnamen in einen, über $_GET, lesbaren String umgewandelt.
Vor der Umwandlung:
In veränderter Form:

Nun legte ich in einer MySQL Datenbank eine Tabelle mit allen Vor-und Nachnamen der Postkarten Empfänger an.
Da das Formular ohnehin auf einer PHP Datei basierte war es nun ein leichtes eine Verbindung zur Datenbank aufzubauen und den Namen aus der URL mit dem in der Datenbank abzugleichen.
$vname = $_GET[‘vname’];
$name = $_GET[‘name’];
$SQLQuery = “SELECT * FROM umfrage_daten u WHERE u.VName = \”$vname\” AND u.PName = \”$name\”;”;
In der Datei selbst waren zwei verschiedene Formulare eingebunden. Über ein IF wurde nun entschieden ob das für Bekannte oder Unbekannte Benutzer aufgerufen wird.
Unbekannte Benutzer mussten zusätzlich zu ihrer E-Mail Adresse und der Frage auch noch weitere Kontaktdaten angeben um an dem Gewinnspiel teinmehmen zu können.
Unbekannte Benutzer
Bekannte Benutzer

Es wurden außerdem noch weitere Funktionen implementiert.
Sollte ein Benutzer zwar einen Namen eingegeben haben, dieser aber nicht in Datenbank gefunden sein, erschien ein Hinweistext.
Bekannte Benutzer die bereits Teilgenommen hatten konnten sich nicht noch einmal eintragen, dies verhinderte eine Abfrage in der Datenbank.
Nach der Validierung des Formulars wurden die eingegeben Daten an die Datenbank übermittelt.
Bei Postkartenempfängern:
if($abteilung)
{
$SQLQuery.=”,Abteilung =\”$abteilung\”“;
}
$SQLQuery.=” WHERE Nr =\”$nr\” ;”;
$result = mysql_query($SQLQuery) OR die();
Bei neu Kunden
Nr,
Anrede,
Name,
VName,
Abteilung,
Unternehmen,
Strasse,
HNr,
PLZ,
Ort,
EMail,
Antwort) VALUES (
\”\”,
\”$titel\”,
\”$name\”,
\”$vname\”,
\”$abteilung\” ,
\”$unternehmen\”,
\”$strasse\”,
\”$hnr\”,
\”$plz\”,
\”$ort\”,
\”$newmail\”,
\”$antwort\”);”;
$result = mysql_query($SQLQuery) OR die();