Skip to content
You are here: Home » Unsere Angebote für berufliche Schulen » Arbeitsgruppen » Online-Dienste » Online-News » Ausgabe 13 » Datenbankgestützter Webkatalog Landeswappen

Datenbankgestützter Web-Katalog mit PHP4 und MySQL

 
Winfried Klein, Kaufmännische Schule Albstadt

Das Herzstück eines Online-Shops ist der Katalog, in welchem die angebotenen Artikel vorgestellt werden. Hier kann sich der Kunde informieren und bei Gefallen direkt bestellen.

Das folgende Beispiel ist in Anlehnung an die Unterrichtsmaterialien zum Wahlthema "Internet" (Informationen unter http://server.ksa.bl.bw.schule.de/m_internet ) entstanden und zeigt einen einfachen Katalog (ohne Bestellmöglichkeit) auf der Grundlage einer MySQL-Datenbank, sowie Zugriff auf die Datensätze mit der Skriptsprache PHP4.

Um das Grundprinzip eines datenbankgestützen Webkataloges zu zeigen, genügt eine Datenbank mit einer Tabelle und den folgenden Datenfeldern:
 
 
 

Feldname Datentyp Bezeichnung
ArtNum Text Artikelnummer
ArtBez Text Artikelbezeichnung
BildBez Text Name der Bilddatei
Preis Zahl Verkaufspreis

Nach dem Aufruf des MySQL-Monitors c:\mysql\bin\mysql kann am MySQL-Prompt die Datenbank erzeugt, sowie Tabellenstruktur und Datensätze angelegt werden.
 

· Datenbank erzeugen create database bikeshop;
· Datenbank benutzen use bikeshop;
· Tabelle erzeugen create table artikel
(artnum char(5),
artbez char(12),
bildbez char(16),
preis double(8,2) );
·  Datensätze anlegen insert artikel values
(`123_1',
`Reifen',
`reifen.jpg',
'24.85');

Zur Eingabe von Datensätzen in die MySQL-Datenbanktabelle kann auch MS-Access über einen ODBC-Treiber (Installation siehe Seite 91) als Frontend benutzt werden. Um ein einfaches Beispiel zu haben, darf keine Artikelbezeichnung zweimal vorkommen.Der MySQl-Monitor kann mit quit verlassen werden.

Die zur Katalogwebsite gehörenden Seiten bestehen aus einem Frame mit einer Auswahlseite und der eigentlichen Katalogseite.

Beim Aufruf der Startseite katalog.htm werden die Artikelbezeichnungen der in der Datenbank vorhandenen Produkte ausgelesen und in einem Auswahlmenü zur Verfügung gestellt. Nach Bestätigung der Schaltfläche OK! werden die Daten des gewünschten Produktes aus der Datenbank gelesen und in der rechten Katalogseite dargestellt.
 

Die Zugangsseite katalog.htm öffnet einen Frame mit einer leeren Katalogseite kseiten.htm und der Auswahlseite auswahl.php.

katalog.htm

<HTML>

    <HEAD>

        <TITLE>Datenbankgestützter Katalog des BIKESHOPs</TITLE>

    </HEAD>

    <FRAMESET cols="200,*" border=0 frameborder=0>

        <FRAME src="auswahl.php" name="auswahl" noresize scrolling=no>

        <FRAME src="kseiten.htm" name="kseiten" noresize scrolling=no> </FRAMESET>

</HTML>

kseiten.htm

<HTML>

    <HEAD>

        <TITLE>Katalogseiten BIKESHOP</TITLE>

    </HEAD>

    <BODY background="bg_bike.jpg">

    </BODY>

</HTML>

Die Auswahlseite besteht aus einem HTML-Gerüst mit einem PHP4-Skriptteil im BODY. Damit dieser Skriptteil auch interpretiert werden kann, muss die Namenserweiterung unbedingt php sein.

Im Skriptteil öffnet die Funktion mysql_connect() zunächst eine Verbindung zum Datenbankserver und liefert eine Verbindungskennung, die in der Variablen $db abgelegt wird. Die Funktion mysql_db_query() führt eine Abfrage in der Datenbank bikeshop aus und liefert die Artikelbezeichnungen aller Datensätze aus der Tabelle artikel. Nun liefert die Funktion mysql_num_rows() die Anzahl der Datensätze zurück, die mit der Abfrage zuvor ermittelt wurden. In der anschließenden Wiederholungsanweisung werden die Artikelbezeichnungen als Listenelemente in ein Array liste geschrieben, um später im Auswahlmenü zur Verfügung zu stehen. Zum Schluss wird die Verbindung zum Datenbankserver mit Hilfe der Funktion mysql_close() wieder geschlossen.

Über ein HTML-Formular wird nun die ausgewählte Artikelbezeichnung nach Bestätigen der Schaltfläche OK! in der Variablen ok der Seite kseiten.php zur Verfügung gestellt.

auswahl.php

<HTML>

    <HEAD>

        <TITLE>Linker Frame</TITLE>

    </HEAD>

    <BODY background="bg_bike.jpg">

        <H1 align="center">Katalog</H1>

        <BR><BR>

        <SCRIPT language="PHP">

            $db = mysql_connect();

            $res = mysql_db_query("bikeshop","select artbez from artikel");

            $num = mysql_num_rows($res);

            for (         $i=0; $i<$num; $i++)

                            $liste[$i]=mysql_result($res, $i, "artbez"); mysql_close($db);

echo "<FORM method='post' action='kseiten.php' target='kseiten'>";

echo "<SELECT name='ok'>";

foreach ($liste as $element)

{

echo "<OPTION value='$element'>$element\n";

}

echo "</SELECT>";

echo "&nbsp;&nbsp;";

echo "<INPUT type='submit' value='OK!'>";

echo "</FORM>";

</SCRIPT>

</BODY>

</HTML>

Auf der Seite kseiten.php werden über eine Abfrage alle Felder des Datensatzes, dessen Artikelbezeichnung in der Variablen ok steht, aus der Datenbank ausgelesen und auf der Seite dargestellt.

kseiten.php

<HTML>

    <HEAD>

        <TITLE>Katalogseiten BIKESHOP</TITLE>

    </HEAD>

    <BODY background="bg_bike.jpg">

        <SCRIPT language="PHP">

                $db = mysql_connect();

                $sqlab = "select artnum,artbez,bildbez,preis from artikel";

                $sqlab .= " where artbez='$ok'";

                $res = mysql_db_query("bikeshop",$sqlab);

                $artnum = mysql_result($res,0,"artnum");
 
                $artbez = mysql_result($res,0,"artbez");

                $bildbez = mysql_result($res,0,"bildbez");

                $preis = mysql_result($res,0,"preis");

                mysql_close($db);

                echo "<H1 align='center'>Fahrradzubeh&ouml;r</H1>";

                echo "<BR><BR>";

                echo "<TABLE border=1 align='center' cellpadding=50>";

                echo "<TR>";

                echo "<TD width=50%><H2>";

                echo "Artikel:&nbsp;&nbsp;<FONT color='blue'>$artnum</FONT>";

                echo "<BR><BR>";

                echo "Bezeichnung:<BR><FONT color='blue'>$artbez</ FONT>";

                echo "<BR><BR><BR>";

                echo"Preis:&nbsp;&nbsp;<FONT

                    color='red'>$preis&nbsp;DM</FONT>";

                echo "</H2></TD>";
 
                echo "<TD width=50%><IMG src='$bildbez'</TD>";

                echo "</TR>";

                echo "</TABLE>";

        </SCRIPT>

    </BODY>

</HTML>

Für die in den Katalogseiten eingebundenen Bilder stehen nur die Dateinamen in der MySQL-Datenbank. Die Bilddateien selber stehen im Dokumentenverzeichnis c:\apache\htdocs des WebServers. - Damit werden die Probleme beim Einbinden von Binärdateien und dem daraus resultierenden Laufzeitverhalten in einer MySQL-Datenbank umgangen.

Zum Testen dieses einfachen Kataloges können alle benötigten Dateien in einem Archiv mit dem Namen katalog.zip vom FTP-Server der Kaufmännischen Schule Albstadt unter

ftp:// ftp.ksa.bl.bw.schule.de/download/news13 heruntergeladen werden.

Die in diesem Archiv vorhandenen Dateien artikel.* enthalten die MySQL-Datenbank und müssen in ein Verzeichnis bikeshop unter c:\mysql\data kopiert werden. Alle anderen Dateien in das Dokumentenverzeichnis c:\apache\htdocs des Apache-WebServers. Der Aufruf der WebSite erfolgt dann z.B. über http://localhost/katalog.htm. - Falls es in einer Testumgebung Probleme mit dem Aufruf der Seiten unter dem Netscape Communicator v4.7x gibt, einfach den Internet Explorer ab Version 5.x benutzen.