PHP Tutorials, PHP lernen, PHP Forum, PHP Community and more ... MyWebsolution.de!

Sidebar

Home News Tutorials Workshops Tipps Artikel Gästebuch Sitemap Unicode Shopping

Suche

Members

Forum Login Registrierung

Statistik

Statistikbereich
Jetzt2
Heute52
Gestern263
Gesamt1642567

PHP/ MySQL Gästebuch Tutorial - Ausgabe der Einträge

Autor Flitze
Klicks 102871
Rating für PHP/ MySQL Gästebuch Tutorial
  4.2 von 10
Bewertungen131
Stand 05.07.2010
Keywords:
Gästebuch Tutorial, PHP Gästebuch erstellen, Guestbook, Gästebuch mit PHP und MySQL, Spamschutz für Gästebuch, Spam im Gästebuch, , Ausgabe, Einträge, Gästebuch

Amazon: PHP 5.3 und MySQL 5.1
Breadcrumb:
Tutorials » PHP/ MySQL Gästebuch Tutorial » PHP/ MySQL Gästebuch Tutorial - Ausgabe der Einträge
Seite : 1 2 3 4 5 6 7 Bewerten
Article Wizard - deutscher Article Spinner

6. Ausgabe der Einträge


Damit man die Einträge der verschiedenen User auch lesen kann, müssen sie aus der Datenbank geholt und entsprechend aufbereitet werden. Das kann z.B. so aussehen

PHP:
<?php
    $sql 
"SELECT
                   Email,
                   Homepage,
                   Name,
                   Datum,
                   Nachricht,
                   Editierung
            FROM
                   Gaestebuch
            ORDER BY
                   Datum DESC
           "
;
    
