Php

MySQL Grundlagen (Php Tutorial)

Tutorial erstellt von Basti, letzte Änderung am 26.05.2008

Einführung

MySQL ist ein SQL-Datenbankverwaltungssystem der schwedischen Firma MySQL AB. Es ist als Open-Source-Software für verschiedene Betriebssysteme verfügbar und somit die Grundlage vieler Webauftritte.
Immer wenn Daten zum späteren Abrufen gespeichert werden sollen, bietet sich die Verwendung einer Datenbank an. Zwar gibt es auch die Möglichkeit, Daten in Textdateien o.ä. abzuspeichern, dies ist jedoch wesentlich unübersichtlicher und unkomfortabler.
Denn mit Datenbanksystemen wie MySQL lassen sich Datensätze leicht eintragen und anschließend ausgeben, aktualisieren oder entfernen.
Kommen wir aber erst zu einer kleinen Einführung zur Funktionsweise von MySQL.
In MySQL gibt es Datenbanken, in denen einzelne Tabellen zur Speicherung von Daten erstellt werden können. In diese Tabellen werden dann später deine Daten eingetragen. Diese werden zum Beispiel wie folgt eingetragen (wie bei einer üblichen Tabelle):

| Name    | Wohnort     | Signatur            |
| Max        | Berlin           | Hallo Welt!        |
| Hans     | München     | Lorem ipsum...|

Für die verschiedenen Werte, die später gespeichert werden sollen, können Spalten beim Erstellen der jeweiligen Tabelle festgelegt werden.
Beim Eintragen von neuen Datensätzen wird dann jeweils eine neue Zeile pro Eintrag erstellt.

MySQL Tabellen erstellen:

Damit wir mit MySQL Tabellen arbeiten können, musst du zuerst einmal eine Tabelle in einer Datenbank erstellen. Am besten machst du das mit phpMyAdmin.
Diese Software wird meistens zum Verwalten von MySQL Datenbanken verwendet und ermöglicht eine einfache Konfiguration der einzelnen Datenbanken. Zwar kann man das ganze auch per Mausklick in phpMyAdmin erledigen, es schadet aber nicht, wenn man auch weiß, wie der Code dazu aussieht.

Nachdem du dich bei phpMyAdmin eingeloggt hast, klicke auf dieses Symbol (so oder so ähnlich). Du findest es links, direkt unter dem Logo von phpMyAdmin.
Daraufhin öffnet sich ein neues Fenster, in dem du MySQL Befehle ausführen kannst. Als erstes kannst du die Datenbank auswählen, in der die neue Tabelle erstellt werden soll.
Danach kannst du in die Textbox einen MySQL Befehl zum Erstellen der neuen Tabelle eintragen.
Code:
CREATE TABLE `Name_der_Tabelle` (
`Spalte_1` TYP(ANZAHL DER ZEICHEN) ZUSÄTZLICHES,
`Spalte_2` TYP(ANZAHL DER ZEICHEN) ZUSÄTZLICHES,
INDIZES
);

