| |
Teil 2 Datenbank abfragen
(1) Datenbank mit Daten füttern ...
Wir füttern jetzt erstmal die gerade erstellte Datenbank mit ein paar Werten, damit wir diese später mittels PHP3-Skript wieder abfragen können.
dazu könnten wir wiederum den mysql aufrufen, aber da das zu kompliziert ist, alle Daten dort einzugeben, tragen wir unsere Daten in den Notepad ein und übergeben dann später alles nach mysql.
Folgendes geben wir in den Notepad ein:
INSERT INTO eintraege VALUES (1,'Mustermann','Max','max@mustermann.de','1999-10-01 05:05:05','Biete Kuehlschrank, FCKW-frei, USA-Style, groß, schwer, hoher Energieverbrauch',299.00,0);
INSERT INTO eintraege VALUES (2,'Grass','Guenther','guenther@grass.de','1999-10-02 15:25:44','Biete Pfeife, alt und eklig ...',2.50,0);
Dann speichern wir das ganze unter c:\mysql\bin als "floh.dump". Nun geben wir unter c:\mysql\bin folgendes ein:
mysql -u root flohmarkt < floh.dump
und schon haben wir die beiden Datensätze in der Datenbank. Das müssen wir natürlich überprüfen, und jetzt kommt endlich PHP ins Spiel.
(2) Daten aus der Datenbank abrufen:
<html>
<body>
<?
$db = mysql_connect("127.0.0.1","root");
mysql_select_db("flohmarkt",$db);
$result = mysql_query("SELECT * FROM eintraege",$db);
while ($myrow = mysql_fetch_row($result)) {
printf("Laufende Nummer: %s <br>Name: %s<br>Vorname: %s<br>Email: <a href='mailto:%s'>%s</a><br>Datum: %s<br>Eintrag: %s<br>Preis: %s<br>Angebot(0) oder Gesuch (1): %s<br><br><br>", $myrow[0], $myrow[1], $myrow[2], $myrow[3], $myrow[3], $myrow[4], $myrow[5], $myrow[6], $myrow[7]);
}
?>
</body>
</html>
Mit so wenig Code kann man doch tatsächlich sämtliche Informationen aus der Datenbank auslesen. Also schauen wir uns mal genauer an, was da oben passiert:
In der Variablen $db wird die Connection zur Datenbank gespeichert. Hier wird eine Connection zum localhost (127.0.0.1) für den User Root aufgebaut. Standardmäßig wird für den Root kein Passwort eingerichtet, dieses ist aber bei anderen Usern (z.B. einem Webuser) als 3. Argument mit zu übermitteln.
der "mysql_select_db" - Befehl wählt die Datenbank "flohmarkt" aus.
Nun speichern wir in der Variablen $result den gesamten Inhalt der Datenbank. mysql_query steht einer Anweisung an die Datenbank voran. In Klammern ist die genaue Befehlssyntax notiert. Mit "Select" sagen wir der Datenbank, dass es sich um eine Abfrage handelt. Das "*" steht für alle Daten der Datenbank. Wir könnten hier auch nur die Email-Adresse abfragen, dann stünde dort statt dem "*" lediglich "email". Hier können natürlich auch mehrere Spalten ausgewählt werden. "FROM" zeigt an, aus welcher Table wir die Daten haben wollen.
Hier gäbe es natürlich noch viel mehr Optionen, die ich aber aus Platzgründen weglasse.
Also wie gesagt, in $result ist nun der gesamte Inhalt der Datenbank gespeichert. Aber irgendwie müssen wir das jetzt ja leserlich auf den Bildschirm zaubern. Dazu dient die while-Abfrage.
Die MySQL-Befehl "mysql_fetch_row()" gibt einen Array zurück. D.h. wir laufen alle "rows" durch, und solange dort Daten vorhanden sind, werden diese dem Array $myrow[] zugewiesen. Im Detail: Die laufende Nummer (id) wird immer dem Array $myrow mit Index 0 zugewiesen ($myrow[0]). Die Email immer dem Array $myrow mit Index 3 ($myrow[3]). So können wir mittels der printf - Funktion nun alle Daten auf dem Bildschirm ausgeben. Z.B. auch nur alle Namen:
printf("Name: %s<br>", $myrow[1]);
Nach diesem System lassen sich alle Daten aus der Datenbank abrufen. Ändern wir den SELECT-Befehl, lassen sich auch nur spezielle Daten abfragen, die wichtigste Befehl ist hier für uns erstmal der Befehl WHERE. Damit können wir z.B. auswählen ,dass nur Angebote, oder nur Gesuche ausgegeben werden sollen.
Wir haben ja gesagt, dass bei Angeboten "goa" auf "0", und bei Gesuchen auf "1" gesetzt wird. Folgende Anweisung:
$result = mysql_query("SELECT * FROM eintraege WHERE goa=0",$db);
würde bewirken, dass nur Angebote angezeigt werden. Wenn wir "goa" allerdings auf "1" setzen, dann würde in unserem Beispiel keine Ausgabe gemacht werden, da wir ja kein Gesuch in der Datenbank haben.
|