• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Blätterfunktion für Gästebuch

mote

Mitglied
Hallo,

Ich bin gerade beim erstellen eines ganz binalen Gästebuches. Hier die verschiedenen Datein...

PHP:
<?php
  echo("<br>"); 
$daten=$_POST[eintrag]."
<br><span class='absender'>Beitrag von <a 
href=mailto:".$_POST[email].">".$_POST[name]."</a></span><hr><br>"; 
 $datenbank = "daten.dat";  
$datei = fopen($datenbank,"a");  
fwrite($datei, $daten); 
 ?>  Eintrag erfolgreich. 
 <a href="gbuch.php">Zurück zum Gästebuch</a>
PHP:
<form method="post" action="gb.php">  Ihr Name:
<input type="text" name="name"><br>  eMail: 
<input type="text" name="email"><br>  Ihr Eintrag: 
<textarea name="eintrag"></textarea><br>  
<input type="submit" name="Button" value="Absenden">  </form>
PHP:
<?php  $datenbank = "daten.dat";
 $datei = fopen($datenbank,"r");
  fpassthru($datei); 
 ?>

Jetzt meine Frage: Kann man eine Art Blätterfunktion erstellen, oder brauche ich dazu eine Datenbank :dontknow: müsste doch eigendlich funktionieren.

Wenn es funktioniert, hat jemand eine Idee bzw einen Link für mich, wie das funktioniert?

mfg
 
Werbung:
Hi,

vorgehensweise:

1. Alle Einträge des Gästebuch von der Datei in ein Array speichern. Das Array erhöht den Index automatisch.

2. Wenn du z.B. mit $_GET["page"] arbeitest und dafür den Wert 1 hast, dann gibt das Gästebuch die Einträge 0-9 aus. Hast du den Wert 2, dann zeigt das Gästebuch die Werte 10-19 an usw...

3. Zählen wieviele Einträge in deinem Array sind. Diesen Wert durch die Anzahl der Beiträge die auf einer Seite zu sehen sein sollen teilen...
bsp.: 73 Einträge gesamt / 10 Einträge pro Seite = 7,3 => 8
Du benötigst also 8 Seiten, immer aufrunden.
 
1. Alle Einträge des Gästebuch von der Datei in ein Array speichern. Das Array erhöht den Index automatisch.

>>Käse, das ist nur bei datenbankeinträgen sinnvoll bzw um die ergebnisse vom auslesen zu speichern!

Mit einer Datenbank ist es zwar relativ einfach zu lösen, geht aber mit txt files ebenso.
Am besten du die lässt dir aus deiner datei mit den einträgen immer eine gewisse anzahl geben!
wenn du z.b, 10 einträge haben möchtest liest du dir die ersten 10 aus(for schleife) dann wenn dua uf weiter klickst machst du es mit der $_GET methode wie beschrieben.
z.b. sieht dann der link so aus:
......gb.php?eintraege=1

wird diese seite aufgerufen lässt du dir die nächsten 10 einträge auslesen
$_GET['eintraege'] bis $_GET['eintraege'] + 10 (je nachem wieviel du auslesen möchtest)

Und diese ausgelsesenen ( im beispiel 10!!) speicherst du DANN erst in einem array!

Ich denke das sind die hinweise die du brauchst!;)

Mfg
 
Werbung:
lass dich nicht verunsichern, dass geht mit datei und datenbank gleich gut.
ich habe gerade zeit, deshalb mal ein kleines howto zu dateien...

mir fällt in deinen code auf, dass du keine zeilen-umbrüche in der daten.dat setzt. dein original sieht so aus:
PHP:
$daten=$_POST[eintrag]."<br><span class='absender'>Beitrag von <a href=mailto:".$_POST[email].">".$_POST[name]."</a></span><hr><br>";
wenn du deine einträge so in deine datei schreibst, wird es schwer sie wieder zu trennen, da sie niemals in eine neue zeile umgebrochen werden. du solltest also ein \n an jeden datensatz anhängen, damit du deine datensätze eindeutig von einander unterscheiden kannst. das geht ganz leicht indem man jeden datensatz in eine neue zeile legt. also den code ersetzen und zwar so:
PHP:
$daten=$_POST[eintrag]."<br><span class='absender'>Beitrag von <a href=mailto:".$_POST[email].">".$_POST[name]."</a></span><hr><br>\n";
ganz hinten hängt nun ein umbruch an der datei und deine einträge liegen nun zeilenweise in deiner datei, jeder eintrag in einer eigenen zeile.
mit dem befehl
PHP:
$werte = file("daten.dat");
wird deine datei nun zeilenweise in das array $werte gelesen. der filebefehl erspart dir das fopen und du kannst ihn direkt anwenden ohne die datei öffnen zu müssen. dein array sieht nun so aus:

PHP:
$werte[0] = zeile 1
$werte[1] = zeile 2
$werte[2] = zeile 3
//  u.s.w
achte darauf, dass nun an jedem eintrag immernoch ein zeilenumbruch ( das \n") hängt.
du musst noch ein paar fehlermöglichkeietn abfangen, z.b. wenn keine seite im link angegeben wird soll bei seite 1 gestartet werden oder die seite 12 wird angegeben, aber es gibt keine seite 12 weil nur 6 einträge vorhanden sind, dann soll immer die letzte seite ausgegeben werden u.s.w.

dein kompletter code sieht nun ca so aus:
PHP:
<?php

// daten in array $werte lesen
$werte = file("daten.dat");

// anzahl an einträgen je seite
$eintraege_je_seite = 5; 

// maximale anzahl an seiten die angezeigt werden können
$maxpages = ceil(count($werte) / $eintraege_je_seite); 

// start bei seite 1 wenn keine seite im link angegeben
if(!isset($_GET['page'])) $page = 1; 

// wenn seite im link angegeben wert darauf setzen
else $page = $_GET['page']; 

// wenn seite grösser als anzahl einträge, immer letzte seite anzeigen
if($page > $maxpages) $page = $maxpages;

// start und ende fuer die schleife errechnen
$start = ($page * $eintraege_je_seite) - $eintraege_je_seite;
// page = 1
// eintrag je seite = 5
// also (1*5) - 5, wir fangen bei der zeile 0 an auszugeben
// wir zählen von 0 bis 4 die zeilen und brechen dann ab
$ende = $start + $eintraege_je_seite;

// ausgabe starten
for($i = $start ; $i < $ende; $i++)
{
  // trim entfernt das \n aus der zeile
  echo trim($werte[$i])."<br>";
}

?>
du musst dir nun noch eine blätter funktion zusammenbauen oder du verwendest eine bestehende
mn-portal, PHP-Scripte die es in sich haben.. (PHP) ist so eine funktion, die du anpassen kannst
 
Werbung:
Zurück
Oben