Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen
Thema geschlossen (topic locked)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Sorry, hab mir Deins jetzt nciht genauer angeschaut, sondern mal "meins" von dem letzen Post fertiggemacht. Waren noch n paar Fehlerlies drin, jetzt geht's aber (meines Erachtens) ohne Probleme:
- Zeilenumbruch ist drin
- "|" wird als Trennzeichen genommen.

wieder das alte Spiel mit start,formular,eintragen:

start.php:

<?php
  
echo"<html><head><title>Start</title></head><body bgcolor='#A56003'>";
  echo
"<p align='center'><font color='#FFFFFF'><span style='font-size: 20pt'>Gästebuch Version 0.1a</span></font></p>";
  echo
"<table border=1 width='100%' height='30'>";
  echo
"<tr><th height='25' width='15%'>Name</th>";
  echo
"<th height='30' width='15%'>email</th><th height='30'>Text</th></tr>";
  
$handle fopen("gbdok.txt""r");
  
$s="";
  
$art 0;
  
//$art steht für: 0:name 1:email 2:text
  
do
  {
    
$zeichen fgetc$handle ); //holt sich das nächste Zeichen
    
if($zeichen)
    {
        if(
$zeichen == "|")
        {
            switch(
$art)
            {
                case 
0$namen nl2br($s); break;
                case 
1$email nl2br($s); break;
                default: 
$text nl2br($s); break;
            }
            
$s "";
            
$art $art 1;
            if( 
$art == 3)
            {
            
$art 0;
            echo
"<tr><td width='15%'>$namen </td><td width='15%'>$email </td><td>$text</td></tr>";
            }
        }
        else 
$s $s.$zeichen;
    }
  }
  while(
$zeichen);
  
fclose($handle);
  echo
"</table>";
  echo(
"<a href='formular.php'>Neuer Eintrag</a>");
  echo
"</body>";
  echo
"</html>";
?>
formular.php:
<?php
  
echo"<html><head><title>Formular</title></head><body bgcolor='#A56003'>";
  echo
"<form method='GET' action='eintragen.php'>";
  echo
"<p>&nbsp;</p>";
  echo
"<p>&nbsp;</p>";
  echo
"<p><font color='#FFFFFF' style='font-size: 16pt'>Name:</font></p>";
  echo
"<p><font color='#FFFFFF'>";
  echo
"<input type='input' name='namen' value=''></font></p>";
  echo
"<p><font color='#FFFFFF' style='font-size: 16pt'>email: </font></p>";
  echo
"<p><font color='#FFFFFF'>";
  echo
"<input type='input' name='mail' value=''>";
  echo
"&nbsp;</font></p>";
  echo
"<p align='left'>";
  echo
"<font color='#FFFFFF'><span style='font-size: 16pt'>Ihr Text:</span></font></p>";
  echo
"<p align='left'>";
  echo
"<textarea name='text' rows='12' cols='107'>";
  echo
"</textarea><br><br>";
  echo
"</p>";
  echo
"<tr><td>&nbsp;</td><td><input type='submit' value='Abschicken'></td></tr>";
  echo
"</body>";
  echo
"</html>";
?>
eintragen.php:
<?php
  $dh
=fopen("gbdok.txt","a");
  
fwrite($dh,$namen."|");
  
fwrite($dh,$mail."|");
  
fwrite($dh,$text."|");
  
fclose($dh);
  echo(
"<a href='start.php'> zur&uuml;eck zum Start</a>");
?>

Schau's am besten mal in Ruhe durch, kannst Dir meiner Meinung nach so am besten n paar kleine Kniffe "abschauen" und für Dich weiterverwenden.

Gruß Spawn

PS: Obwohl ich überzeugt bin, dass es auch bessere Lösungen gibt. Dies ist eben eine unter vielen  ;)

was hat es denn mit dem $hanle auf sich???
das ist ja keine variable sondern ein fester befehl oder!?!


Gruß Syrus

alles was mit $ beginnt sind Variablen.

Falls es dir nicht aufgefallen ist hat er in der start.php oben (unter den echo-zeilen) mit

"$handle = fopen (...." den inhalt der datei in diese Variable geschrieben um damit im rest des codes arbeiten zu können.