Mit dem Befehl "CREATE TABLE" wird eine neue Tabelle innerhalb der ausgewählten Datenbank erstellt. Danach gibst du einen beliebigen Namen an, der jedoch möglichst kurz sein und den Inhalt der Tabelle gut wiedergeben sollte.
Innerhalb der beiden Klammern kommt nun die Struktur der Tabelle. Jede Spalte kommt aus Gründen der Übersichtlichkeit in eine neue Zeile und wird durch ein Komma von der nächsten abgetrennt. Nur bei der letzten Angabe wird kein Komma gesetzt, da dort natürlich keine Angabe mehr folgt.
In MySQL gibt es nun verschiedene Spaltentypen, um Daten optimal abzuspeichern. Da man vorher meistens weiß, was später in die jeweilige Spalte eingetragen wird, sollte dieser Typ möglichst darauf abgestimmt werden.
Hier sind ein paar Typen, die für den Anfang reichen sollten:

  • INT() - steht für INTEGER (engl. für "Ganzzahl") und wird bei Spalten benutzt, in die nur Ganzzahlen eingetragen werden (ca. -2 Mrd bis +2
    Mrd.)

  • SMALLINT() - genauso wie INT(), geht aber von -32768 bis +32767

  • TINYINT() - genauso wie INT(), geht aber von -128 bis +127

  • DEC(M,D) - steht für DECIMAL (engl. für "Dezimale") und wird bei Spalten benutzt, in die ungerade Zahlen eingetragen werden (M = Anzahl
    der Zeichen, davon D Dezimalstellen)

  • CHAR() oder VARCHAR() - diese Angabe wird für Spalten gemacht, in die auch Schriftzeichen eingetragen werden; der Unterschied besteht in der
    Art wie die Daten abgespeichert werden, deshalb kann der richtige Einsatz Speicherplatz sparen
    (hier nachzulesen)

  • TEXT() - in diesen Spaltentyp können alle möglichen Schriftzeichen eingetragen werden, weshalb er für längere Texte benutzt werden sollte (max. 65535 Zeichen)

  • TINYTEXT() - genauso wie TEXT(), erlaubt aber max. 255 Zeichen

  • weitere Spaltentypen im MySQL Referenzhandbuch


