Ein einfaches Gästebuch - das Buch selbst

Was zum Gästebuch jetzt noch fehlt ist das Script um Einträge anzuzeigen. Dieses ist etwas umfangreich, denn wir müssen prüfen, ob die MYSQL-Tabelle vorhanden ist, die Menge der Einträge auslesen und gegebenenfalls Seitenlinks zum Umblättern anbieten. Da Wohnort, E-Mail und Homepageadresse auf freiwilliger Basis sind, müssen wir außerdem den Inhalt prüfen. Zusätzlich bietet Dir dieses Gästebuch noch das Moderieren an (Spalte anmerkung), wo Du Anmerkungen zu Gästebucheinträgen hinterlegen kannst, welche natürlich im Buch selbst auch angezeigt werden.

Falls Du mit einer Aktivierung arbeitest, dann darf das Gästebuch nur aktivierte Einträge anzeigen.

All diese Anforderungen erfüllt das folgende Script, welches sich in der buch.php befindet. Die buch.php selbst befindet sich im Ordner "gaeste".

<?php
// --- Als erstes Vorbereitungen für den Kopf ---
// --- Dazu müssen wir die Datenbank öffnen ---
@include_once "privates/cgi-bin/datenbank.php";
$datenbank_oeffnen = @mysql_pconnect($Datenbank_server, $Datenbank_user, $Datenbank_passwort);
if($datenbank_oeffnen == TRUE)
  {
    $selectiere_db = @mysql_select_db($Datenbank_name,$datenbank_oeffnen);
    if($selectiere_db == TRUE)
      {
        // --- MYSQL-Tabelle für Gästebuch suchen ---
        $suche_gaestebuch = false;
        // --- Tabelle für Gästebuch suchen ---
        $sql = "SHOW TABLES FROM $Datenbank_name";// --- alle DB-Tabellen auflisten
        $result_table = mysql_query($sql);
        if(!result_table)// --- Wenn Verbindung fehl geschlagen
          {
            exit; // --- Script beenden
          }
        $alle_tabellen = array(); // --- Array für alle vorhandenen Tabellen reinschreiben
        while($row_table = mysql_fetch_row($result_table)) // --- Schleife für Tabellensuche
          {
            array_push ($alle_tabellen,$row_table[0]);// --- Tabellen ins Array schreiben
          }
        if(in_array($tabelle_gaeste,$alle_tabellen))// --- nach Tabelle im Array suchen
          {
            $suche_gaestebuch=true;// --- wenn vorhanden, dann auf wahr setzen
          }
        // --- Ist Tabelle vorhanden? ---
        if($suche_gaestebuch == true)
          {
            // --- Tabelle vorhanden ---
            // --- Menge Einträge feststellen (nur aktivierte Einträge mit WHERE aktiviert='x') ---
            // --- wenn Du WHERE aktiviert='x' weglässt, dann werden alle Einträge gezählt ---
            $result_menge = mysql_query ("SELECT ID FROM $tabelle_gaeste WHERE aktiviert='x' ORDER BY ID");
            $menge_eintraege = mysql_num_rows($result_menge);
            // --- passend zur Menge jetzt die Ausgabe vorbereiten ---
            if($menge_eintraege >= '1')
              {
                // --- Eintrag vorhanden - dementsprechend die Ausgabe vorbereiten ---
                // --- Gramatik aufbesseren ---
                if($menge_eintraege > '2')
                  {
                    $text_kopf = "Es gibt $menge_eintraege Einträge im ->";
                    $text_formular = "<a href=gaeste.php?eintrag=erstellen>einen weiteren Eintrag erstellen?</a>";
                  }
                else
                  {
                    $text_kopf = "Es gibt einen Eintrage im ->";
                    $text_formular = "<a href=gaeste.php?eintrag=erstellen>einen neuen Eintrag erstellen?</a>";
                  }
              }
            else
              {
                // --- kein Eintrag vorhanden - dementsprechend die Ausgabe vorbereiten ---
                $menge_eintraege = "0";
                $text_kopf = "Es liegt noch kein Eintrag vor";
                $text_formular = "<a href=gaeste.php?eintrag=erstellen>Erstelle bitte den ersten Eintrag</a>";
                $text_inhalt = "Leider liegt in meinem Gästebuch noch kein Eintrag vor.";
              }
          }
        else
          {
            // --- Tabelle NICHT vorhanden ---
            // --- Ausgabe für Kopf erstellen ---
            // --- Jetzt mit Angaben ---
            $menge_eintraege = "0";
            $text_kopf = "Es liegt noch kein Eintrag vor";
            $text_formular = "<a href=gaeste.php?eintrag=erstellen>Erstelle bitte den ersten Eintrag</a>";
            $text_inhalt = "Leider liegt in meinem Gästebuch noch kein Eintrag vor.";
          }
      }
    else
      {
        // --- Ausgabe für Kopf erstellen ---
        // --- LEER, da keine Aktivierung ---
        $menge_eintraege = "0";
        $text_kopf = "&nbsp;";
        $text_formular = "&nbsp;";
        $text_inhalt = "Leider kann im Moment nicht auf den Inhalt des Gästebuches zugegriffen werden.";
      }
  }