$result mysql_query($sql) OR die ("<pre>\n".$sql."</pre>\n".mysql_error());
    while(
$row mysql_fetch_assoc($result)) {
        echo 
"<table>\n";
        echo 
" <tr>\n";
        echo 
"  <td>\n";
        echo 
"   <table>\n";
        echo 
"    <tr>\n";
        echo 
"     <td>\n";
        if (
trim($row['Email'])== "")
            echo 
"&nbsp;";
        else
            echo 
"&raquo;&nbsp;<a href=\"mailto:".htmlentities($row['Email'], ENT_QUOTES)."\">Email</a>";
        echo 
"     </td>\n";
        echo 
"    </tr>\n";
        echo 
"    <tr>\n";
        echo 
"     <td>\n";
        if (
trim($row['Homepage'])== "")
            echo 
"&nbsp;";
        else {
            if (
strtolower(substr($row['Homepage'], 07)) =='http://')
                echo 
"&raquo;&nbsp;<a href=\"".htmlentities($row['Homepage'], ENT_QUOTES)."\" target=\"_blank\">Homepage</a>";
            else
                echo 
"&raquo;&nbsp;<a href=\"http://".htmlentities($row['Homepage'], ENT_QUOTES)."\" target=\"_blank\">Homepage</a>";
        }
        echo 
"     </td>\n";
        echo 
"    </tr>\n";
        echo 
"   </table>\n";
        echo 
"  </td>\n";
        echo 
"  <td>\n";
        echo 
"   <table>\n";
        echo 
"    <tr>\n";
        echo 
"     <td>\n";
        echo 
htmlentities($row['Name'], ENT_QUOTES);
        echo 
"     </td>\n";
        echo 
"    </tr>\n";
        echo 
"    <tr>\n";
        echo 
"     <td>\n";
        echo 
date('d.m.Y H:i \U\h\r'strtotime($row['Datum']))."\n";
        echo 
"     </td>\n";
        echo 
"    </tr>\n";
        echo 
"   </table>\n";
        echo 
"  </td>\n";
        echo 
" </tr>\n";
        echo 
" <tr>\n";
        echo 
"  <td>\n";
        echo 
nl2br(htmlentities($row['Nachricht'], ENT_QUOTES))."\n";
        if(
$row['Editierung']){
            echo 
"<br>\n<br>\n";
            echo 
"<span style=\"font-size:10px\">".nl2br(htmlentities($row['Editierung']))."</span>\n";
        }
        echo 
"  </td>\n";
        echo 
" </tr>\n";
        echo 
"</table>\n";
?>


Das Ganze gehen wir jetzt mal einzeln durch. Zuerst fällt auf, das alle Ausgaben mit der Funktion htmlentities bearbeitet werden. Sie wandelt alle HTML beinflussenden Sonderzeichen ( wie z.B. < > " ' & ) so um, dass sie den Quellcode nicht mehr beeinflussen. Täte ich das nicht, könnte jemand sowas wie <script>alert( 'lol' );</script> in seinen Beitrag schreiben, sodass bei jedem Aufruf der Gästebuchseite eine Windows Error Message erscheinen würde. Auch </table></table></table></table>< /table> wäre denkbar, damit würde man das gesamte Layout zerschroten.

Aber kommen wir erstmal zum eigentlichen 'Abholen' der Daten. Diese hole ich mir aus der Datenbank und ordne sie absteigend nach dem Datum, damit die neusten Einträge auch ganz oben stehen. Das ist dieser Teil

PHP:
<?php
    $sql 
"SELECT
                   Email,
                   Homepage,
                   Name,
                   Datum,
                   Nachricht,
                   Editierung
            FROM
                   Gaestebuch
            ORDER BY
                   Datum DESC
           "
;
    
$result mysql_query($sql) OR die ("<pre>\n".$sql."</pre>\n".mysql_error());
    while(
$row mysql_fetch_assoc($result)) {
         
// ...
?>


Durch die while-Schleife gehe ich jeden Datensatz einzeln durch. Nun folgen die Prüfungen der einzelnen Daten, beginnend mit der Email-Adresse

PHP:
<?php
        
if (trim($row['Email'])== "")
            echo 
"&nbsp;";
        else
            echo 
"&raquo;&nbsp;<a href=\"mailto:".htmlentities($row['Email'], ENT_QUOTES)."\">Email</a>";
?>


Wurde keine Email-Adresse eingegeben, wird ein geschütztes Leerzeichen ausgegeben damit der IE die Tabellenzelle trotzdem noch darstellt. Wurde eine Email-Adresse eingegeben, wird sie in einen mailto:-Hyperlink verwandelt, der die Bezeichnung &raquo; 'Email' bekommt.

Danach folgt die Prüfung der Homepage

PHP:
<?php
        
if (trim($row['Homepage'])== "")
            echo 
"&nbsp;";
        else {
            if (
strtolower(substr($row['Homepage'], 07)) =='http://')
                echo 
"&raquo;&nbsp;<a href=\"".htmlentities($row['Homepage'], ENT_QUOTES)."\" target=\"_blank\">Homepage</a>";
            else
                echo 
"&raquo;&nbsp;<a href=\"http://".htmlentities($row['Homepage'], ENT_QUOTES)."\" target=\"_blank\">Homepage</a>";
        }
?>


Zuerst wird wieder geprüft, ob eine Homepage eingegeben wurde. Da wir einen gültigen Hyperlink auf die entsprechende Homepage erzeugen wollen, müssen wir sicherstellen, dass am Anfang der eingegebenen Homepage auch 'http://' steht. Ist dies der Fall, wird die Eingabe für die Ausgabe einfach übernommen. Ansonsten wird ein 'http://' hinzugefügt. Das ist nötig, weil man ja nich voraussetzen kann, dass der User auch wirklich immer 'http://' an den Anfang der Homepage schreibt. Die Bezeichnung des Links lautet &raquo; 'Homepage' respektive &nbsp;, falls keine Homepage angegeben wurde.

Nach der Homepage folgt die Ausgabe des Datums. Da dieses automatisch bei jedem Eintrag erzeugt wird, muss ich es nicht auf seine Existenz prüfen sondern kann gleich folgende Ausgabe erzeugen

PHP:
<?php
        
echo date('d.m.Y H:i \U\h\r'strtotime($row['Datum']))."\n";
?>


Dadurch, das wir das Datum in einer als DATETIME deklarierten Datenbankspalte speichern, erfolgt dessen Ausgabe als String. Allerdings ist dieser String nicht nach deutschem Maßstab formatiert. Um diesen Umstand zu korrigieren benutze ich die Funktionen date und strtotime. date formatiert mir einen timestamp meinen Wünschen entsprechend und strtotime wandelt den String der MYSQL-Datums-Spalte in den benötigten Timestamp um. Die genau Syntax der date Funktion sowie die verwendeten Parameter könnt ihr dem Manual entnehmen.

Last but not least kommt die Ausgabe der Nachricht mittels

PHP:
<?php
        
echo nl2br(htmlentities($row['Nachricht'], ENT_QUOTES))."\n";
        if(
$row['Editierung']){
            echo 
"<br>\n<br>\n";
            echo 
"<span style=\"font-size:10px\">".nl2br(htmlentities($row['Editierung']))."</span>\n";
        }
?>


Wie man sieht, wird die Nachricht zusätzlich zu htmlentities noch mit der Funktion nl2br bearbeitet. Diese Funktion sorgt dafür, dass die Absätze bzw. Zeilenumbrüche, die der User bei der Eingabe der Daten im Formular macht, auch im HTML-Quelltext als solche umgesetzt werden.

Dann wird geprüft, ob dieser Beitrag bereits von jemandem bearbeitet wurde, also ob eine Editierung vorgenommen wurde. Ist die der Fall, wird eine entsprechende Nachricht ausgegeben, ansonsten wird nicht ausgegeben. Wie diese Editierung zu Stande kommen kann, erkläre ich im folgenden Kapitel der Verwaltung.

Zurück zur vorigen Seite:
PHP/ MySQL Gästebuch Tutorial - Speichern in der Datenbank
Weiter zur nächsten Seite:
PHP/ MySQL Gästebuch Tutorial - Verwaltung und Administration

»» Zurück zum Menu

Suchmaschinenoptimierung

Suchmaschinenoptimierung (SEO - Search Engine Optimization)

Ranking

Tutorials (13)

8.6
8.4
8.1

Workshops (3)

8.8
8.7
7.6

Tipps (13)

7.2
6.7
6.5

Artikel (30)

8.4
7.2
6.6

RSS Feeds

Full Feed Tutorials Workshops Tipps Artikel

Twitter

Follow me on Twitter

Partner & Links


Valid HTML 4.01 Transitional
Valid CSS
nach oben

Diese Seiten unterstützen MyWebsolution:
 
© MyWebsolution.de
2006-2017