Gruß Jan

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

So ist es. $handle "repräsentiert" den Inhalt der Datei. Mir fiel noch etwas zu meinem Code ein: Der ist jetzt nicht gegen Fehler gesichert. Sollte also in der gbdok.txt etwas nicht "Muster-konformes" stehen, kommt etwas unsinniges beim Lesen heraus. Die Eintragen.php macht aber nur sinnvolle Einträge, müsste also schon von einem anderen Script manipuliert werden.

Gruß Spawn

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Wichtig für alle, die das obige GB benutzen woll(t)en:

Mir ist gerade als ich das GB mal selbst einbauen wollte ein blöder Kinderfehler aufgefallen.

Zumal die GB-Datei Zeichen-für-Zeichen ausgelesen wird und php eine meiner Meinung nach etwas blöde Variablen-Handhabung hat, wird eine Datei als "beendet" eingestuft, wenn in der Datei eine "0" vorkommt.

Das geschieht zB an der Stelle:
if($zeichen)
  {
  bla

Dummerweise wird die Null gleichzeitig als "false" gehandhabt und somit "denkt" das Script, es folgt kein Zeichen mehr.
Überlege gerade wie ich das umgehen kann. Wenn jemand Ideen hat wäre ich sehr dankbar.

Gruß Spawn

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Okay, ich hab ne Lösung, allerdings bin ich nicht sonderlich zufrieden damit. Ist nicht sehr "sauber" programmiert, aber zweckmäßig. Statt nur auf $zeichen (==true) abzufragen, frage ich jetzt ab:

if($zeichen || ord($zeichen)==48)Also ob $zeichen etwas enthält oder der ASCII-Wert des Zeichens gleich 48 (--> "0") ist.

Damit wäre die start.php jetzt:
<?php
  
echo"<html><head><title>Start</title></head><body bgcolor='#A56003'>";
  echo
"<p align='center'><font color='#FFFFFF'><span style='font-size: 20pt'>Gästebuch Version 0.1a</span></font></p>";
  echo
"<table border=1 width='100%' height='30'>";
  echo
"<tr><th height='25' width='15%'>Name</th>";
  echo
"<th height='30' width='15%'>email</th><th height='30'>Text</th></tr>";
  
$handle fopen("gbdok.txt""r");
  
$s="";
  
$art 0;
  
//$art steht für: 0:name 1:email 2:text
  
do
  {
    
$zeichen fgetc$handle ); //holt sich das nächste Zeichen
    
if($zeichen || ord($zeichen)==48)
    {
        if(
$zeichen == "|")
        {
            switch(
$art)
            {
                case 
0$namen nl2br($s); break;
                case 
1$email nl2br($s); break;
                default: 
$text nl2br($s); break;
            }
            
$s "";
            
$art $art 1;
            if( 
$art == 3)
            {
            
$art 0;
            echo
"<tr><td width='15%'>$namen </td><td width='15%'>$email </td><td>$text</td></tr>";
            }
        }
        else 
$s $s.$zeichen;
    }
  }
  while(
$zeichen || ord($zeichen)==48);
  
fclose($handle);
  echo
"</table>";
  echo(
"<a href='formular.php'>Neuer Eintrag</a>");
  echo
"</body>";
  echo
"</html>";
?>

Gruß Spawn

Hi..

Ich hab mal versucht alles in Txtdatei-basierendes Gästebuch in eine Datei (weil 3 waren mir zu viel (von wegen Start.hph,Eintrg.php etc)). Funktioniert soweit..vielleicht kann ja jemand noch einbauen das man die einträge auf mehrer seiten verteilt (z.b. 10 pro seite).. Sollte jemand das script aus irgendeinem grund für totalen schwachsin halten sacht bescheid, war ja nur ein versuch ;-)

einzige voraussetzung ist jetzt das eine leere textdatei im selben ordner liegt die mygb.txt heißt. Oder den code ändern :-)

<?

//Der PHP-Teil. Ohne PHP (oder einer anderen Internettauglichen
//Programmiersprache (wie z.B. Perl)) wird man kein Gästebuch zum
//Laufen bekommen.