else
  {
    // --- Ausgabe für Kopf erstellen ---
    // --- LEER, da keine Datenbankverbindung ---
    $menge_eintraege = "0";
    $text_kopf = "&nbsp;";
    $text_formular = "&nbsp;";
    $text_inhalt = "Leider kann im Moment nicht auf den Inhalt des Gästebuches zugegriffen werden.";
  }
// --- jetzt haben wir alle Daten für den Kopf ---
// --- HTML Tabelle zur Anzeige erstellen ---
echo "<table border=0 align=center>\n";
echo "<tr><td width=25%></td><td width=50%></td><td width=25%></td></tr>\n";
// --- Die HTML-Tabelle wird in der Abfrage geschlossen ---
if(menge_eintraege == '0')
  {
    echo "<tr><td>$text_kopf</td><td align=center><font style=\"font-size:140%;line-height:100%;\"><b>GÄSTEBUCH</b></font></td><td align=right>$text_formular</td></tr>\n";
    echo "<tr><td colspan=3 align=center><br>$text_inhalt</td></tr>\n";
    echo "</table>\n";
  }
else
  {
    echo "<tr><td>$text_kopf</td><td align=center><font style=\"font-size:140%;line-height:100%;\"><b>GÄSTEBUCH</b></font></td><td align=right>$text_formular</td></tr>\n";
    echo "<tr>\n   <td colspan=3><hr><br></td>\n</tr>\n";
    echo "</table>\n";
  }
// --- Damit ist der Kopfbereich des Gästebuches abgeschlossen ---

