Derzeit online: ca. 71 User  
Spenden via PayPal PHP für dich ist auch als Buch erhältlich - im handlichen Format, zum Nachschlagen, Mitnehmen oder gemütlichen nebenbei Lesen. Mit noch mehr Informationen, zusätzlichen Beispielen und Übungsaufgaben.
Jetzt in der aktualisierten Version bei Amazon oder BoD bestellen!


Schnipsel

PHP und mySQL - Beispiel einer Umfrage

Eine ganz simple Umfrage ist mit Hilfe von PHP und MySQL sehr leicht zu bewerkstelligen. Simpel vor allem deshalb, weil bei diesem Script die Möglichkeit besteht, dass ein User mehrfach abstimmt.

Zunächst brauchen wir ein Formular für die Abfrage:
<form action="abstimmen.php" method="post">
Welches Tier h&auml;ttest du gerne als Haustier?
<br /><br />
<input type="radio" name="Haustier" value="Katze"> Katze
<br />
<input type="radio" name="Haustier" value="Hund"> Hund
<br />
<input type="radio" name="Haustier" value="Nagetier"> Nagetier
<br />
<input type="radio" name="Haustier" value="Sonstiges"> Sonstiges
<br /><br />
<input type="submit" value="Absenden">
</form>
Wir bieten dem Benutzer also vier Möglichkeiten, sich zu entscheiden. Diese vier Möglichkeiten müssen wir beim Anlegen unserer Tabelle berücksichtigen, sie legen nämlich unsere Datensätze fest, das heißt, für jedes Tier wird ein Datensatz angelegt, bei dem in einer extra Spalte gezählt wird, wie oft das Tier schon ausgewählt wurde.

Damit ist auch schon klar, was für Spalten wir in unserer Tabelle brauchen: Eine für die Id, eine, die das Tier festlegt (könnte man aber auch über die Id regeln, wenn man möchte) und eine, in der gezählt wird.

Wir legen also über phpMyAdmin eine neue Tabelle mit dem Namen haustierwunsch an, die drei Felder bekommt: id, haustier und count. Das Feld id wird unser Primärschlüssel (primary key).

id - int - 1 - unsigned - not null - auto_incremt
haustier - varchar - 10
count - int - 10

Das auto_increment ist nicht unbedingt nötig, da wir ohnedies nur vier Datensätze haben werden, aber da wir direkt über phpMyAdmin die Datensätze angeben, ersparen wir uns ein wenig Arbeit dadurch.

Als nächstes müssen wir also unsere Datensätze in die Tabelle einfügen. Dafür wählen wir "Einfügen" und geben einfach in das Feld "Haustier" zunächst Katze ein. Die Felder id und count können wir so lassen, wie sie sind. Id deshalb, weil wir ja auto_increment gewählt hatten und sich die id damit selbst festlegt und das Feld count, weil es ein Feld vom Typ Integer ist und auf "NOT NULL" steht und damit automatisch den Standardwert 0 zugewiesen bekommt, wenn wir die Vorbelegung nicht ändern.

Wir legen jetzt noch drei weitere Datensätze für Hund, Nagetier und Sonstiges an und gehen dabei genauso vor.

Wenn man "anschließend eine neuen Datensatz einfügen" anwählt, muss man übrigens nicht jedes Mal neu auf Einfügen gehen.

Nachdem unsere Tabelle jetzt angelegt ist, können wir uns mit der Weiterverarbeitung unserer ausgewählten Haustiere befassen.

Dafür benötigen wir die Datei abstimmen.php auf die das Formular zielt. In dieser Datei nehmen wir zunächst die Daten aus dem Formular entgegen:
<?php
$haustier = $_POST["Haustier"];
?>
Wichtig ist hierbei, auf die richtige Schreibweise im Formular zu achten. Da wir dort als Formularnamen "Haustier" großgeschrieben verwendet haben, müssen wir darauf achten, es jetzt auch groß zu schreiben. Der Variablenname kann hingegen ruhig anders geschrieben sein - oder sogar ganz anders lauten. An dieser Stelle der Hinweis, dass hier keinerlei Sicherheitsüberprüfung der übergebenen Daten stattfindet. Mehr Informationen dazu, findest du bei Daniel Fett.

Als nächstes fragen wir in der Tabelle ab, wie oft denn das dieses Mal ausgewählte Haustier bisher bereits gewählt wurde:
<?php
$abfrage = mysqli_query($db, "SELECT * FROM haustierwunsch WHERE haustier = '$haustier'");
?>
Ich kombiniere in dem Fall die Abfrage gleich mit dem Abfragebefehl (mysqli_query), da diese Variante für mich übersichtlicher ist.

Da wir nur einen Datensatz zurückgeliefert bekommen können wir die while-Schleife sparen und den Datensatz direkt umschreiben lassen:
<?php
$datensatz = mysqli_fetch_object($abfrage);
$haustieranzahl = $datensatz->count;
?>
In der Variable haustieranzahl ist jetzt also gespeichert, wie oft das Haustier bereits ausgewählt wurde - in unserem Fall 0-mal, da wir ja vorher noch nicht gewählt haben.

Diese Anzahl wird jetzt um eins erhöht, um die Stimme dazu zu zählen, die eben gewählt hat.
<?php
$haustieranzahl++;
?>
Als nächstes muss diese Zahl in der Datenbank angepasst werden, dafür ändern wir den Datensatz:
<?php
$update = mysqli_query("UPDATE haustierwunsch Set count = '$haustieranzahl' WHERE haustier = '$haustier'");
?>
Damit der User bemerkt, dass seine Wahl auch wirklich angenommen wurde, geben wir jetzt noch ein Danke an ihn aus. Das kann entweder über den PHP-Befehl echo erfolgen, oder einfach außerhalb des PHP-Bereiches.
<?php
echo "Danke, dass du abgestimmt hast.";
?>
oder eben einfach nur
Danke, dass du abgestimmt hast.
Wenn wir jetzt die Datei mit dem Formular aufrufen, dort ein Haustier auswählen und dann durch einen Klick auf den Button die abstimmen.php aufrufen, sollte sich in der Datenbank die Anzahl beim gewünschten Haustier erhöht haben.

Man kann die Umfrage natürlich auch so umbauen, dass für jede Abstimmung ein eigener Datensatz angelegt wird, der auch das Haustier beinhaltet. Damit hat man dann auch die Möglichkeit, die IP-Adresse oder einen Benutzernamen mitzuloggen und somit jeden User nur einmal abstimmen zu lassen. Dadurch ändern sich aber auch die Abfragen.

Viel Spaß beim Ausprobieren, Umbauen und Anpassen.

Autor: Claudia Unkelbach
© 2001 - 2017 Claudia Unkelbach
Gießener Straße 75, 35396 Gießen