MySQL - Funktionen
MySQL - Funktionen
Datenbanken und Tabellen
Wir wollen nun zunächst eine Datenbank anlegen. Dies werden wir mittels der Software Xampp und dem darin enthaltenen phpMyAdmin tun. Als erstes müssen wir die Seite aufrufen mit “localhost/phpmyadmin”. Auf der Startseite können wir nun unsere Datenbank anlegen, indem wir einen Namen eingeben und anschließend auf den Button Anlegen klicken. Nun klicken wir rechts im Menu auf unsere neu erstellte Datenbank. Nun müssen wir eine Tabelle anlegen, mit der wir nachher arbeiten werden. Wir geben einen Namen ein und gehen auf erstellen. Als nächstes müssen wir uns entscheiden, wieviele Felder wir brauchen. Felder beschreiben die einzelnen Spalten der Tabelle, in den wir unseren Inhalt ablegen. Man sollte auch immer eine ID pro Tabelle angeben und diese mit der Funktion auto_increment und Primary Key ausstatten, damit man später immer eine eindeutige Zuweisung hat.
Wir werden nun eine Bilderverwaltung machen. Dazu legen wir uns die Datenbank “bilderverwaltung” an. Jetzt brauchen wir eine Tabelle, der wir den Namen “bilder” geben. Nun müssen wir die Anzahl der Felder angeben. Wir brauchen für die Bilder eine id, einen title, eine hoehe, eine breite und einen pfad. Das heißt wir brauchen 5 Felder. Die jetzige Ansicht, die in Zeilen und Spalten unterteilt ist, setzt sich wie folgt zusammmen: Die Zeilen stellen die einzelnen Felder dar und die Spalten bieten verschiedene Einstellmöglichkeiten.
Spalten
- Spalte: Eingabe des Feldnamens
- Spalte: Hier kann der Datentyp festgelegt werden (Text oder Zahl)
- Spalte: Definiert die maximale Länge
- Spalte: Kollation gibt die Sortierreihenfolge an bei ORDER BY
- Spalte: Hiermit können wir verschieden Formate einstellen (z.B. UNSIGNED bedeutet, dass es keine negativen Zahlen gibt.
- Spalte: Diese Spalte gibt an, ob das Feld leer sein darf
- Spalte: Hier kann man einen Standardwert angeben
- Spalte: Unter Extra kann man nun auto_increment auswählen was bedeutet, dass das Feld automatisch um 1 erhöht wird, wenn ein neuer Eintrag gemacht wird
- Spalte: Unter Aktion kann man z.B. den Primary Key einstellen
Nachdem wir die Bedeutung der Felder kennen, wollen wir nun unsere Daten eintragen.
| Feld | Typ | Länge | Kollation | Null | Standard | Extra | Aktion |
|---|---|---|---|---|---|---|---|
| id | INT | not null | auto_increment | Primärschlüssel | |||
| title | TEXT | latin1_general_ci | not null | ||||
| hoehe | INT | not null | |||||
| breite | INT | not null | |||||
| pfad | TEXT | latin1_general_ci | not null |
Nach dem Eintragen klicken wir auf den Button speichern und erhalten dann direkt Feedback, dass unsere Daten übernommen wurden.
Tabellen füllen
Der zweite Schritt ist nun, die Tabelle mit Inhalt zu füllen. Dazu klicken wir oben den Reiter “einfügen” an. In der Spalte Werte können wir nun unsere Daten eingeben. Ausnahme bildet das Feld id, da wir dieses Feld automatisch füllen lassen tragen wir da nichts ein. Der Titel wird später als alternativ Text für das Bild verwendet. Das Feld Pfad gibt an, wo das Bild später auf dem Server abgelegt wurde. Zunächst erstellen wir einen Ordner in “htdocs”. Der Ordner htdocs befindet sich im Installationspfad von Xampp. Unser Ordner soll Bilderverwaltung heißen. Anschließend erstellen wir einen Ordner “bilder” in den wir unsere Bilder kopieren. Außerhalb dieses Ordners können wir später unsere php-Dateien ablegen.
Wir wollen zunächst zwei Bilder in die Tabelle schreiben:
| id | title | hoehe | breite | pfad |
|---|---|---|---|---|
| Bild 1 | 200 | 200 | bilder/bild1.png | |
| Bild 2 | 400 | 400 | bilder/bild2.png |
Verbindung herstellen
Um nun auf unsere Daten in der Datenbank zugreifen zu können, müssen wir über PHP eine Verbindung aufbauen. Für die Verbindung verwenden wir den Befehl mysql_connect. Dieser Befehl braucht den Servernamen, den Benutzernamen und das Kennwort. Benutzername und Kennwort ist das gleiche, wie bei den MySQL Einstellungen. Wenn man den Xampp verwendet ist der Servername “localhost” ansonsten muss man den Namen nehmen, der vom Provider angegeben wird.
<?php
mysql_connect("localhost","Benutzername","Passwort");
?>
Nun haben wir eine Verbindung zur Instanz aber noch nicht zu unserer Datenbank. Dazu brauchen wir noch ein mysql_select_db. Hier muss man nur den Namen der Datenbank angeben.
<?php
mysql_select_db("bilderverwaltung");
?>
Man sollte auch noch eine kleine Ergänzung hinzufügen falls es einen Fehler bei der Verbindung zur Datenbank gibt. Außerdem sollte man die Verbindung in eine extra Datei packen und in den Seiten wo man sie verwendet über include einbinden. Wir wollen unsere Datei connect.php nennen. Sie hat dann folgenden Inhalt:
<?php
mysql_connect("localhost","root","") or die
("Keine Verbindung moeglich");
mysql_select_db("bilderverwaltung") or die
("Datenbank ist nicht verfuegbar");
?>
Datenbank Abfragen
Nachdem wir nun eine Verbindung zur Datenbank haben, wollen wir unsere Daten auslesen. Dazu müssen wir SQL-Abfragen machen. Die einfachst Abfrage mit Speicherung in einer Variablen sieht so aus:
<?php
$abfrage = "SELECT title FROM bilder"
?>
Damit wählen wir die Spalte “title” aus der Tabelle “bilder” aus.
Wenn wir nun mehrere Spalten auslesen wollen, können wir auch mehrere Angeben:
<?php
$abfrage = "SELECT title, pfad FROM bilder"
?>
Wir haben auch die Möglichkeit alle Spalten einer Tabelle abzufragen:
<?php
$abfrage = "SELECT * FROM bilder"
?>
Nun müssen wir noch die Abfrage ausführen und die dabei erhaltenen Daten in einer Variablen ablegen. Dazu verwenden wir den Befehl mysql_query
<?php
$ergebnis = mysql_query($abfrage);
?>
Damit haben wir die Daten in der Variable “ergebnis” gespeichert. Man kann aber auch speziellere Abfragen machen.
Spezielle Abfragen
Bisher haben wir nur einzelne, mehrere und alle Spalten abgefragt. Man kann aber auch noch nach anderen Kriterien abfragen. Wir wollen alle Daten einer Spalte, bei denen die id kleiner ist als 2.
<?php
$abfrage = "SELECT * FROM bilder WHERE id < 5";
?>
Man kann seine Ergebnisse der Abfrage auch sortieren lassen:
<?php
$abfrage = "SELECT * FROM bilder ORDER BY id";
?>
Nun sortieren wir die Ausgabe nach der id und zwar Aufsteigend. Wenn man das nun Absteigend sortieren will, muss man hinter id noch DESC anhängen.
Man kann auch nur eine bestimmte Anzahl der Daten anzeigen lassen. Zum Beispiel will man nur die ersten fünf Datensätze haben:
<?php
$abfrage = "SELECT * FROM bilder LIMIT 5";
?>
Daten ausgeben
Nachdem wir nun einige Abfragemöglichkeiten kennen, wollen wir die auch ausgeben. Wir wollen alle Ergebnisse, die wir in der Variablen gespeichert haben ausgeben. Die Variable verhält sich wie ein Array. Um nun alle Datensätze anzeigen zu können müssen wir mit einer while-Schleife arbeiten. Außerdem brauchen wir den Befehl mysql_fetch_object.
<?php
$abfrage = "SELECT * FROM bilder";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo"
".$row->title."<br />
<img src='".$row->pfad."'>
";
}
?>
Das sieht jetzt schwieriger aus als es ist. Die ersten beiden Zeilen kennen wir bereits. Die dritte Zeile ist die while-Schleife mit der Bedinung: “solange ein Eintrag aus der Variablen Ergebnis als Arrayinhalt in die Variable row geschrieben wird führe die Schleife aus”. Anschließend müssen wir die Daten mit echo ausgeben. Über $row-> und dem Spaltennamen können wir alle Spalten beliebig ansprechen.
Daten hinzufügen
Als nächstes wollen wir Daten in unsere Datenbank über ein Formular einfügen. Einerseits können nun die Nutzer unserer Seite eigene Bilder eintragen oder man kann es lediglich als Online Administration sehen.
Zunächst brauchen wir dann das Formular in das wir unsere Daten eintragen. Dieses schicken wir mit action an die selbe Seite. Wir brauchen dann noch unsere Variablen, die wir auslesen möchten.
<?php
$title = $_POST["title"];
$hoehe = $_POST["hoehe"];
$breite = $_POST["breite"];
$pfad = $_POST["pfad"];
?>
<form method="post" action="selbe-Seite.php"> Titel: <input type="Text" name="title"> Breite: <input type="Text" name="breite"> Höhe: <input type="Text" name="hoehe"> Pfad: <input type="Text" name="pfad"> Bild: <input type="Image" name="bild"> <input type="Submit" name="eintragen"> </form>
Anmschließend müssen wir die Daten in die Datenbank eintragen mit:
<?php
$eintrag = "INSERT INTO bilder (title, hoehe, breite, pfad)
VALUES ('$title', '$hoehe', '$breite', '$pfad')";
$eintragen = mysql_query($eintrag);
?>
Mit dem INSERT INTO geben wir an in welche Tabelle wir schreiben wollen und in welche Spalten. Desweiteren müssen wir angeben was wir rein schreiben wollen mit den Werten nach dem VALUE. Sie haben die gleiche Reihenfolge wie die Spalten.
Die Bilder muss man aber selbst auf den Server laden, da dies etwas schwieriger ist. Beim Pfad muss man den Pfad angeben der später auf dem Server ist.
Daten löschen
Nachdem wir wissen wie man Daten einfügt wollen wir auch wieder Daten löschen. Beim löschen muss man darauf achten, dass der Datensatz eindeutig identifiziert wird. Das geht am besten über die von uns angelegte id. Das Löschen erfolgt ebenfalls in zwei Schritten:
<?php
$loeschen = "DELETE FROM bilder WHERE id='2'";
$loesche = mysql_query($loeschen);
?>
Und schon ist der Datensatz mit der id=2 gelöscht.
Daten ändern
Man kann einerseits wieder das Formular verwenden und dann anstatt INSERT INTO den SQL-Befehl UPDATE nehmen oder man gibt die Änderung direkt an:
<?php
$aendern = "UPDATE bilder SET title='Neu' WHERE id='1'";
$update = mysql_query($aendern);
?>
Und schon ist der Datensatz mit der id=1 geändert.
Verbindung trennen
Zu guter letzt wollen wir die Verbindung zu Datenbank wieder beenden. Zum einen kann man die Ergebnisse wieder frei geben und zum anderen die gesamte Verbindung trennen.
<?php
mysql_free_result($ergebnis); //freigeben der Ergebnisse
mysql_close($verbindung); //trennen der Datenbankverbindung
?>