// --- und fangen jetzt an, den Inhalt des Buches auszuwerten ---
if($datenbank_oeffnen == TRUE)
  {
    if($selectiere_db == TRUE)
      {
        if($suche_gaestebuch == true)
          {
            if($menge_eintraege >= '1')
              {
                $gesamt = $menge_eintraege;
                // --- Einträge pro Seite festlegen ---
                $eintraege_pro_seite = "10";
                $num_seite = ceil($gesamt/$eintraege_pro_seite);
                // --- Seitenlinks erstellen ---
                if(strlen($seite) < 1)
                  {
                    $seite = 1;
                  }
                $links = array();
                if($seite != 1)
                  {
                    // --- Link - Seite zurück (Links außen mit < <)---
                    $prev = $seite-1; $links[] = "<a href=\"gaeste.php?seite=" . $prev . "\"><<</a> &nbsp; &nbsp; ";
                  }
                for($i=1;$i<=$num_seite;$i++)
                  {
                    if($i == $seite)
                      {
                        // --- Anzeige, auf welcher Seite Du gerade bist ---
                        $links[] = "<font style=\"font-size:140%;line-height:100%;\"><b>" . $i . ".Seite</b></font>";
                      }
                    else
                      {
                        // --- Link zu anderen Seiten als Seitenzahl ---
                        $links[] = "<a href=\"gaeste.php?seite=" . $i . "\">" . $i . "</a>";
                      }
                  }
                if($seite != $num_seite)
                  {
                    // --- Seitenlink zur nächsten Seite (rechts außen mit > >) ---
                    $next = $seite+1; $links[] = " &nbsp; &nbsp; <a href=\"gaeste.php?seite=" . $next . "\">> ></a>";
                  }
                $link_string = implode(" ", $links); $start = ($seite-1)*$eintraege_pro_seite; $start2 = $start+1; $ende = $start+$eintraege_pro_seite;
                // --- Links zu den Seiten fertig, jetzt in Abfrage einbinden ---
                $result2 = @mysql_query("SELECT * FROM $tabelle_gaeste WHERE aktiviert='x' ORDER BY ID DESC LIMIT ".$start.",".$eintraege_pro_seite);

                // --- über die while Schleife alles (zugelassene) ausgeben ---
                while ($row = @mysql_fetch_array($result2))
                  {
                    // --- Pro Durchlauf wird dieses ausgefüllt ---
                    echo "<table border=0 width=85% align=center>\n"; // -> Angaben in der CSS-Datei vorhanden? mit class= einsetzen
                    echo "<tr><td width=50%></td><td width=50%></td></tr>\n"; // -> Felder wegen E-Mail und Homepage
                    // --- Inhalt Wohnort prüfen ---
                    if(strlen($row[wohnort]) >= '1')
                      {
                        $wohnort = "aus " . $row['wohnort'] .""; // -> beachte Zeichen!
                      }
                    else
                      {
                        $wohnort = "";
                      }
                    // --- jetzt Überschrift zum Gästebucheintrag ausgeben ---
                    echo "<tr><td colspan=2>Am " . $row['datum'] . " schrieb " . $row['name'] . " $wohnort folgendes in dieses Gästebuch:</td></tr>\n";
                    // --- Da HTML mit \n nichts anfangen kann - Array zum Umwandeln
                    $tausche_text = array("\n"=>"<br>");
                    $nachricht = strtr($row[nachricht],$tausche_text);
                    // --- Jetzt die Nachricht ausgeben ---
                    echo "<tr><td colspan=2>$nachricht</td></tr>\n";
                    // --- E-Mail und Homepage auf Inhalt prüfen und passend ausgeben ---
                    if(strlen($row[email]) >= '1' && strlen($row[homepage]) >= '1')
                      {
                        echo "<tr><td>E-Mail: " . $row['email'] . "</td><td align=right>Homepage: " . $row['homepage'] . "</td></tr>\n";
                      }
                    elseif(strlen($row[email]) >= '1' && strlen($row[homepage]) < '1')
                      {
                        echo "<tr><td>E-Mail: " . $row['email'] . "</td><td>&nbsp;</td></tr>\n";
                      }
                    elseif(strlen($row[homepage]) >= '1' && strlen($row[email]) < '1')
                      {
                        echo "<tr><td>&nbsp;</td><td align=right>Homepage: " . $row['homepage'] . "</td></tr>\n";
                      }
                    // --- Prüfen, ob eine Anmerkung existiert ---
                    if(strlen($row[anmerkung]) >= '1')
                      {
                        echo "<tr><td colspn=2>" . $row['anmerkung'] . "</td></tr>\n";
                      }
                    // --- jetzt fehlt noch der Abstand ähnlich oben (mit zwei Spalten) - hier eine Spalte ---
                    echo "<tr><td colspan=2></td></tr>\n";
                    echo "</table>\n";
                    // --- Abtrennung zum nächsten Eintrag ---
                    echo "<table border=0 width=85% align=center>\n<tr>\n";
                    echo "   <td><hr></td>\n";
                    echo "</tr>\n</table>\n";
                  }
                // --- Abstand zu den Seiten-Links ---
                echo "<p>&nbsp;</p>\n";
                // --- Die Seiten-Links anzeigen ---
                echo "<p align=center>" . $link_string . "</p>\n";
              }
          }
      }
  }
?>

Damit sind jetzt alle Dateien für das Gästebuch selbst vorhanden.

Was jetzt noch fehlt ist ein Adminbereich zum Einträge freischalten (aktivieren) oder wieder sperren (deaktivieren), Einträge löschen oder bearbeiten (Anmerkungen einfügen).

Den Adminbereich zum Gästebuch findest Du dann auf der Seite "Adminbereich".