Aktuelles
Startseite
TP Wettbewerbe
Sitemap
Service
Hilfe-Forum
Kolumnen
Linktipps
Buchrezensionen
Traum-Team
Newsletter
Traumquelle
Dreamweaver
Fireworks
Photoshop
Flash
Traum-Start
gimp
GoLive
php / Apache
Sonstige
Grundlagen
Usability
CSS
Apple / Mac
3D
Intern
TP-Sponsor
TP SHOP
Bild Galerie
TP Wallpapers
Forum-Archiv
Link zu uns
Impressum
Zurück  
TP Portal > php / Apache > Newssystem mit PHP und MySQL (Teil I - Einstieg in PHP und MySQL)

Newssystem mit PHP und mySQL (Teil I - Einstieg in PHP und mySQL)

Dieser Kurs ist eine Einführung in PHP und mySQL. Die nötigen Grundlagen werden anhand der Planung und Umsetzung eines Newssystems besprochen. So lernt man das nötige Handwerkzeug, um zukünftig eigene Projekte umzusetzen.

was kommt

Ziel dieses Kurses ist es PHP und mySQL zu erlernen. Dazu wird ein Newssystem geplant und umgesetzt. Damit alle Schritte des Kurses nachvollziehbar sind, sollte man Webspace mit PHP und einer mySQL-Datenbank besitzen. Alternativ kann man sich eine WAMP- oder LAMP-Installation auf seinen Rechner einrichten. Wie das geht wird in diesem TP-Tutorial beschrieben.

Am Ende des Kurses steht ein Newssystem, welches News über eine Admin-Oberfläche, per E-Mail oder per Handy von mehreren Usern entgegennimmt und diese in verschiedener Weise wieder ausgibt. Die News können aus Überschrift, formatierten Text (inklusive Links) und einem Bild bestehen. Man kann News ändern und löschen. Außerdem können Besucher Kommentare zu den News hinzufügen.

Jetzt aber von vorne.

PHP Einstieg

PHP und HTML vertragen sich ausgesprochen gut, man kann php - abgegrenzt durch spezielle Tags - einfach in ein HTML-Dokument schreiben. Damit der Server die PHP-Anweisungen auch interpretiert muss die Dateiendung beispielsweise auf .php, .php4, .phtml oder .phtm geändert werden. ".php" ist die gebräuchlichste Endung, die auch in diesem Kurs verwendet wird. Hier ein Beispiel:

HTML
<html>
     <head>
         <titel>ein erster Test</titel>
    </head>
    <body>
        <h1>ein erster Test</h1>
        <?php
        $a=6;
        echo "a entspricht $a und wenn man a um einen erhöht ";
        $a=a+1;
        echo a$;
        ?>
</body>
</html>

Als Ausgabe erhält man somit: "a entspricht 6 und wenn man a um einen erhöht 7".

Man sieht hieran, dass man PHP mit <?php ... ?> oder kurz auch <? ... ?> in HTML einbindet. Das Einbinden mit <?php entspricht den Vorgaben von XML und sollte daher eher benutzt werden. PHP benutzt Variablen. Diese werden mit dem "$"-Zeichen definiert. Beipsiel: $a. Texte und Variablen werden über den Befehl echo ausgegeben. Für den Einstieg in PHP sind diese Informationen schon ausreichend. Weitere Befehle wird man beim Projekt kennenlernen.

SQL Einstieg

SQL und mySQL unterscheiden sich eigentlich nicht. mySQL nutzt gegenüber SQL aber weitere Befehle, ist also nicht abwärtskompatibel mit SQL und anderen SQL-Dialekten.

Mit SQL kann man Datenbanken und Tabellen anlegen und löschen, Daten speichern und auslesen. Auch hierzu ein Beispiel:

sql
INSERT INTO tab_obst (obst, farbe), VALUES (tomate, rot);
SELECT * FROM tab_obst WHERE farbe='rot' AND obst<>'tomate';
UPDATE tab_obst SET farbe=gelb WHERE name='birne' AND dasalter>'14';

Unsere dazugehörige Tabelle sieht jetzt so aus:

Tabellenstruktur
+---------+--------+--------+
| obst    | farbe  | dasalter |
+---------+--------+--------+
| apfel   | gruen  + 7      |
| birne   | gelb   + 16     |
| tomate  | rot    +        |
| apfel   | rot    +        |
+---------+--------+--------+ 

Mit der INSERT-Anweisung wird ein Datensatz in die Tabelle tab_obst eingefügt. Es werden nur die Felder "obst" und "farbe" aufgefüllt und zwar mit den Werten "tomate" und "rot". Das Feld dasalter bleibt leer.

Mit der zweiten Anweisung selektiert (SELECT) man bestimmte Datensätze aus der Tabelle. Hier werden alle Früchte gefunden die die Farbe "rot" haben, aber keine Tomaten sind. In diesem Beispiel also der rote Apfel.