//Script wird nur ausgeführt wenn der Benutzer auf "Eintragen" gedrückt hat
if(isset($_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");
   fwrite($openfile,$GBeintrag);
   fclose($openfile);
}

//Hier das Gästebuch öffnen und alle Einträge einlesen
//nur einlesen wenn auch einträge vorhanden sind
if(filesize("myGB.txt")>0)
{
   $openfile = fopen("myGB.txt","r");
   $GB = fread($openfile,filesize("myGB.txt"));
   fclose($openfile);
   
   //Dann die Einzelnen einträge trennen
   //und als Array speichern
   $eintraege = explode("\r\n",$GB);
}

?>

<!--
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.
//-->

<!-- KOPF DATEN //-->
<html>
<head>
 <title>Mein G&auml;stebuch</title>
 <style type="text/css">
  body {background-color: #FFFFFF;}
 
  .GBtable {border: 1px solid #000000;
            border-collapse: collapse;
            width: 400px;}
 
  .GBhead {background-color: #0000FF;
           color: #FFFFFF;
           font-weight: bold;}
 
  .GBinput {background-color: #00FFFF;
            border: 1px solid #000000;}
 
  .GBcontent {background-color: #FFFFFF;}
 </style>
</head>
<body>

<center>
 <h1>Titel des G&auml;stebuchs</h1>
 
<!-- EINGABE TEIL //-->
 <form action="" method="POST">
 <table class="GBtable">
  <tr class="GBhead">
   <td colspan="2">Hier ins G&auml;stebuch eintragen</td>
  </tr>
  <tr>
   <td>Dein Name</td>
   <td><input class="GBinput" name="myGBname" size="30"></td>
  </tr>
  <tr>
   <td>Deine Homepage</td>
   <td><input class="GBinput" name="myGBhp" size="30" value="http://"></td>
  </tr>
  <tr>
   <td>Deine Email</td>
   <td><input class="GBinput" name="myGBmail" size="30"></td>
  </tr>
  <tr>
   <td colspan="2" align="center">Deine Nachricht</td>
  </tr>
  <tr>
   <td colspan="2" align="center"><textarea class="GBinput" cols="45" rows="10" name="myGBtext"></textarea></td>
  </tr>
  <tr>
   <td colspan="2" align="center"><input type="submit" name="submit" value="Eintragen"></td>
  </tr>
  </form>
 </table>
 <br><br>
 
<!-- EINTRÄGE ANZEIGEN -->
<?
//PHP-code um die Einträge anzuzeigen

//schleife nur durchlaufen wenn einträge im
//GB sind
if(filesize("myGB.txt")>0)
{
   //solange einträge vorhanden sind wird eine schleife durchlaufen
   //von hinten nach vorne (also neueste zuerst)
   for($a=(count($eintraege)-2);$a>-1;$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"><?=$Eintrag[4];?></td>
  </tr>
 </table>
 <br>
<?
   }
}
?>
 
</center>

</body>
</html>

Gruß Jan

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Sehr schick. Was mir erstmal auffiel: Du hast vergessen, dass GBlink zu implementieren. Aufgrunddessen wurden Links im Blau des Hintergrundes dargestellt.

Ansonsten sehr cool. Ich teste und bastel gerade mal n bissel. Mal sehen was rauskommt... ???

Gruß Spawn

ich weiß..nobody is perfect :-)
bastel du mal..bin aufs ergebnis gespannt..vielleicht kann man das ja dann irgendwie hier als Hilfe für die vielen "ICH BRAUCH EIN EINFACHES GÄSTEBUCH---JETZT!!!"-schreier verwenden ;-)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Das wäre cool. Aber von wegen "Nobody-is-perfect": Bis auf diese Kleinigkeit ist das Ding echt gut.

danke. anerkennung freut immer ;-)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

kleine Anmerkung noch von mir:
Was ist, wenn zufällig 2 oder mehr Zugriffe gleichzeitig auf die Datei erfolgen? Solltest du unbedingt verhinden. Abfangen einfach mit:

Zitat
...
flock($openfile,2);
fwrite($openfile,$GBeintrag);
flock($openfile,3);
...

www.php-resource.de/manual.php?p=function.flock

Mario 8)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi |

Hab mir das auch mal kurz angeschaut: nicht schlecht! :)

Hier und da hab ich den Code nochmal ein klein wenig reduziert bzw. optimiert:

<?

//Der PHP-Teil. Ohne PHP (oder einer anderen Internettauglichen
//Programmiersprache (wie z.B. Perl)) wird man kein Gästebuch zum
//Laufen bekommen.

//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");
   fwrite($openfile,$GBeintrag);
   flock($openfile,2);
   fclose($openfile);
   flock($openfile,3);
}

//Hier das Gästebuch öffnen und alle Einträge einlesen

$eintraege = @file("myGB.txt");
?>

<!--
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.
//-->

<!-- KOPF DATEN //-->
<html>
<head>
<title>Mein G&auml;stebuch</title>
<style type="text/css">
  body {background-color: #FFFFFF;}
 
  .GBtable {border: 1px solid #000000;
            border-collapse: collapse;
            width: 400px;}
 
  .GBhead {background-color: #0000FF;
          color: #FFFFFF;
          font-weight: bold;}
 
  .GBinput {background-color: #00FFFF;
            border: 1px solid #000000;}
 
  .GBcontent {background-color: #FFFFFF;}
 
  a.GBlink:link, a.GBlink:visited, a.GBlink:hover, a.GBlink:active { text-decoration: none;
                                                     color: #FFFFFF; }
</style>
</head>
<body>

<center>
<h1>Titel des G&auml;stebuchs</h1>

<!-- EINGABE TEIL //-->
<form action="" method="POST">
<table class="GBtable">
  <tr class="GBhead">
  <td colspan="2">Hier ins G&auml;stebuch eintragen</td>
  </tr>
  <tr>
  <td>Dein Name</td>
  <td><input class="GBinput" name="myGBname" size="30"></td>
  </tr>
  <tr>
  <td>Deine Homepage</td>
  <td><input class="GBinput" name="myGBhp" size="30" value="http://"></td>
  </tr>
  <tr>
  <td>Deine Email</td>
  <td><input class="GBinput" name="myGBmail" size="30"></td>
  </tr>
  <tr>
  <td colspan="2" align="center">Deine Nachricht</td>
  </tr>
  <tr>
  <td colspan="2" align="center"><textarea class="GBinput" cols="45" rows="10" name="myGBtext"></textarea></td>
  </tr>
  <tr>
  <td colspan="2" align="center"><input type="submit" name="submit" value="Eintragen"></td>
  </tr>
  </form>
</table>
<br><br>

<!-- 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)
for($a = (count($eintraege) - 1); $a > -1; $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>
<?
}
?>

</center>

</body>
</html>

Kurz zur Erklärung:

Die Abfrage, ob die Dateigröße > 0 ist, kann man sich sparen. Wenn man (wie im jetzigen Skript) die Datei zeilenweise mit file(...) einliest, erhält man automatisch das Array mit den Einträgen, und das hat im Falle von NULL Einträgen auch die Länge NULL, weswegen die FOR-Schleife bei der Ausgabe dann auch gar nicht erst durchlaufen wird.
Die Textdatei muss zu Beginn auch nicht vorhanden sein - beim ersten Eintrag wird sie automatisch angelegt. Damit aber beim ersten Auslesen (keine Einträge vorhanden) keine Fehlermeldung kommt, wird ein "@" vor die Funktion file() geschrieben.
Bei der Ausgabe der Nachricht kam noch ein "nl2br" dazu, sonst werden ja keine Umbrüche dargestellt ;)

Würde aber sagen, dass hier ein schönes kompaktes und einfach zu implementierendes Gästebuch entstanden ist :D

greez 8)
JoSsiF

--------------
EDIT: schnell noch die Änderung von Mario mit aufgenommen :)
« Letzte Änderung: 17.05.05, 14:03:21 von JoSsiF »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

So, und jetzt auch mit einzelnen Seiten. Sieht noch nicht sonderlich gut aus, funktioniert aber erstmal.
Ich denk mal, ich bastel noch n bissel weiter.
Marios und JoSsiFs Änderungen sind auch mit drin.

Cooles Ding entstanden. Können wir fast n bissel wie stolz sein  ;)

