Christian: Gästebuch mit mehreren Seiten

Hallo,

Wie muss ich folgendes Skript modifizieren um nur die ersten 10 Einträge meines Gästebuchs auf der ersten Seite darzustellen und die weiteren auf nachfolgenden Seiten, welche mittels automatisch generierter Links (vorherige Seite und nächste Seite) anzusteuern sind?

<?php
$datei=file("test.txt");
for($a=10;$a<count($datei);$a++)
{
$daten=explode("*|*",$datei[$a]);
$name=$daten[0];
$email=$daten[1];
$text=$daten[2];
echo "$name <br>\n";
echo "$email <br>\n<br>\n";
echo "$text <br>\n<br>\n<hr><br>\n<br>\n";
}
?>

Gruß,
Christian

  1. Hallo,

    <?php
    $datei=file("test.txt");
    // Falls nicht mehr genug Eintraege da sind
    if($b+10 > count($datei))
      $c = count($datei);
    else
      $c = $b+10;
    for($a=$b;$a<$c;$a++)
    {
    ...
    }
    ?>

    Jetzt brauchst Du nur noch $b als Anfangswert jedes Mal mit übergeben, d.h. auf Seite 1 $b=1, auf Seite 2 $b=11,...

    Grüße aus Würzburg
    Julian

  2. Hallo!

    Hast Du das heute nicht schon einmal gefragt?

    Wie muss ich folgendes Skript modifizieren um nur die ersten 10 Einträge meines Gästebuchs auf der ersten Seite darzustellen und die weiteren auf nachfolgenden Seiten, welche mittels automatisch generierter Links (vorherige Seite und nächste Seite) anzusteuern sind?

    // Beispiel: gast.phtml

    $anzahl = 10;

    $datei = "gaestebuch.txt";
    // gibt es die Datei gaestebuch.txt? Fehlermeldung vorbeugen
    if(file_exists($datei))
      {
         $daten = file($datei);
      }

    // beim Start von gast.phtml, oder wenn $seite nicht übergeben wird
    if(!isset($seite))
      {
         $seite = 1;
      }

    // ist $daten ein Array? Fehlermeldung vorbeugen
    if(is_array($daten))
      {
          $ausgabe_daten = array_slice($daten, (($seite - 1) * $anzahl), $anzahl);

    for($a=0;$a<count($ausgabe_daten);$a++)
             {
                 $wert=explode("*|*",$ausgabe_daten[$a]);
                 $name=$wert[0];
                 $email=$wert[1];
                 $text=$wert[2];
                 echo "$name <br>\n";
                 echo "$email <br>\n<br>\n";
                 echo "$text <br>\n<br>\n<hr><br>\n<br>\n";
     }

    $seite_zurueck = $seite - 1;
           $seite_vorwaerts = $seite + 1;
           $daten_gesamt = count($daten);
           $summe_seite_anzahl = ($seite*$anzahl)

    if($seite>1)
        {
          echo "<a href="gast.phtml?seite=" . $seite_zurueck . "">zurück</a>";
        }

    if($daten_gesamt > $summe_seite_anzahl)
        {
          echo "<a href="gast.phtml?seite=" . $seite_vorwaerts . "">vorwärts</a>";
        }
       }

    Das ist ein funktionstüchtige Grundgerüst. Versuche zu versehen was passiert und baue es nicht einfach so ein. Lasse Dir diese Variablen $seite_zurueck, $seite_vorwaerts, $daten_gesamt, $summe_seite_anzahl mal mit echo() ausgeben, dann verstehst Du den Ablauf. Schaue nach, was array_slice() tut.

    array_slice(): http://www.php.net/manual/de/function.array-slice.php
    file_exists(): http://www.php.net/manual/de/function.file_exists.php
    is_array(): http://www.php.net/manual/de/function.is_array.php

    MfG, André Laugks