Mit der UPDATE-Anweisung werden Daten in der Tabelle verändern. Hier soll die Farbe auf "gelb" gesetzt werden und zwar bei allen Birnen die älter als "14" sind.

Ausgaben von Daten aus einer mySQL-Datenbank per PHP

Die oben angeführen Beispiele können so nur in eine SQL-Konsole eingegeben werden. Wenn man über PHP mySQL steuern möchte, ist noch ein kleiner Umweg nötig.

Als erstes muss das Script veranlasst werden sich mit mySQL zu verbinden.

php
  1. $server = "localhost";
  2. $user = "username";
  3. $pass = "passwort";
  4. $datenbank = "datenbankname";
  5.  
  6. $conn = @mysql_connect($server, $user, $pass);
  7. @mysql_select_db($datenbank, $conn);
  8. if ($conn!=TRUE)
  9. {
  10. echo "Verbindungsfehler: ".mysql_error()." !! Versuchen Sie es zu einem sp&auml;teren Zeitpunkt nochmals. Danke.";
  11. die;
  12. }

Diese Anweisungen braucht man immer wieder. In den Zeilen 2-5 teilt man dem Script die nötigen Angaben für die Datenbank mit. Die Variable "$server" kann in den meißten Fällen auf "localhost" bleiben, sollte das nicht funktionieren muss sie auf den Datenbankserver zeigen. Zu näheren Informationen fragt man hier dann am besten den Provider.

In Zeile 7 wird mit mysql_connect php mit der Datenbank verbunden. Zeile 8 wählt dann für weitere Anfagen die richtige Datenbank aus. Das @-Zeichen vor den beiden Befehlen unterdrückt eventuell auftretende Fehlermeldungen. Diese könnten auftreten wenn beispielsweise der Server "down" ist.

Um aber trotzdem den Benutzer nicht mit einem leeren Bildschirm stehen zu lassen, generiert man einfach eine eigene Fehlermeldung.

mysql_connect gibt als Ergebnis von seiner Aktion true oder false zurück, je nachdem ob eine Verbindung zustanden gekommen ist oder nicht. Das Ergebnis der Zeile @mysql_connect($server, $user, $pass); wird hier in $conn gespeichert. Über eine IF-Abfrage in Zeile 10 prüft man dann, ob $conn den Wert true oder false hat, sprich ob eine Verbindung zustande gekommen ist oder nicht.

Der Aufbau einer IF-Anweisung ist immer if (was testen) { was tun; } Hier ist der Test ob $conn nicht gleich TRUE ist. Nicht gleich ist also "!=", daneben gibt es noch "==" (ist gleicht) nicht zu verwechseln mit "=" welches einen Wert zuweißt wie in den Zeilen 2-5! Das ist eine der häufigsten Fehlerquellen in PHP, daher immer zweimal überprüfen ob man Zuweisung (=) und Vergleich (==) richtig einsetzt. Weitere Vergleichmöglichkeiten in PHP sind beispielsweise "<", ">", ">=", "<=", "<>" etc.

In dem "was tun"-Block, der abgearbeitet wird wenn keine Verbindung zustande gekommen ist, wird jetzt eine Fehlermeldung mit echo ausgegeben. mysql_error() gibt dabei eine genaue Fehlermeldung zurück. Diese ist aussagekräftiger als die, die in Zeile 7 unterdrückt wurde.

Der Befehl die; bricht das Script dann an dieser Stelle ab und verhindern das ohne Datenbankverbindung weitere Zugriffe (und somit Fehler) stattfinden.

Jetzt aber zu einer ersten Datenbankabfrage über php. Dem Bespiel liegt die Tabelle aus Codebox 3 zugrunde:

php
  1. $query = "SELECT * FROM tab_obst WHERE alter<>''";
  2. $result=mysql_query($query);
  3. while ($daten=mysql_fetch_array($result, MYSQL_ASSOC))
  4. {
  5. echo "Wir haben das Obst $daten[obst] mit der Farbe $daten[farbe]. Es ist $daten[alter] Tage alt.";
  6. echo "<br /><br />";
  7. }

Die Zeile 2 ist von den SQL-Beispielen bekannt. Hiermit werden alle Spalten von der Tabelle "tab_obst" selektieren, die in der Spalte "dasalter" einen Wert haben - also großer oder kleiner '' (zwei einfache Anführungszeichen = nichts) - sind. Man tun hier nichts anderes, als die SQL-Abfrage in $query zu speichern. Über mysql_query() wird diese Abfrage dann an die zuvor (Codebox 4) geöffnete Verbindung gesendet. Die Rückmeldung von SQL wird in $result gespeichert. Diese Rückmeldung ist ein Zeiger auf eine Ergebnisliste in der alle Tabellenreihen, die zum Ergebnis passen, zwischengespeichert sind. Da man damit für die Ausgabe noch nicht viel anfangen können, holt man sich jetzt jeweils eine Zeile der Ergebnisliste heraus und speichern diese Daten in $daten. Genau das geschiehtüber mysql_fetch_array. Die erste Variable in der folgenden Klammer sagt dem Befehl welchen Zeiger auf eine Ergebnisliste er verwenden soll. Hier der zuvor erzeugte Zeiger $result.

