Blätterfunktion im Gästebuch?

svennson

Erfahrenes Mitglied
Hi,
irgendwie bekomme ich es nicht hin ein Gästebuch mit Blätterfuntion zu erstellem!
Es soll so sein, dass immer nur 15 Einträge auf einer Seite sind.
Hier mal mein letzter Versuch:
PHP:
<?php
$verbindung = mysql_connect("localhost", "Sven", "sven") or die("Es konnte keine Verbindung hergestellt werden");
mysql_select_db("homepage") or die("Die Datenbank konnte nicht angesprochen werden");

$abfrage = "SELECT name, page, text, datum, zeit 
FROM gb 
ORDER BY id DESC ";
$ergebnis = mysql_query($abfrage);
if( $ergebnis === FALSE )
echo mysql_error();

while($row = mysql_fetch_object($ergebnis))
{
echo "<table align=center>
                       <tr><td>Vom:$row->datum, $row->zeit</td></tr>
                       <tr><td>Von:$row->name</td></tr>
					   <tr><td>HP:$row->page</td></tr>
					   <tr><td>Eintrag:</td></tr>
					   <tr><td>$row->text</td></tr>
					   <tr><td>--------------------------------------</td><br></tr>
					   </table>";
}


$result = mysql_query("SELECT id FROM gb");
$menge = mysql_num_rows($result);

//Errechnen wieviele Seiten es geben wird
$wieviel_seiten = $menge / $eintraege_pro_seite;

//Ausgabe der Seitenlinks:
echo "<div align=\"center\">";
echo "<b>Seite:</b> ";


//Ausgabe der Links zu den Seiten
for($a=0; $a < $wieviel_seiten; $a++)
   {
   $b = $a + 1;

   //Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
   if($seite == $b)
      {
      echo "  <b>$b</b> ";
      }

   //Aus dieser Seite ist der User nicht, also einen Link ausgeben
   else
      {
      echo "  <a href=\"?seite=gb$b\">$b</a> ";
      }
echo "</div>";
}
mysql_close($verbindung);
?>

Würde mich über Lösungen und Lösungvorschläge sehr freuen :-)

MFG,
sven

p.s: Nich über Design meckern, über sowas kümmere ich mich noch nicht, solange es eh nicht funktioniert ;)
 
Grüß dich,
ich habe es vor ein paar Wochen so gelöst, vielleicht hilft es dir weiter.

PHP:
 $proseite = 9;				
  $sql = "SELECT * FROM images WHERE Cat = '3D'"; 
  $result = mysql_query($sql, $link); 
  $row = mysql_fetch_array($result);	
  $number = mysql_num_rows($result); 
  $seiten = ceil($number / $proseite); 
  
  $start = $_GET['page'] * $proseite - $proseite; 
  $sql = "SELECT * FROM images LIMIT $start, $proseite"; 
  $result = mysql_query($sql, $link); 
  
  $ende = $start + $proseite; 
  
  if ($ende > $number) {
  	$ende = $number;
  } 
  			
  
  echo "<table class=\"navi_3d\" width=\"500\" align=\"center\" cellpadding=\"2\" cellspacing=\"0\" border=\"0\">
  			<tr>
  				<td>Seiten:&nbsp;";
 					if ($_GET['page'] > 1) { 
 		 			$i = $_GET['page'] - 1; 
 		 			echo "<a href=\"index.php?action=3d&page=".$i."\">&nbsp;&laquo;&nbsp;</a>"; 
  					} 
 		 		for ($i = 1; $i <= $seiten; $i++) { 
 		 			if ($i == $_GET['page']) { 
 		 		 	echo "&nbsp;<b>" . $i . "</b>&nbsp;"; 
 						} 
 						else { 
 		 		 	echo "<a href=\"index.php?action=3d&page=".$i."\">&nbsp;$i&nbsp;</a>"; 
 						} 
  					} 
 		 		if ($_GET['page'] < $seiten) { 
  		    		    $i=$_GET['page'] + 1; 
 		 			echo "<a href=\"index.php?action=3d&page=".$i."\">&nbsp;&raquo;&nbsp;</a>"; 
  					} 
  			echo "</td>
 		 	 <td align=\"right\">" . $number . "&nbsp;Bilder&nbsp;auf&nbsp;$seiten&nbsp;Seite(n)</td>
  			</tr>
  	</table>";
 
Hallöle,
danke schonmal, aber 100 prozentig versteh ich da nicht alles :confused: .
Wäre net, wenn du da nen paar Kommentare rein hauen könntest.
MFG,
Sven
 
Was genau verstehst du denn nicht? Die Abfragen im oberen Bereich dürften klar sein oder?

Was ich vergessen habe zu erwähnen ist: Du musst die "page" auf der ersten Seite übergeben.
Quasi so: index.php?action=gbook&page=1
 
Genau! Oben liest du deine Gästebucheinträge aus berechnest die start- und end-Werte und übergibst diese als Varibalen an das LIMIT in der zweiten Abfrage.

Unten musst du dann drei Fälle durchlaufen. Am besten du machst das ganze mal an einem Beispiel mit konkreten Zahlen und rechnest das im Kopf durch, dann wird es klarer wie das funktioniert.
Hat bei mir auch geholfen, denn ich bin auch erst seit 2 Monaten im PHP-Geschäft! ;)
 
Habs mit der Blätterfunktion nach deinem Vorbild jetzt fertig, nur dass ich noch ne Ausgabe der Daten drinne habe.
Jetzt taucht nur wenn ich das in meine Seite einbinden will mal wieder der Fehler auf, dass der über mysql_fetch_object( ) meckert und ich weiss nicht woran das liegen könnte.
Wüsstes du vlt. eine gute Lösung für die Ausgabe?
 
Bitteschön:
PHP:
<?php
$verbindung = mysql_connect("localhost", "Sven", "sven") or die("Es konnte keine Verbindung hergestellt werden");
mysql_select_db("homepage") or die("Die Datenbank konnte nicht angesprochen werden");

$proseite = 10;

$sql="SELECT * From gb";
$result= mysql_query($sql);
$row= mysql_fetch_array($result);
$number= mysql_num_rows($result);
$seiten = ceil($number / $proseite);

$start= $_GET['seite'] *$proseite - $proseite;
$sql = "SELECT * FROM gb ORDER BY id DESC LIMIT $start, $proseite";
$result = mysql_query($sql);
while($row = mysql_fetch_object($result))
{
echo "<table align=center>
                       <tr><td>Vom:$row->id</td></tr>
                       <tr><td>Vom:$row->datum, $row->zeit</td></tr>
                       <tr><td>Von:$row->name</td></tr>
					   <tr><td>HP:<a href=\"http:".$row->page."\">$row->page</a></td></tr>
					   <tr><td>Eintrag:</td></tr>
					   <tr><td>$row->text</td></tr>
					   <tr><td>--------------------------------------</td><br></tr>
					   </table>";
}
Danach kommt dann die Blätterfunktion...

Ich denke, dass es auch sein kann, weil man Gästebuchlink die Seite sven.php?seite=gb öffnet. Nun die Frage, kann man auch auf eine Seite verweisen nach dem motto:
sven.php?seite=gb?seite=1 oder so?
 
OK! Warum benutzt du nicht mysql_fetch_array oder bei nem assoziatives Array mysql_fetch_assoc.
Probier das mal an der Stelle von mysql_fetch_object aus.

Klar musst du mit dem Link die Startpage übergeben. Du musst ihm sagen mit welcher Seite er beginnen soll.

An deinem Beispiel:
sven.php?page=1
sven.php?action=gbook&page=1 (wenn du nen switch case eingebaut hast)
 
Zurück