Kommentarscript mit txt.datei -> benötige Blätterfunktion dazu

son gohan

Erfahrenes Mitglied
Hi, ich weis nicht wie ich zu folgendem Kommentarescript eine Blätterfunktion bauen kann, sodass ab 10 Einträgen eine zweite - usw. vielte Seite erzeugt wird und verankert wird.

Die Anzahl der Einträge kann ich mit der Variable $max = count ($names) herausfinden. Das sollte schonmal ein Ansatz sein, hier das ganze Script:
PHP:
<?
// 1. Variablen anpassen
      $showcomments = 1;			//Anzahl der anzuzeigenden Kommentare
      $file = "meinung.txt";		//Name der Meinungsdatei
// 2. Dateien im ASCII Modus auf den Server kopieren.
// 3. CHMOD der "box.php"-Datei auf 777 setzen!!

  echo "	<form action='http://localhost/xampp/includ/kommentare.php?show=$show' method='post' name='meinung'>
 	<dl id=\"kom_1\">
  	<dd><span class=\"kom_3\">Name:</span> <input class=\"kom_2\" type='text' name='input_name' /></dd>
         <dd class=\"cle\"><span class=\"kom_3\">Email:</span> <input class=\"kom_2\" type='text' name='input_email' /></dd>
         <dd class=\"cle\"><span class=\"kom_3\">Homepage:</span> <input class=\"kom_2\" type='text' name='input_url' /></dd>
	<dd class=\"cle\"><span class=\"kom_3\">Kommentar: </span>
	<textarea class=\"kom_2\" rows=\"5\" name='input_comment'></textarea></dd>
  	<dd class=\"cle\"><input id=\"kom_4\" type='submit' value='Abschicken!' /></dd>";

  if($show == "all") echo "<dd id=\"kom_5\"><a href='kommentare.php' class=\"info\">&raquo; Neuste Kommentar zeigen</a></dd>";
  else echo "<dd id=\"kom_5\"><a href='kommentare.php?show=all' class=\"info\">&raquo; Alle Kommentare zeigen</a></dd>";


  if($input_name != "Name" && $input_name != "" && $input_comment != "Kommentar" && $input_comment != ""){
    $tmp = fopen($file, "a");
    fputs($tmp,"$input_name|$input_url|$input_email|$input_comment\n");
    fclose($tmp);
  }

  $names = array();
  $comments = array();
  $urls = array();
  $emails = array();
  $tmp = fopen($file,"r");
  while(!feof($tmp)){
    $row = fgets($tmp,999999);
    list($name,$url,$email,$comment) = split("\|",$row);
    if($name != ""){
      array_push($names,$name);
      array_push($comments,$comment);
      array_push($urls,$url);
      array_push($emails,$email);
    }
  }
  fclose($tmp);
  $names = array_reverse($names);
  $comments = array_reverse($comments);
  $urls = array_reverse($urls);
  $emails = array_reverse($emails);

  if($show == "all")
    $max = count($names);
  else
    $max = $showcomments;

  for($i=0; $i<$max; $i++)
    echo "<dd class=\"kom_6\">
    <a href=\"$urls[$i]\"><img src=\"../bruce22.jpg\" class=\"kom_bild\" title=\"Homepage\" /></a> <a href=\"mailto:$emails[$i]\"><img src=\"../bruce22.jpg\" class=\"kom_bild\" title=\"Email\" /></a> <span class=\"stro\">$names[$i]:</span> $comments[$i] </dd>\n";

  echo "</dl><br class=\"cle\" />
</form>";
?>
 
Zuletzt bearbeitet:
Ne Blätter Funktion hab ich mal geschrieben für mich selber , im Prinzip läuft die ganz gut , blos das er noch nach dem 10. Eintrag schon Seite 2 macht obwohl auf Seite 2 noch nix wäre. Also kein 11. Eintrag sonst klappt es aber ;)

Links hab ich nen bissel gekürzt waren schon zu monströs als das sie hier noch reingepasst hätten.
Das ganze beläuft sich auf eine Textdatei , wo ich die Einträge mittels eines Zeichens von einander trenne und dann in ein Array schiebe.

PHP:
     ...
     	$datei = "gb.txt";
     	$eintraege = "";
     	$alle_eintraege = "";
     
     	$file = fopen($datei,"r");
     	while(!feof($file)){
     	   $eintraege .= fgets($file,255);
     	   }
     
     	   $eintraege = explode("|##|", $eintraege);
     
     		 //Section Blättern
      
 		 // Laufzeitvariable für die Blätterfunktion die die Anzahl der Ausgaben mitzählt
     		 $x = 1; 
     		 $letzte_seite = (count($eintraege)-1)/10;
     		 //-1 weil der letzte Eintrag leer gewesen wäre
     
       if(isset($_GET["seite"]) && isset($_GET["id"])) {
    for($i = $_GET["id"]+1 ; $i < count($eintraege); $i++ )
       {
     //Schleife so lange durchlaufen wie $i nicht alle Einträge erfasst hat
   if($x%10 != 0) {
     //Solange Eintrag%10 einen Rest ergibt
       //Eintrag ausgeben.
     //Und überprüfen ob es die letzten Einträge sind.
       //Einträge ausgeben
    if($i == (count($eintraege)-1)){
     //Wenn der lezte Eintrag erreicht ist
     				 
  //Link setzen mit nur zurück id um 10 verringern wieder
 //Seite um 1 verringern
   	  echo "<a href='url/index.php?seite=".($_GET["seite"]-1)."&id=".
  ($_GET["id"]-10)."'>«Seite ".
  ($_GET["seite"]-1)."</a><br>\n";
     		 }
   	  //$x Anzahl der Ausgaben um 1 erhöhen
     	  $x++;
        }  else  {
   //Wenn 10 Einträge ausgegeben wurden
  //Link Seite vor blättern und den aktuellen Eintrag noch ausgeben
   //Einträge ausgeben
      echo "<a href='http://url/index.php?seite=".
   ($_GET["seite"]+1)."&id=".$i.
  "'>Seite".($_GET["seite"]+1)."»</a><br>\n";
     
   if($_GET["seite"] != 1){
     	 // Wenn es Seite 1 ist
     	 // Gib nur Seite vor aus
   	 // Ansonsten würde er noch eine Seite zurück blättern wollen
 	   echo "<a href='http://url/index.php?seite="
  .($_GET["seite"]-1)."&id=".($_GET["id"]-10)
  ."'>«Seite ".($_GET["seite"]-1)."</a><br>\n";
 		}
 	   break;
 	  // for Schleife abbrechen
 	   }
    }
 } else {
          // Normaler Aufruf wenn noch keine Seite oder ID
         // über die URL weitergegebn wurde
      for($i = 0 ; $i < count($eintraege)-1 ; $i++)
     	  {
     	 if(($x%10) != 0){
     		  //Einträge ausgeben hier
     		  $x++;
     	  } else {
     		 //Einträge ausgeben hier
   		echo "<a href='http://url. "/index.php?seite=2&id=".$i.
   		 "'>Seite 2»</a><br>\n";
     		break;
     	   }
     	  }
 } // Blättern Ende
     ...

Schau es Dir mal an eventuell hilft es Dir ein wenig weiter.

Die Einträge in der Textdatei musst dir so vorstellen

Eintrag|##|Eintrag2|##|...EintragN|##|<- das würde der sonst noch mitnehmen ->

Edit : Ach ich gebs auf den Eintrag zu formatieren , ich glaub das will mich nur ärgern :( Am besten mal rauskopieren dann und schaun wie es im Editor nu aussieht ;)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück