Gästebuch -> mehrere Seiten

matthiasschnueriger

Erfahrenes Mitglied
Hallo allerseits!

Ich weiss, dass dieses Thema schon mehrmals aufgegriffen wurde, aber ich habe ein
spezifisches Problem. Übrigens: Der Code ist nicht von mir und zwar habe ich mir das Tutorial vom Dunsti hier zu Hilfe genommen.

Also, zu meinem Problem: Ich habe jetzt 13 Testeinträge und ich habe die Beiträge pro Seite auf 5 begrenzt. D.h. jetzt sollte es 3 Seiten geben mit (5,5 und 3 Einträgen).
Die Links werden jetzt auch erzeugt, aber die 13 Einträge werden auf allen 3 Links angezeigt, d.h. die Beiträge werden nicht getrennt.

Ich bin noch ein ziemlicher PHP-Anfänger (deshalb auch das Tuturial vom Dunsti), und ich vermute, dass ich einfach irgendwo ein Überlegungsfehler gemacht habe bzw. etwas zu viel gelöscht habe.

Ich bin dankbar um jede Hilfe.

Gruss, Matthias


PHP:
$db = mysql_connect ($host,$id,$pw);
mysql_select_db ($database);
$sql = "SELECT * FROM gbook";  
$result = mysql_query($sql,$db);
$number = mysql_num_rows($result);
$proseite = "5";
$seiten = floor($number/$proseite);
$sql= "SELECT * FROM table LIMIT $start,$proseite";
$result = mysql_query($sql,$db);
 
echo "<table width=520px align=center>Zur Zeit sind $number Einträge im Gästebuch</table> <BR> \n";

if ($page>0) {
	$i=$page-1;
	echo "<table width=520px align=center><A HREF=\"guestbook_code3.php?page=$i\">previous</A> | ";
}
for($i=0; $i<=$seiten; $i++) {
	if ($i==$page) {
		echo $i."&nbsp;";
	}
	else {
		echo "<A HREF=\"guestbook_code3.php?page=$i\">$i</A>&nbsp;";
	}
}
if ($page<$seiten) {
	$i=$page+1;
	echo " | <A HREF=\"guestbook_code3.php?page=$i\">next</A></table>";
}

PS: Momentan ist das Testbeispiel hier auffindbar: Gästebuch-Test
 
Ok, das habe ich jetzt geändert, funktioniert aber immer noch nicht. Und zwar werden
die Einträge einfach nicht getrennt (momentan auf 5 Einträge pro Seite gesetzt).


Das ist mein aktueller Code:
(Dateiname: guestbook_code3.php)
PHP:
<?php
$proseite=5;

$db = mysql_connect ($host,$id,$pw);
mysql_select_db ($database);
$sql = "SELECT * FROM gbook";
$result = mysql_query($sql,$db);
$number = mysql_num_rows($result);
$seiten=floor($number/$proseite);
$start=$page * $proseite;
$sql="SELECT * FROM gbook LIMIT $start,$proseite";
$result = mysql_query($sql,$db);
$ende = $start + $proseite;

if ($ende>$number) { $ende = $number; }

echo "<table width=\"520px\" align=\"center\">Zur Zeit sind $number Einträge im Gästebuch</table> <BR> \n";
echo "<table width=\"520px\" align=\"center\">Seite $page - Einträge von $start bis $ende</table> <BR> \n";

if ($page>0) {
	$i=$page-1;
	echo "<div align=\"center\"><tr><td><A HREF=\"guestbook_code3.php?page=$i\"><<</A> ";
}
for($i=0; $i<=$seiten; $i++) {
	if ($i==$page) {
		echo $i."&nbsp;";
	}
	else {
		echo "<A HREF=\"guestbook_code3.php?page=$i\">$i</A>&nbsp;";
	}
}
if ($page<$seiten) {
	$i=$page+1;
	echo " <A HREF=\"guestbook_code3.php?page=$i\">>></A></div>";
}
?>

Ich weiss wirklich nicht, wo das Problem liegt....
 
Das Einzige, was mir aufgefallen ist, ist:

if ($page>0) { würde ich zu if (isset($page) && $page>=0) {
und
$seiten=floor($number/$proseite); zu $seiten=ceil($number/$proseite);
ändern.
floor = abrunden: 13 / 5 = 2,6 also 2
ceil = aufrunden 13 / 5 = 2,6 also 3

ausserdem ist ein "nicht die feine Art" eine Variable in Anführungszeichen auszugeben. z.B.
Du schreibst:
PHP:
 $sql="SELECT * FROM gbook LIMIT $start,$proseite";
ich würde schreiben:
PHP:
 $sql="SELECT * FROM gbook LIMIT ".$start.",".$proseite;
 
Zuletzt bearbeitet:
Ich muss aber aufrunden (ceil). Nehmen wir an, ich habe 18 Einträge und verteile diese auf 5er-Seiten (5 Einträge pro Seite), dann werden die Einträge 16-18 noch angezeigt, wenn ich jedoch abrunde, werden diese gelöscht. Oder liege ich falsch?
 
hm, ich hatte jetzt wohl auch einen kleinen Denkfehler drin, aber hier noch mal überarbeitet...
PHP:
<?php 
$proseite=5; 
if(!isset($page)){$page=1;}

$db = mysql_connect ($host,$id,$pw); 
mysql_select_db ($database); 
$sql = "SELECT * FROM gbook"; 
$result = mysql_query($sql,$db); 
$number = mysql_num_rows($result); 
$seiten = ceil($number/$proseite); 
$start=$page * $proseite - $proseite; 
$sql="SELECT * FROM gbook LIMIT ".$start.",".$proseite; 
$result = mysql_query($sql,$db); 
$ende = $start + $proseite; 

if ($ende>$number) { $ende = $number; } 

echo "<div width=\"520px\" align=\"center\">Zur Zeit sind ".$number." Einträge im Gästebuch</div> <BR> \n"; 
echo "<div width=\"520px\" align=\"center\">Seite ".$page." - Einträge von ".$start." bis ".$ende."</div> <BR> \n <div align=\"center\">"; 

if ($page>1) { 
    $i=$page-1; 
    echo "<A HREF=\"".$_SERVER['PHP_SELF']."?page=".$i."\"><<</A> "; 
} 
for($i=1; $i<=$seiten; $i++) { 
    if ($i==$page) { 
        echo $i."&nbsp;"; 
    } 
    else { 
        echo "<A HREF=\"".$_SERVER['PHP_SELF']."?page=".$i."\">".$i."</A>&nbsp;"; 
    } 
}
if ($page<$seiten) { 
    $i=$page+1; 
    echo " <A HREF=\"".$_SERVER['PHP_SELF']."?page=".$i."\">>></A>"; 
}
echo "</div>";
?>
 
Zurück