Innerhalb der Klammern kann dann eine maximale Anzahl an Zeichen
angegeben werden. Wenn zum Beispiel eine Spalte für einen Namen erstellt
werden soll, würde ein Wert von "20" völlig ausreichen. Dadurch werden die Spalten nicht zu groß und die Daten verbrauchen nicht unnötig Speicherplatz.
Falls du nicht genau weißt, wie groß die Eintragungen werden (zum Beispiel bei einem Textfeld für ein Gästebuch) kannst du das ganze auch ohne Klammern schreiben. Dann hat die Spalte die maximale Größe für den aktuellen Spaltentyp.
Als nächstes kommen wir zu dem "ZUSÄTZLICHEN". Dort musst du zwar keine Angaben machen, oft sind diese aber sinnvoll. Ein Beispiel wäre "NOT NULL" oder "NULL". Bei "NOT NULL" darf die Spalte beim Eintragen nicht leer sein, bei "NULL" ist sie standardmäßig leer.
Desweiteren gibt es die Möglichkeit, mithilfe der Angabe "DEFAULT" Standardwerte für eine Spalte zu definieren.
Speziell für numerische Spaltentypen gibt es außerdem den Zusatz "UNSIGNED", der alle negativen Werte aus dem eigentlichen Wertebereich des Typs verbietet und dafür den positiven Wertebereich verdoppelt (z.B. SMALLINT UNSIGNED 0 - 65535).
Eine weitere Angabe, an der man früher oder später nicht vorbeikommt, ist der Befehl "AUTO_INCREMENT", der in Verbindung mit einem numerischen Spaltentyp (z.B. "INT") verwendet wird. Bei jedem neuen Eintrag in die
MySQL Tabelle wird der Wert in dieser Spalte, beginnend mit 1, um den Wert 1 erhöht (also so: 1, 2, 3, 4, ...).
Dadurch ist es beim späteren Aktualisieren und Entfernen von Datensätzen aus der Tabelle leicht, bestimmte Datensätze in der Tabelle ausfindig zu machen, denn jeder Zeile wird ein eindeutiger und einmaliger Wert zugeordnet.
Außerdem gibt es noch die Möglichkeit, Indizes zu setzen, zu denen unter anderem "PRIMARY KEY", "UNIQUE" und "INDEX" gehören. Diese sollten bestimmten Spalten zugeordnet werden, um so die Performance von Datenbankoperationen zu verbessern.
So sollte der "PRIMARY_KEY" für die "AUTO_INCREMENT"-Spalte, "UNIQUE" für Spalten, in denen keine doppelten Werte vorkommen und "INDEX" für Spalten, die oft für Abfragen genutzt werden, verwendet werden. Wichtig ist hierbei, dass jeder Spalte nur ein Index zugewiesen werden kann.
Hier ist nun ein kleines Beispiel für das Erstellen einer neuen Tabelle:
Code:
CREATE TABLE `Mitglieder` (
`id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
`nick` VARCHAR(20) NOT NULL,
`name` VARCHAR(20) NOT NULL,
`wohnort` VARCHAR(15) NULL DEFAULT 'Berlin',
`signatur` TEXT NULL,
PRIMARY KEY (`id`),
UNIQUE (`nick`)
);

Mit diesem Befehl wird eine Tabelle namens "Mitglieder" mit den Spalten "id", "nick", "name", "wohnort" und "signatur" erstellt. Die Spalte "id" wird bei jedem Eintrag automatisch erhöht, sodass später zum Beispiel der Eintrag, an dem die ID gleich "5" ist, bearbeitet werden kann.
So kommt es später beim Verwalten der Zeilen zu keinerlei Problemen, da jeder Eintrag seine eindeutige ID besitzt. Die Spalten "name" und "wohnort" könnten ja theoretisch bei einigen Benutzern identisch sein.
Den SQL Befehl kannst du nun durch einen Klick auf "OK" in phpMyAdmin ausführen. Danach erscheint die soeben von dir erstellte Tabelle in der Übersicht der Tabellen in phpMyAdmin und kann benutzt werden.

Arbeiten mit MySQL Tabellen

Verbindung zur Datenbank herstellen

Kommen wir jetzt zur Verwendung der zuvor erstellten Tabelle. Denn jetzt können Daten in die Tabellen eingetragen werden. Zuvor müssen wir aber in unserem PHP Code eine Verbindung zu der Datenbank und der Tabelle herstellen, damit wir Zugriff auf die Tabelle haben. Diese Funktionen
müssen immer dann ausgeführt werden, wenn mit MySQL Datenbanken
gearbeitet wird. Dazu verwenden wir folgenden Code:
Code:
<?php
  $db = mysql_connect('Hostname','Benutzername','Passwort');
  mysql_select_db('Name_der_Datenbank', $db);
?>

Hier musst du die Zugangsdaten zu deiner Datenbank angeben. Der "Hostname" ist in der Regel "localhost". Wenn dieser Code nun ausgeführt wird, ist die Verbindung zur Datenbank hergestellt. Über die Funktion "mysql_connect()" wird die Verbindung zu MySQL hergestellt und mit "mysql_select_db()" die Datenbank, in der sich die zuvor erstellte Tabelle befindet, ausgewählt.

Datensätze eintragen, aktualisieren und entfernen

Fangen wir nun damit an, Werte in die Tabelle einzutragen. Um sogenannte Queries in einer Datenbank auszuführen, wird die Funktion "mysql_query()" verwendet. Innerhalb der Klammern kommt dann der auszuführende SQL Befehl. Um eventuelle Fehler auszugeben, werden diese mit einem "OR die()" abgefangen und über die Funktion "mysql_error()" ausgegeben. Das ganze steht natürlich noch innerhalb des PHP Tags.
Code:
mysql_query("BEFEHL", $db) OR die(mysql_error());

Um Daten in unsere Tabelle einzutragen, wird der Befehl "INSERT INTO" (engl. für "einfügen in") verwendet. Darauf folgend wird der Name der Tabelle und anschließend die Spalten mit den jeweiligen Werten ("VALUES") aufgeführt. Das könnte dann für unser Beispiel so aussehen. Als "VALUES" (engl. für "Werte") können auch Variablen aus beispielsweise einem Formular angegeben werden.
Code:
mysql_query("INSERT INTO Mitglieder (nick, name, wohnort, signatur) VALUES ('mberlin', 'Max', 'Berlin', 'Hallo Welt!')", $db) OR die(mysql_error());

Wenn alles richtig gemacht wurde, ist nun der erste Datensatz in der
Tabelle gespeichert worden. Bei MySQL haben wir jetzt die Möglichkeit, diese zu aktualisieren. Dazu verwenden wir den Befehl "UPDATE" (engl. für "aktualisieren").
Wie schon beim Eintragen von Daten wird die jeweilige Tabelle angegeben und nach einem "SET" für jeden Wert der Name der Spalte und dann der einzutragende Wert definiert.
Neu ist die Angabe "WHERE". Diese gibt Kriterien für die Aktualisierung der Spalten an, also im Prinzip welche Datensätze aktualisiert werden sollen.
Dazu nimmt man am besten einen Wert, der nur in dem zu ändernden Eintrag vorhanden ist. In unserem Beispiel ist es noch nicht sehr kompliziert, da auch nur ein Eintrag vorhanden ist.
Später sollte das ganze aber am besten über eine ID gemacht werden, da diese in der Regel unverkennbar ist.
Code:
mysql_query("UPDATE Mitglieder SET name='Martin', wohnort='Aachen', signatur='Keep on running!' WHERE nick='mberlin'", $db) OR die(mysql_error());

Kommen wir jetzt zum Entfernen von Datensätzen. Das ganze funktioniert ähnlich wie der "UPDATE" Befehl, da auch hier eine "WHERE" Angabe gemacht wird. Somit wird dann die gesamte Zeile aus der Tabelle gelöscht. Der Befehl dazu lautet "DELETE FROM " (engl. für "löschen von") . Wie bei allen anderen Befehlen muss auch hier wieder die Tabelle angegeben werden. Das könnte dann so aussehen:
Code:
mysql_query("DELETE FROM Mitglieder WHERE name='Martin'", $db) OR die(mysql_error());


Werte ausgeben

Nachdem du gerade gelernt hast, wie man Daten in eine MySQL Tabelle einträgt und verwaltet, zeige ich dir nun, wie du Daten auslesen und ausgeben kannst. Dazu gibt es zunächst einmal wieder einen Befehl, der mithilfe der "mysql_query()"-Funktion ausgeführt wird. Dieser lautet "SELECT" (engl. für "auswählen"). Hier werden die auszuwählenden Spalten angegeben und nach einem "FROM" die Tabelle in der die Spalten sind.
Es gibt zwar auch die Möglichkeit, alle Spalten aufeinmal durch ein Asterisk (= "*") auszuwählen. Davon ist aber aus mehreren Gründen abzuraten: Zum einen gewöhnt man sich dann schnell an, ein Asterisk zu verwenden, selbst wenn nicht alle Spalten aus einer Tabelle benötigt werden, zum Beispiel nur drei von fünf. Das kostet dann unnötig Rechenzeit.
Zum anderen ist es die Abfrage auch allgemein schneller, wenn man die Spaltennamen explizit angibt, da diese dann nicht noch "zusammengesucht" werden müssen. Deshalb ist es wichtig, immmer alle benötigten Spalten einzeln anzugeben.
Anschließend gibt es noch optionale Möglichkeiten, um die Rückgabewerte zu sortieren und/oder zu beschränken.
Mithilfe eines "ORDER BY" kann angegeben werden, nach welcher Spalte die Datensätze sortiert werden sollen. Das kann ein Datum, eine ID oder auch Namen usw. sein.
Dahinter wird dann noch die Art der Sortierung angegeben. Diese ist entweder "DESC" (von "DESCENDING", engl. für "absteigend") oder "ASC" (von "ASCENDING", engl. für "aufsteigend").
Außerdem gibt es die Möglichkeit, die Anzahl der Rückgabewerte mithilfe der Angabe "LIMIT" zu beschränken.
Die Beschränkung wird mithilfe eines Zahlenwerts angegeben.
Der Übersichtlichkeit halber und um weiter mit der Abfrage zu arbeiten, weisen wir den Query einer Variable zu. Hier nun ein Beispiel:
Code:
$result = mysql_query("SELECT nick, name, wohnort, signatur FROM Mitglieder ORDER BY name ASC LIMIT 10", $db) OR die(mysql_error());

Jetzt haben wir eine Variable "$result". Diese selektiert für uns die gewünschten Werte aus der MySQL Tabelle, sortiert sie alphabetisch ("ORDER BY Name ASC") und beschränkt die Anzahl der Rückgabewerte auf "10". Deshalb können wir nun zur Ausgabe kommen.
Dazu benötigen wir eine weitere PHP Funktion. Für die Ausgabe von MySQL Datensätzen kann unter anderem die Funktion "mysql_fetch_array()" oder "mysql_fetch_object()" verwendet werden. In diesem Tutorial werde ich "mysql_fetch_array()" verwenden, da ich diese Funktion für übersichtlicher und komfortabler bei der Ausgabe halte. Mithilfe einer "while()"-Schleife können wir nun für jede Zeile eine separate Ausgabe machen.
Bevor wir mit der Ausgabe beginnen, prüfen wir aber noch in einer if()-Abfrage, ob der Query erfolgreich war und Rückgabewerte liefert.
Code:
// Query überprüfen
if(@$result && mysql_num_rows($result)>0)
{
   while($row = mysql_fetch_array($result))
   {
      // Ausgabe der Werte
   }
}
else {
   echo 'In der Datenbank sind noch keine Einträge vorhanden!';
}

Mit dem "@" wird überprüft, ob der Query durchgeführt werden konnte, und mit der Funktion "mysql_num_rows()" wird die Anzahl der Rückgabewerte geprüft. Ist diese größer als "0", können wir mit der Ausgabe beginnen.
Wie schon zuvor bei der Funktion "mysql_query()" wird auch die Funktion "mysql_fetch_array()" einer Variable zugewiesen, um weiter mit den Werten arbeiten zu können.
Innerhalb der while()-Schleife kann nun die Ausgabe der Werte erfolgen.
Da die Funktion "mysql_fetch_array()" einer Variable zugewiesen wurde und einen Array erzeugt, können die einzelnen Werte immer wie folgt ausgegeben werden: "$Variable['Spalte']". Natürlich darf das "echo" für eine Ausgabe in PHP nicht fehlen. Für dieses Beispiel erzeugen wir die Ausgabe direkt in einer Tabelle.
Code:
// Query überprüfen
if(@$result && mysql_num_rows($result)>0)
{
   echo '<table>',
           '<tr>',
              '<th>Nick</th>',
              '<th>Name</th>',
              '<th>Wohnort</th>',
              '<th>Signatur</th>',
           '</tr>';
   while($row = mysql_fetch_array($result))
   {
      echo '<tr>',
              '<td>'.$row['nick'].'</td>',
              '<td>'.$row['name'].'</td>',
              '<td>'.$row['wohnort'].'</td>',
              '<td>'.$row['signatur'].'</td>',
           '</tr>';
   }
   echo '</table>';
}
else {
   echo 'In der Datenbank sind noch keine Einträge vorhanden!';
}

Für jede Zeile in der MySQL Tabelle wird in diesem Beispiel eine neue Zeile mit den jeweiligen Werten aus der Datenbank ausgegeben. Da die Ausgabe in einer Tabelle erfolgt, ist auch für die nötige Übersichtlichkeit gesorgt.

Tabellenstruktur verändern

Falls du nachträglich noch die Struktur einer MySQL Tabelle verändern möchtest, sind hier die Befehle, die du dazu benötigst. Das ganze kannst du zwar auch über eine PHP Datei mithilfe eines "mysql_query()" machen, ich empfehle dafür aber wieder phpMyAdmin, da eine Veränderung (z.B. eine Spalte hinzufügen) ja nur einmal durchgeführt wird und es mehr Arbeit wäre, eine extra PHP Datei dafür anzulegen und hochzuladen.
Das Verändern von bestehenden Tabellen ist ähnlich dem Erstellen. Der Befehl dazu lautet "ALTER TABLE" ("to alter"; engl. für "verändern).
Danach wird zunächst der Name der zu verändernden Tabelle angegeben.
Anschließend kommt die Art der Veränderung. Das kann "ADD" zum Hinzufügen von neuen Spalten, "CHANGE" zum Verändern von Spalten oder "DROP" zum Entfernen von Spalten sein. Nach einem "ADD" werden wie bei dem "CREATE TABLE" Befehl der Name und die Eigenschaften der Spalte angegeben. Bei "CHANGE" wird zunächst der alte Spaltenname und danach der neue Name und die Eigenschaften angegeben. Bei einem "DROP"-BEFEHL wird die Spalte, die hinter dem Befehl steht, entfernt. Hier sind ein paar Beispiele:
Code:
ALTER TABLE Mitglieder ADD nachname VARCHAR(20) NOT NULL;

ALTER TABLE Mitglieder CHANGE name vorname VARCHAR(20) NOT NULL;

ALTER TABLE Mitglieder DROP signatur;


Ein kleines Anwendungsbeispiel

Falls du nach alle dem noch nicht weißt, was du jetzt mit MySQL Datenbanken anfangen kannst, habe ich hier ein kleines Anwendungsbeispiel. Du nimmst dazu, wie schon zuvor, die Tabelle "Mitglieder" mit den Spalten "id", "nick", "vorname", "nachname" und "wohnort". Jetzt werden wir nacheinander eine Seite machen, auf der neue Mitglieder eingetragen werden können, eine auf der Mitglieder bearbeitet oder entfernt werden können, und eine Seite auf der alle Mitglieder angezeigt werden. Ich werde überall nur den PHP Code für den späteren <body>-Bereich des Dokuments schreiben, der Rest ist ja erst einmal
unwichtig.
Fangen wir also mit der Eintragungsseite an. Wenn der Benutzer die Seite aufruft, wird ein Formular mit den jeweils benötigten Feldern angezeigt.
Wenn er dann auf "Hinzufügen" klickt wird der Code innerhalb der if()-Klammer ausgeführt (mit der "action"-Angabe werden die Daten an das gleiche Dokument geschickt).
Nachdem die Verbindung zur Datenbank hergestellt wurde, wird einfach ein neuer Datensatz mit den Werten aus dem Formular in der Tabelle angelegt.
Code:
<?php

if (isset($_POST['add']))
{
  $db = mysql_connect('Hostname','Benutzername','Passwort');
  mysql_select_db('Name_der_Datenbank', $db);

  mysql_query("INSERT INTO Mitglieder (nick, vorname, nachname, wohnort) VALUES ('".$_POST['nick']."', '".$_POST['vorname']."', '".$_POST['nachname']."', '".$_POST['wohnort']."')", $db) OR die(mysql_error());

  echo 'Deine Daten wurden erfolgreich in die Datenbank eingetragen.';
}
else {
  echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">',
       '<table>',
          '<tr>',
             '<td>Nick:</td>',
             '<td><input type="text" name="nick" /></td>',
          '</tr>',
          '<tr>',
             '<td>Vorname:</td>',
             '<td><input type="text" name="vorname"" /></td>',
          '</tr>',
          '<tr>',
             '<td>Nachname:</td>',
             '<td><input type="text" name="nachname" /></td>',
          '</tr>',
          '<tr>',
             '<td>Wohnort:</td>',
             '<td><input type="text" name="wohnort" /></td>',
          '</tr>',
          '<tr>',
             '<td></td>',
             '<td><input type="submit" name="add" value="Hinzufügen" /></td>',
          '</tr>',
       '</table>',
       '</form>';
}

?>

Als nächstes kommt die Ausgabeseite. Hier werden wie schon zuvor erklärt alle Datensätze aus der Tabelle abgerufen, nach dem Nachnamen sortiert und dann ausgegeben.
Code:
<?php

$db = mysql_connect('Hostname','Benutzername','Passwort');
mysql_select_db('Name_der_Datenbank', $db);

$result = mysql_query("SELECT nick, vorname, nachname, wohnort FROM Mitglieder ORDER BY nachname ASC", $db) OR die(mysql_error());

if(@$result && mysql_num_rows($result)>0)
{
  while($row = mysql_fetch_array($result))
  {
    echo $row['vorname'].' '.$row['nachname'].' mit dem Nick '.$row['nick'].' kommt aus '.$row['wohnort'].'.<br />';
  }
}
else {
  echo 'Es konnten keine Mitglieder gefunden werden!';
}

?>

Die Ausgabe mag zwar nicht unbedingt die sinnvollste sein, sie ist aber wie gesagt nur ein Beispiel, um zu verdeutlichen, was alles gemacht werden könnte.
Als letztes kommt noch die Seite, auf der die Datensätze bearbeitet bzw. entfernt werden können. Hierzu werden zunächst wie bei der Ausgabe alle Datensätze abgerufen.
Der Unterschied ist diesmal, dass die Werte in <input>-Feldern ausgegeben werden und über entsprechende Buttons aktualisiert bzw. entfernt werden können. Je nach dem welcher Button geklickt wurde, wird die jeweilige Aktion durchgeführt.
Die ID wird für jeden Datensatz in einem versteckten <input>-Feld ausgegeben. So wird immer der richtige Datensatz bearbeitet, ohne dass der Benutzer die jeweilige ID sieht (das braucht er ja nicht).
Code:
<?php

$db = mysql_connect('Hostname','Benutzername','Passwort');
mysql_select_db('Name_der_Datenbank', $db);

if(isset($_POST['edit']))
{
  mysql_query("UPDATE Mitglieder SET nick='".$_POST['nick']."', vorname='".$_POST['vorname']."', nachname='".$_POST['nachname']."', wohnort='".$_POST['wohnort']."' WHERE id='".$_POST['id']."'", $db) OR die(mysql_error());
}

if(isset($_POST['delete']))
{
  mysql_query("DELETE FROM Mitglieder WHERE id='".$_POST['id']."'", $db) OR die(mysql_error());
}

$result = mysql_query("SELECT id, nick, vorname, nachname, wohnort FROM Mitglieder ORDER BY nachname ASC", $db) OR die(mysql_error());

if(@$result && mysql_num_rows($result)>0)
{
  while($row = mysql_fetch_array($result))
  {
    echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">',
         '<table>',
            '<tr>',
               '<td>Nick:</td>',
               '<td><input type="text" name="nick" value="'.$row['nick'].'" /></td>',
            '</tr>',
            '<tr>',
               '<td>Vorname:</td>',
               '<td><input type="text" name="vorname" value="'.$row['vorname'].'" /></td>',
            '</tr>',
            '<tr>',
               '<td>Nachname:</td>',
               '<td><input type="text" name="nachname" value="'.$row['nachname'].'" /></td>',
            '</tr>',
            '<tr>',
               '<td>Wohnort:</td>',
               '<td><input type="text" name="wohnort" value="'.$row['wohnort'].'" /></td>',
            '</tr>',
            '<tr>',
               '<td><input type="hidden" name="id" value="'.$row['id'].'" /></td>',
               '<td><input type="submit" name="edit" value="Aktualisieren" /><input type="submit" name="delete" value="Entfernen" /></td>',
            '</tr>',
         '</table>',
         '</form>';
  }
}
else {
  echo 'Es konnten keine Mitglieder gefunden werden!';
}

?>

Das ganze kann man nun insofern optimieren, als dass nur eine Liste mit allen Einträgen und entsprechenden Links erscheint, und die Einträge dann beispielsweise auf einer separaten Seite bearbeitet werden können.
Dies würde jedoch den Umfang dieses Tutorials sprengen.

Hiermit sind wir nicht nur am Ende des Anwendungsbeispiels, sondern auch am Ende meines Tutorials. Ich hoffe, alles war gut verständlich und hat in der Anwendung funktioniert.
Falls du Fehler entdecken solltest oder eine Frage hast, kannst du dich einfach im Forum melden.

Viel Spaß beim Anwenden wünscht,

Basti
www.sf-design.info

>> Allgemeine Fragen oder Probleme mit dem Tutorial? Hier gehts zum Forum!

Impressum / Datenschutzerklärung          © der-Webdesigner.net 2002 - 2008           top ▲