Die Daten einer Tabellenreihe liegen jetzt in $daten. $daten ist somit ein Array. Arrays sind Variablen die mehr als einen Wert haben. Wenn die erste Tabellenzeile eingelesen wird, hat $daten die Werte "apfel", "grün" und "7". Damit man auf die Daten zugreifen kann, hat jedes Array einen Index. Dieser beginnt in der Regel bei 0 und zählt jeweils um 1 hoch. Man kann also über $daten[0] auf den Wert "apfel" zugreifen. Dementsprechend wäre $daten[2] == 7. Diese Zuweisung ist bei größeren Tabellenreihen eher umständlich, da man immer die Position der gewünschten Daten im Kopf haben muss. Mit dem Zusatz MYSQL_ASSOC veranlassen wir php neben(!) dem Indizierten Index "[0]" noch einen weiteren Assoziatives Index anzulegen. php benutzt hierfür die SQL-Namen der Tabellenspalten. Auf den Begriff "apfel" kann man also auch über $daten[obst] zugreifen. In dem Beispiel wird dann auch die schlüssigere zweite Methode verwendet.

Ein Befehl in dem Beispiel ist noch nicht erläutert wurden (while). Über mysql_fetch_array wurde auf eine(!) Zeile der Ergebnisliste zugegriffen. Die Ergebnisliste sollte aber über 2 Reihen verfügen, da auch birne ein Alter angegeben hat. Anmerkung: in der Regel kennt man die Länge der Ergebnisliste nicht.

Über eine while-Schleife kann man das abarbeiten einer unbekannt langen Liste bewerkstelligen. Mit while wird ein Befehlsblock (zwischen { und }) solange abgearbeitet, wie die Bedingung (zwischen ( und )) zutrifft. Ähnlich wie mysql_connect oben, gibt auch mysql_fetch_array FALSE zurück wenn es keine Tabellenzeile mehr findet, die es in $daten speichern kann. Solange also Daten gefunden werden, wird true zurückgegeben und die beiden echo-Befehle in den geschwungenen Klammern abgearbeitet.

Speichern von Daten in eine mySQL-Datenbank per PHP

Analog zu dem Auslesen von Daten funktioniert auch das Speicher über php. Das Grundgerüst bleibt gleich, nur der SQL-Befehl ändert sich.

php
  1. $query = "INSERT INTO tab_obst (obst, farbe), VALUES (tomate, rot)";
  2. $result=mysql_query($query);

In $query wird wieder der entsprechende SQL-Befehl gespeichert und dann über mysql_query() an mySQL gesendet.

Das sind jetzt die nötigen Grundlagen, mit dehnen man theoretisch alle Datenbank-Aktionen über PHP veranlassen kann, vorausgesetzt man kennt die nötigen SQL-Befehle ;).

Ergebnis und Ausblick

Einen ersten Überblick über die Funktionsweise von PHP und mySQL hat man jetzt. Sollte das jetzt alles etwas viel gewesen sein: keine Angst. Im nächsten Teil dieses Kurses wird mit dem Newsscript begonnen. Hier wird jede Zeile Schritt für Schritt durchgehen und genau erläutert. Am Ende des nächsten Teils halten ist das Script soweit, dass es News entgegennimmt und diese wieder ausgibt.

Ab dem nächsten Teil kann man die Codeboxen und Scriptteile unter http://lauff.info/tp_php1.php downloaden.

Befehlsliste

An dieser Stelle werden die, in dem jeweiligen Teil neu besprochenen PHP und mySQL-Befehle aufgelistet. Die Befehle sind ggf. mit der entsprechenden Seite auf der offiziellen Dokumentation verlinkt.

 

Buchrezension

Coverimage
AJAX Hacks
Dynamische Webseiten mit AJAX programmieren - dieses Handbuch bietet einen praktischen Einblick.
[mehr]
Gimahhot - Shopping
TP-Partner
Sprachreise London
Webmasterpro
Computerhilfen
Computerhilfen
Eventagentur Hamburg
it-rechtsinfo.de
Designguide
Getreidemühlen
sk-typo3
Kochkurs Berlin
Maandiko.de
d. Webdesigner
PSD Tutorials
Medizin
Handy Forum

Hier könnte Ihre Werbung stehen

 >> INFO << 

\ Startseite | Forum | Impressum | nach oben | Seite zurück /