Hauptmenü

Untermenü

PHP/MySQL - Praxistutorial 1 - Grundsätzliches

1. Die Abschnitte

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".

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