//Der PHP-Teil. Ohne PHP (oder einer anderen Internettauglichen //Programmiersprache (wie z.B. Perl)) wird man kein Gästebuch zum //Laufen bekommen.
// $page initialisieren, falls nicht gesetzt if (!$_REQUEST['page']) { $page = 0; } else { $page = $_REQUEST['page']; }
//Script wird nur ausgeführt wenn der Benutzer auf "Eintragen" gedrückt hat if($_POST['submit']) { //Alles in eine Variable hintereinander schreiben $GBeintrag = $_POST['myGBname']."|"; $GBeintrag .= $_POST['myGBhp']."|"; $GBeintrag .= $_POST['myGBmail']."|"; $GBeintrag .= date("d.m.y")."|"; //datum muss natürlich auch mit rein
//Falls jemand in der nachricht ein | verwendet hat sollten wir das //ersetzen, da sonst beim auslesen fehler auftauchen $_POST['myGBtext'] = str_replace("|","<!strich!>",$_POST['myGBtext']); //Und dann noch die Zeilenumbrüche raus damit alles in einer Reihe steht //ist kein muss, sieht aber besser aus $_POST['myGBtext'] = str_replace("\r\n","<!umbruch!>",$_POST['myGBtext']);
$GBeintrag .= $_POST['myGBtext']."\r\n";
//Den eintrag in die Textdatei schreiben $openfile = fopen("myGB.txt","a"); flock($openfile,2); fwrite($openfile,$GBeintrag); flock($openfile,3); fclose($openfile); }
//Hier das Gästebuch öffnen und alle Einträge einlesen
$eintraege = @file("myGB.txt");
//Die Variable $ppp steht für Posts-Per-Page und gibt an, //wieviele Beiträge auf einer Seite angezeigt werden sollen $ppp = 1; ?>
<!-- Hier der Allgemein bekannte HTML-Teil welcher das Aussehen der Seite und damit das des GBs bestimmt Hier kann man nach belieben alles anpassen bis auf Bestehen bleiben sollten jedoch die integrierten PHP-Anweisungen welche sich zwichschen <? //und ?> befinden. Sebstverständlich können diese natürlich an eine andere Stelle verfrachtet werden. //-->
<!-- EINTRÄGE ANZEIGEN --> <? //PHP-code um die Einträge anzuzeigen
//solange einträge vorhanden sind wird eine schleife durchlaufen //von hinten nach vorne (also neueste zuerst) $start = (count($eintraege)-1) - $ppp*$page; $stop = (count($eintraege)-1) - $ppp*$page - $ppp + 1; if($stop<0) $stop = 0; for($a = $start; $a >= $stop; $a--) { //Die einzelnen Teile des Eintrags teilen $Eintrag = explode("|",$eintraege[$a]);
//Dann noch die Sonderstrings wie "<!umbruch!>" und "<!strich!>" wieder //in die ursprünglichen zeichen ersetzen $Eintrag[4] = str_replace("<!umbruch!>","\r\n",$Eintrag[4]); $Eintrag[4] = str_replace("<!strich!>","|",$Eintrag[4]);
//und jetzt alles in tabellen ausgeben ?> <table class="GBtable"> <tr class="GBhead"> <td>Von : <?=$Eintrag[0];?></td> <td>am : <?=$Eintrag[3];?></td> <td><a class="GBlink" href="mailto:<?=$Eintrag[2];?>">Email</a></td> <td><a class="GBlink" href="<?=$Eintrag[1];?>" target="_blank">Homepage</td> </tr> <tr> <td colspan="4"><?=nl2br($Eintrag[4]);?></td> </tr> </table> <br> <? } //$max gibt die Anzahl der Einträge an $max = count($eintraege); echo("<p align='center'>"); //ist man nicht auf Seite 0 kann man logischerweise eine Seite zurückgehen echo("<a href='$PHP_SELF?page=0'>erste Seite</a> "); if(($max > $ppp)&&($page>0)) echo("<a href='$PHP_SELF?page=".($page-1)."'>vorherige Seite</a>"); echo(" Seite ".($page + 1)." "); //und ist die Anzahl der Einträge größer, als die, die von der aktuellen //Seite dargestellt wird, kann man eine Seite vorgehen if(($max > $ppp)&&($max>($page+1)*$ppp)) echo("<a href='$PHP_SELF?page=".($page+1)."'>nächste Seite</a>"); echo(" <a href='$PHP_SELF?page=".(ceil($max / $ppp) - 1)."'>letzte Seite</a>"); echo("</p>"); ?> </center>
Letztendlich müsste man hier sowieso noch einiges bauen, z.B. wäre es zweckmäßig, nicht nur auf die jeweils vorherige und nächste Seite zu verlinken, sondern auch den direkten Link zu bestimmten Seiten anzubieten.
Wichtig wäre evtl. noch, ein paar Abfragen für Pflichtangaben (z.B. Name) einzubauen, dann die Mailadresse mit regulären Ausdrücken auf Gültigkeit zu checken usw.
Aber so gesehen findet man da nie ein Ende. Denke mal als Basis isses OK!
Edit: ?! Da hats mir doch gerade den Post in der Mitte abgeschnitten...nochmal:Puh, okay. Waren paar Fehler bei der Seiten-Sache. Sollten jetzt raus sein. Die restlichen Vorschläge sind auch mit aufgenommen. And there it is:
Code:
<?
//Der PHP-Teil. Ohne PHP (oder einer anderen Internettauglichen //Programmiersprache (wie z.B. Perl)) wird man kein Gästebuch zum //Laufen bekommen.
// $page initialisieren, falls nicht gesetzt if (!$_REQUEST['page']) { $page = 1; } else { $page = $_REQUEST['page']; }
//Script wird nur ausgeführt wenn der Benutzer auf "Eintragen" gedrückt hat if($_POST['submit']) { //Alles in eine Variable hintereinander schreiben $GBeintrag = $_POST['myGBname']."|"; $GBeintrag .= $_POST['myGBhp']."|"; $GBeintrag .= $_POST['myGBmail']."|"; $GBeintrag .= date("d.m.y")."|"; //datum muss natürlich auch mit rein
//Falls jemand in der nachricht ein | verwendet hat sollten wir das //ersetzen, da sonst beim auslesen fehler auftauchen $_POST['myGBtext'] = str_replace("|","<!strich!>",$_POST['myGBtext']); //Und dann noch die Zeilenumbrüche raus damit alles in einer Reihe steht //ist kein muss, sieht aber besser aus $_POST['myGBtext'] = str_replace("\r\n","<!umbruch!>",$_POST['myGBtext']);
$GBeintrag .= $_POST['myGBtext']."\r\n";
//Den eintrag in die Textdatei schreiben $openfile = fopen("myGB.txt","a"); flock($openfile,2); fwrite($openfile,$GBeintrag); flock($openfile,3); fclose($openfile); }
//Hier das Gästebuch öffnen und alle Einträge einlesen
$eintraege = @file("myGB.txt");
//Die Variable $ppp steht für Posts-Per-Page und gibt an, //wieviele Beiträge auf einer Seite angezeigt werden sollen $ppp = 5;
?>
<!-- Hier der Allgemein bekannte HTML-Teil welcher das Aussehen der Seite und damit das des GBs bestimmt Hier kann man nach belieben alles anpassen bis auf Bestehen bleiben sollten jedoch die integrierten PHP-Anweisungen welche sich zwichschen <? //und ?> befinden. Sebstverständlich können diese natürlich an eine andere Stelle verfrachtet werden. //-->
<!-- EINTRÄGE ANZEIGEN --> <? //PHP-code um die Einträge anzuzeigen
//solange einträge vorhanden sind wird eine schleife durchlaufen //von hinten nach vorne (also neueste zuerst) $start = (count($eintraege)-1) - $ppp*($page-1); $stop = (count($eintraege)-1) - $ppp*($page-1) - $ppp + 1; if($start>(count($eintraege)-1)) $start = count($eintraege)-1; if($stop<0) $stop = 0; for($a = $start; $a >= $stop; $a--) { //Die einzelnen Teile des Eintrags teilen $Eintrag = explode("|",$eintraege[$a]);
//Dann noch die Sonderstrings wie "<!umbruch!>" und "<!strich!>" wieder //in die ursprünglichen zeichen ersetzen $Eintrag[4] = str_replace("<!umbruch!>","\r\n",$Eintrag[4]); $Eintrag[4] = str_replace("<!strich!>","|",$Eintrag[4]);
Die "Navigation" sieht noch etwas plump aus, aber sollte funktionieren.
Wie Jan schon sagte: Wirklick saubere Arbeit. Was ein Forum so an einem Tag auf die Beine stellen kann wenn alle zusammenarbeiten ist echt beeindruckend.
Also ich muss sagen die Navigation sieht gar net plump aus. Paar Styles draufgelegt, und das passt.
Der "Fehler", der vorher drin war, bezog sich nur auf den Parameter $page, der bei NULL statt bei EINS begonnen hat. Das wurde dann bei den Ausgaben durch Addition von 1 ausgebügelt, sodass das keine Auswirkung auf die Funktionalität hatte. Aber so isses natürlich rund!
Bis auf das Design habe ich alles so gelassen, nur noch die |<, < "Buttons" etwas verändert, so dass sie immer angezeigt werden und zB auf Seite 1 eben nur kein Link sind.
Zumal es jetzt auf meiner Seite ist, bin ich natürlich auch interessiert an Überprüfung auf Fehler und ein kleines Admin-Tool, dass Einträge löschen/bearbeiten kann. Setze mich also demnächst noch mal ran.
War ja ne ganz schöne Arbeit die ihr euch da gemacht habt, Respekt
Ich habe das ganze mal (stylisch) überarbeitet und ein bisschen umgestellt. So ist der "Eintragen" Teil jetzt unter der Übersicht der Einträge und ich habe noch ne "Überschrift" Funktion eingefügt.. Der CSS-Teil (Formatierung der Links) ist auch ein wenig abgeändert :
Code:
<?
//Der PHP-Teil. Ohne PHP (oder einer anderen Internettauglichen //Programmiersprache (wie z.B. Perl)) wird man kein Gästebuch zum //Laufen bekommen.
// $page initialisieren, falls nicht gesetzt if (!$_REQUEST['page']) { $page = 1; } else { $page = $_REQUEST['page']; }
//Script wird nur ausgeführt wenn der Benutzer auf "Eintragen" gedrückt hat if($_POST['submit']) { //Alles in eine Variable hintereinander schreiben $GBeintrag = $_POST['myGBueberschrift']."|"; $GBeintrag .= $_POST['myGBname']."|"; $GBeintrag .= $_POST['myGBhp']."|"; $GBeintrag .= $_POST['myGBmail']."|"; $GBeintrag .= date("d.m.y")."|"; //datum muss natürlich auch mit rein
//Falls jemand in der nachricht ein | verwendet hat sollten wir das //ersetzen, da sonst beim auslesen fehler auftauchen $_POST['myGBtext'] = str_replace("|","<!strich!>",$_POST['myGBtext']); //Und dann noch die Zeilenumbrüche raus damit alles in einer Reihe steht //ist kein muss, sieht aber besser aus $_POST['myGBtext'] = str_replace("\r\n","<!umbruch!>",$_POST['myGBtext']);
$GBeintrag .= $_POST['myGBtext']."\r\n";
//Den eintrag in die Textdatei schreiben $openfile = fopen("myGB.txt","a"); flock($openfile,2); fwrite($openfile,$GBeintrag); flock($openfile,3); fclose($openfile); }
//Hier das Gästebuch öffnen und alle Einträge einlesen
$eintraege = @file("myGB.txt");
//Die Variable $ppp steht für Posts-Per-Page und gibt an, //wieviele Beiträge auf einer Seite angezeigt werden sollen $ppp = 5;
?>
<!-- Hier der Allgemein bekannte HTML-Teil welcher das Aussehen der Seite und damit das des GBs bestimmt Hier kann man nach belieben alles anpassen bis auf Bestehen bleiben sollten jedoch die integrierten PHP-Anweisungen welche sich zwichschen <? //und ?> befinden. Sebstverständlich können diese natürlich an eine andere Stelle verfrachtet werden. //-->
<center> <h1><span style="font-family: verdana">Titel des Gästebuchs</span></h1>
<!-- EINTRÄGE ANZEIGEN --> <? //PHP-code um die Einträge anzuzeigen
//solange einträge vorhanden sind wird eine schleife durchlaufen //von hinten nach vorne (also neueste zuerst) $start = (count($eintraege)-1) - $ppp*($page-1); $stop = (count($eintraege)-1) - $ppp*($page-1) - $ppp + 1; if($start>(count($eintraege)-1)) $start = count($eintraege)-1; if($stop<0) $stop = 0; for($a = $start; $a >= $stop; $a--) { //Die einzelnen Teile des Eintrags teilen $Eintrag = explode("|",$eintraege[$a]);
//Dann noch die Sonderstrings wie "<!umbruch!>" und "<!strich!>" wieder //in die ursprünglichen zeichen ersetzen $Eintrag[4] = str_replace("<!umbruch!>","\r\n",$Eintrag[4]); $Eintrag[4] = str_replace("<!strich!>","|",$Eintrag[4]);
Hm naja, über den Sinn des Formulars unterhalb der Einträge lässt sich streiten. Ich denke, wenn jetzt so 10-15 Einträge pro Seite angezeigt werden, dann wird der Besucher erstmal fleißig suchen, wo denn die Eingabemaske ist.
Aber das kann der Webmaster ja auch selber ohne großen Aufwand abändern - je nach Geschmack
Ich wollte jetzt gerade noch eine kleine Sache hinzufügen und zwar ein Kontaktformular.. Also kein "mailto:...." Link, sondern direkt ein Link auf so ein Formular (z.B.), sodass man den Autor direkt anschreiben kann.. Allerdings wurde ich ein wenig verwirrt, als ich das versucht habe...
Zunächst einmal, ließe sich das ja theoretisch ganz einfach lösen, die Variable für die angegebene email Adresse lautet ja wohl $Eintrag[3]..
Ich weiß jetzt aber nicht so genau, wie man das jetzt einbauen soll.. Also ich habe da mal was probiert (PROBIERT, hab null Peil von PHP!)
Also der erste Teil geht so nicht. Weil wenn du auf den Link klickst, wird ja das Formular nicht abgeschickt (es sei denn du löst das per JavaScript, was sich aber vermeiden lässt). Hänge doch einfach die Mailadresse als Parameter an die URL an, und zwar so:
Die Mailadresse muss codiert werden, weil sie per GET (also in der URL) übertragen wird. Den Wert des übergebenen Parameters dann wieder im Empgansscript mit urldecode() decodieren.
Der Rest sieht auf den ersten Blick funktionstüchtig aus, wobei ich's net probiert hab
Ok also um mal ein ganz plumpes Problem aufzuarbeiten wie löse ich das Problem mit dem Zeilenumbruch! Sorry bei euren codes kann ich nix mehr erkennen und hab da auch nich die lust das nachzuvollziehen wie ihr des gelöst habt, abgesehen davon bin ich da zu blöd für dat ganze php zeugs!
Also wie krieg ich ganz einfach und simpel die zeilenumbrüche in den griff???
PS: find ich ja mal geil dass des so ne gigantische Foren diskussion ergab *loool*
Mal ne andere Frage (hat hier überhaupt nichts mit dem Thread zu tun) wie alt seid ihr bzw. was arbeitet ihr studiert ihr??? Interessiert mich nur so weil man halt schon merkt, dass man wirklich überhaupt nicht mitreden kann!!!