<?

//Der PHP-Teil. Ohne PHP (oder einer anderen Internettauglichen
//Programmiersprache (wie z.B. Perl)) wird man kein Gästebuch zum
//Laufen bekommen.

//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");
  fwrite($openfile,$GBeintrag);
  flock($openfile,2);
  fclose($openfile);
  flock($openfile,3);
}

//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.
//-->

<!-- KOPF DATEN //-->
<html>
<head>
<title>Mein G&auml;stebuch</title>
<style type="text/css">
  body {background-color: #FFFFFF;}

  .GBtable {border: 1px solid #000000;
            border-collapse: collapse;
            width: 400px;}

  .GBhead {background-color: #0000FF;
          color: #FFFFFF;
          font-weight: bold;}

  .GBinput {background-color: #00FFFF;
            border: 1px solid #000000;}

  .GBcontent {background-color: #FFFFFF;}

  a.GBlink:link, a.GBlink:visited, a.GBlink:hover, a.GBlink:active { text-decoration: none;
                                                    color: #FFFFFF; }
</style>
</head>
<body>

<center>
<h1>Titel des G&auml;stebuchs</h1>

<!-- EINGABE TEIL //-->
<form action="" method="POST">
<table class="GBtable">
  <tr class="GBhead">
  <td colspan="2">Hier ins G&auml;stebuch eintragen</td>
  </tr>
  <tr>
  <td>Dein Name</td>
  <td><input class="GBinput" name="myGBname" size="30"></td>
  </tr>
  <tr>
  <td>Deine Homepage</td>
  <td><input class="GBinput" name="myGBhp" size="30" value="http://"></td>
  </tr>
  <tr>
  <td>Deine Email</td>
  <td><input class="GBinput" name="myGBmail" size="30"></td>
  </tr>
  <tr>
  <td colspan="2" align="center">Deine Nachricht</td>
  </tr>
  <tr>
  <td colspan="2" align="center"><textarea class="GBinput" cols="45" rows="10" name="myGBtext"></textarea></td>
  </tr>
  <tr>
  <td colspan="2" align="center"><input type="submit" name="submit" value="Eintragen"></td>
  </tr>
  </form>
</table>
<br><br>

<!-- 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)-2) - $ppp*$page;
$stop = (count($eintraege)-2) - $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)-1;
echo("<p align='center'>");
//ist man nicht auf Seite 0 kann man logischerweise eine Seite zurückgehen
if(($max > $ppp)&&($page>0)) echo("<a href='index.php?page=".($page-1)."'>vorherige Seite</a>");
echo(" Seite ".$page." ");
//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='index.php?page=".($page+1)."'>n&auml;chste Seite</a>");
echo("</p>");
?>
</center>

</body>
</html>

Hier noch n paar Anmerkungen:

In Zeile 39 wird durch $ppp (posts-per-page ;D ) gesagt, wieviele Posts pro Seite angezeigt werden.
Und die Datei muss index.php heissen, wegens den Zeilen 151 und 155 mit:
echo("<a href='index.php?page=".($page+1)."'>n&auml;chste Seite</a>");
Bin aber auch für Verbesserungen und Weiterentwicklungen offen.

Gruß Spawn

PS: flock hat gerade einen Fehler gebracht:
Warning: flock(): 3 is not a valid stream resource in C:\Programme\Apachefriends\xampp\htdocs\xampp\gb2\index2.php on line 30
What the....?!

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Funzt glaub ich noch nich so supi mit den Seiten, aber ich schau ma rein...

Die Datei muss übrigens nicht zwingend index.php heißen. Du kannst den Link auch mittels der Superglobal $PHP_SELF setzen (mach ich gleich noch mit rein).

greez 8)
JoSsiF


« HOMEPAGE VORLAGENAccount »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
POST
Die Abkürzung POST steht für Power On Self Test und ist ein automatischer Test beim Start des Computers. Dabei werden alle notwendigen Bauteile auf ihre Funktio...

PostScript
PostScript ist eine Programmiersprache zur Beschreibung von grafischen Objekten und Schriftzeichen zur Übertragung vom Computer zum Drucker oder Laserbelichter. Gene...

Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...