Nanni
Automatisches Eintragen mit MySQL
1 - Allgemeines
Automatisches Eintragen läuft so ab, dass Daten durch ein einfaches Formular eingegeben und in der MySQL-Datenbanktabelle gespeichert werden, von wo aus man gezielt mit ihnen arbeiten kann. Das Tutorial kann natürlich genauso auf das Eintragen und Verwalten von Pferden, Turniererfolgen, Turnierteilnehmern und vieles mehr angewandt werden.
Voraussetzung ist, dass ihr eure Hoster php unterstützt und MySQL-Datenbanken anbietet. Infos dazu findet ihr meist indem ihr euch bei dem jeweiligen Anbieter einloggt und im Benutzermenü nach "(MySQL-)Datenbanken" oder "phpmyAdmin" sucht. Dort steht dann auch der Link zu eurer persönlichen phpmyAdmin-Seite, mit der Datenbanken bzw ihr Inhalt (auch) verwaltet werden können.
2 - Tabelle erstellen
An sich ist phpmyAdmin durch seine aussagekräftigen Menüpunktbezeichnungen ziemlich selbsterklärend (ggf. Sprache auf Deutsch stellen..). Dieses Tutorial mit Screens erklärt das Erstellen einer Datenbanktabelle, hier nur ganz kurz was ihr für Mitglieder speziell braucht:
# ID, mit dem Typ INT (nur Zahlen möglich), Länge/Set muss die maximale Länge beinhalten ("5" bedeutet hier, die ID darf nur 5 Stellen lang sein, es können als 'nur' 99999 Mitglieder eingetragen werden). Als Index wird hier Unique angegeben, da eine ID nicht doppelt vorkommen darf, zudem wird auto_increment angehackt. Das bewirkt, sollte ein Mitglied ohne ID eingetragen werden, dass automatisch die nächsthöhere Zahl eingetragen wird.
# Der Name bekommt den Typ VARCHAR (Einzeiliges Eingabefeld) zugeordnet, bei Länge/Set wird meist ein Standartwert von 255 angegeben.
# Bei längeren Texten wie der Selbstbeschreibung wird daher der Typ TEXT verwendet, hier darf ausnahmsweise auch Länge/Set freibleiben.
Das Ausbauen der Mitgliedersteckbriefe überlasse ich euch, das Tutorial geht von ID, Name, Email und Selbstbeschreibung aus.
3 - Verbindung zwischen Homepage und Datenbank aufbauen
Das macht man meist mit einer eigenen Datei, welche in alle Seiten, in denen ihr auf die Datenbank zugreifen wollt (Steckbriefe, Übersichten,...), inkludiert wird [include("Datenbank.php");]. Dazu muss sie sich jedoch im selben Ordner befinden wie die Seiten, in welche sie inkludiert wird. In die Datenbank.php - Datei kommt folgender Inhalt:
|
Den oberen Absatz müsst ihr anpassen.
# Hoster ist bei cwsurf "db4.cwsurf.de", bei bplaced sowie funpic "localhost". Bei lima-city war es, wenn ich mich richtig erinnere, "mysql.lima-city.de". Ihr seht, das ist von Hoster zu Hoster unterschiedlich.
# SQL-Name ist immer euer Username (z.B. Musterhof).
# Das Passwort ist meist das gewöhnliche Passwort, nur manche Hoster (lima-city, funpic) fragen bei der Einrichtung der Datenbank nach einem speziellen MySQL-Passwort. Dann dieses nehmen ;D
# Die erste Datenbank hat für gewöhnlich den Namen eures Usernamens, also wieder "Musterhof".
Auch hier findet ihr bei Unklarheiten meist auf der Webseite eures Anbieters alle Infos die ihr braucht!
4 - Anmeldeformular, erste Seite (Daten eingeben)
|
# Wir öffnen PHP und schreiben die HTML-Tags in eine Echo-Ausgabe. Da diese bei " beginnt und bei " aufhört, müssten wir Anführungszeichen innerhalb der Echo-Ausgabe entsprechend kennzeichnen: Mit einem \. Der form-Tag selbst sagt uns, auf welche Datei nach dem Abschicken weitergeleitet werden soll.
# Nun beginnen wir mit der ersten Tabellenzeile, "Name" und Eingabefeld, value steht für einen Wert, der bereits vorgeschrieben ist. Der User kann das natürlich wieder weglöschen bzw umändern. Da die Variable $name noch nicht definiert ist, wird jedoch vorerst nichts angezeigt, den Sinn davon erfährt ihr erst in Schritt 2.
# Nun folgt jedoch nicht wie erwartet das Ende der Zeile, sondern eine if-Anweisung. Wenn $fehler1 (...gesetzt ist), soll der Inhalt dieser Variablen (natürlich eine Fehlermeldung) ausgegeben werden (geprüft wird auf Eingabe bzw auf erlaubte Zeichen). Vorerst haben wir noch das leere Formular und keinerlei Fehlermeldungen, die da stehen.
# Dann geben wir weiter aus - hier dürfen wir nicht vergessen, die Tabellenzeile zu beenden, ehe wir die nächste anfangen. Auch beim Alter und der Mailadresse wollen wir prüfen, ob das Feld ausgefüllt ist. Die Selbstbeschreibung (Textarea) ist freiwillig.
# Zum Schluss beenden wir die vorletzte Zeile und fügen mit "Submit" den Absendebutton ein. Danach müssen wir natürlich noch form-Tag, Tabelle und php schließen.
5 - Anmeldeformular, zweite Seite (auf Fehler prüfen & eintragen)
|
# Hier fragen wir erstmal die geposteten Variablen ab, wie bei jedem Formular. Danach schauen wir mit preg_match, welche Zeichen in $name enthalten sind. Erlaubt sollen Buchstaben sowie Leerzeichen sein, diese geben wir an und legen mit ^ fast, dass geprüft wird ob etwas vorkommt das nicht den angegebenen Zeichen entspricht - das ist einfacher, als diverse Sonderzeichen aufzulisten, die blockiert werden sollen. Wenn preg_match solche Zeichen findet definieren wir die Fehlermeldung, die dann unter dem Namen angezeigt wird (siehe Seite eins).
# Dann inkludieren wir die Datenbank-Datei, damit wir Zugriff auf die Datenbank haben, das brauchen wir für den nächsten Schritt.
# Nun bauen wir eine kleine Abfrage ein, wir suchen das Mitglied $name in unserer Mitgliedertabelle. Dort steht es ja bis jetzt noch nicht, es sei denn, ein anderes Mitglied hat schon den Name. Dann ist das Suchergebnis > 0 und die Fehlermeldung, der Benutzname sei schon vergeben, wird definiert.
# Anschließend prüfen wir, ob der Name leer ist. Dann geben wir als diesen Fehler doch lieber aus, dass kein Name eingeben wurde!
# Bei Alter und Mailadresse prüfen wir, ob sie eingegeben wurden.
Wenn nun einer der Fehler gesetzt wurde - was ja nur passiert, wenn es einen Fehler gibt - wird das Formular includet. Es enthält nun in allen Feldern bereits die vorhin getätigten Eingaben des Users, da wir ja die Variablen $name, $alter usw definiert haben als das vom User eingegebene. Zudem erscheinen nun all jene Fehlermeldungen, die gesetzt wurden.
Wenn keiner der Fehler gesetzt wurde
# Erst definieren wir $eintrag mit einem MySQL-Query: Es besagt dass eine Zeile eingefügt werden soll (INSERT INTO), und zwar in die Datenbanktabelle "Mitglieder". Danach wird den angegebenen Feldern der Tabelle jeweils ein Inhalt zugewiesen. Die ' ' können frei bleiben (bei ID wird Dank auto_increment automatisch die nächsthöhere ID zugewiesen), eine Variable beinhalten oder auch einfach ein Wort (z.B. für das Feld Status: 'Probemitglied' o.ä.).
# Nun wird mit $eintragen der Query ausgeführt, MySQL liefert dann entweder true oder false zurück. Je nach dem soll ausgegeben werden, ob die Anmeldung gelungen ist oder nicht. Bei einem Fehler - was eigentlich nicht vorkommen sollte - wird neben der Fehlermeldung wieder die erste Datei (mitsamt Eingaben) inkludiert.
Ich hoffe, es klappt alles und hilft euch, ansonsten könnt ihr natürlich gerne hier nachfragen bzw wenn was unklar ist, einfach schreien

LG Nanni