PHP/MySQL - Praxistutorial 1 - Grundsätzliches
1. Die Abschnitte
- Überblick
- Die Datenbank
- Grundsätzliches
- Daten abfragen
- Daten eingeben
- Daten ändern
- Daten löschen
2. Aufbau
Also wir haben drei Tabellen (hersteller
, kunde
, produkt
). Bevor irgendwas passiert,
müssen wir also wissen, welche Tabelle wir denn bearbeiten möchten. Dazu müsst ihr Folgendes wissen: HTTP ist ein so genanntes
verbindungsloses Protokoll. Das heißt, dass der Webserver alles, aber auch wirklich alles vergisst, sobald ihr auf einen
normalen Link klickt. Um nun dieses Problem zu umgehen, gibt es drei Möglichkeiten, und bestimmte Daten "zwischenzuspeichern".
- Sessions
- Formularfelder
- URL-Parameter
Auf Sessions verzichte ich hier und mit Formularfeldern beschäftigen wir uns in den nächsten Kapiteln. Kommen wir also nun zum URL-Parameter. Ihr habt sicher schon tausendmal auf einen Link geklickt und in der Adresszeile des Browsers stand dann so was wie
www.schlagmich.de/kratz_mich.php?id=beiss_mich&todo=gibt_mir_tiernamen
Damit werden zwei Variablen namens id
und todo
übergeben, die dann zur Steuerung des weiteren Ablaufs
dient. Die Syntax ist ganz einfach: Link -> Fragezeichen -> Variable 1 -> Gleichheitszeichen -> Wert Variable 1.
Sollen noch weitere Werte übergeben werden, so trennt man die durch ein kaufmännisches Und. Achtet darauf, dass ihr dieses
HTML-kodiert, also in eurem Quellcode als &
schreibt.
GET
Diese Art, Werte durchzuschleifen, wird als GET-Methode bezeichnet. In PHP habt ihr dann über die so genannte superglobale
Variable $_GET
darauf Zugriff. Und das in jedem eurer Scripte.
3. Das Hauptmenü
Öffnet nun die index.php
und tragt oberhalb von <?php
das Folgende ein. Klickt anschließend mal auf
die Links und beobachtet die Adresszeile eures Browsers.
<div class="navi">
<h1>Navigation</h1>
<ul>
<li><a href="index.php?tabelle=hersteller">Hersteller</a></li>
<li><a href="index.php?tabelle=produkte">Produkte</a></li>
<li><a href="index.php?tabelle=kunden">Kunden</a></li>
</ul>
</div>
Wie ihr sehen könnt, rufen wir immer dieselbe Seite auf, übergeben aber unterschiedliche Werte. Schreibt nun zwischen
<?php
und ?>
mal
echo $_GET['tabelle'];
Diese Variable nutzen wir nun, um uns eine Liste der jeweiligen Einträge aus den Tabellen zu holen. Und entfernt bitte den PHP-Befehl.
4. or die
Diesen Befehl habe ich schon ausführlich beim Thema Fehlersuche behandelt. Trotzdem weise ich noch mal darauf hin, dass ihr den hinter jede(!) Datenbankanfrage setzen solltet, damit bei Fehlern sofort wisst, wo es hakt.
5. Verbindung zur Datenbank
Bevor wir unsere Datenbank abfragen können, muss erst eine Verbindung aufgebaut werden. Dazu öffnet bitte die Datei
db.inc.php
im Ordner inc
und tragt dort zwischen <?php und ?>
das Folgende ein.
Solltet ihr andere Zugangsdaten haben, so passt das bitte entsprechend an.
$user = 'root'; // eurer Benutzername
$host = 'localhost'; // Hostadresse
$password = 'passwort'; // eurer Passwort
$database = 'foltershop'; // eure Datenbank
$db = mysql_connect($host,$user,$password)
or die ('Keine Verbindung!');
mysql_select_db($database,$db)
or die ('Konnte Datenbank nicht finden!');
Erläuterung
Das mit den Zugangsdaten ist wohl selbsterklärend. Mit der Funktion mysql_connect
bauen wir eine Verbindung
auf, indem wir die benötigten Zugangsdaten übermitteln. Das or die
wirft eine mögliche Fehlermeldung aus
und bricht die weitere Bearbeitung des Scriptes ab, da ohne Verbindung zu MySQL eh nichts geht. Gut, man könnte
in diesem Fall darauf verzichten, da von PHP in dem Fall eh ein "Warning" ausgegeben wird. Allerdings wird das Script weiter
ausgeführt und dann knallt es in der nächsten Zeile
Kommt die Verbindung dagegen zustande, so wird in der Variable $db
ein "Zeiger" auf diese Verbindung gesetzt, den
wir nutzen, um mit mysql_select_db
unsere Datenbank auswählen.
6. Einbindung
Diese Verbindung muss jedes Mal aufgebaut werden, wenn eine Anfrage abgeschickt wird. Aus Gründen der Übersichtlichkeit (und
aus didaktischen Gründen) lagern wir das in die bekannte db.inc.php
aus. Um den Zugang nun in der
index.php
zu benutzen, tragt dort bitte Folgendes ein:
require ('inc/db.inc.php');
Den require
-Befehl nehmen wir, weil bei einer fehlerhaften Einbindung die weitere Bearbeitung des Scriptes
abgebrochen wird. Ich wähle diese zugegebenermaßen radikale Methode aus Anschauungsgründen. Gebt zum Beispiel mal einen fehlerhaften
Pfad an, damit ihr seht, was passiert. Normalerweise sollte man beim Einbinden externer Dateien mit include_once
arbeiten, aber dazu komme ich in einem späteren Tutorial.
7. Das Error Reporting
Wie ich zu Beginn schon sagte, gehen wir es hier langsam an. Darum ergänzt die db.inc.php
bitte um den folgenden Eintrag
(vor(!) den Zugangsdaten), mit dem wir die Ausgabe von Notices verhindern. Um die kümmern wir uns im Anschluss an dieses Tutorial.
error_reporting(E_ALL & ~ E_NOTICE);
ini_set ('display_errors', 'On');
Warum machen wir das denn in dieser Datei? Nun, ist nicht sehr schön, ist nicht sehr fein. Aber was soll's? Die benötigen wir hier sowieso immer, also platschen wir das da rein. Meine ehemaligen Deutschlehrerinnen mögen mir verzeihen ob dieser greulichen Ausdrucksweise. Und ja, ich weigere mich beharrlich, "gräulich" zu schreiben.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt