check ich nich

mrfishly

Mitglied
Hab mir das tutorial mal angeguck von wegen Gästebuch über mehrere Seiten verteilen. Hab aber jetzt anstatt ein Gästebuch eine Screenshot datenbank. Soweit so gut, auch alles. Aber, wenn ich jetzt das script aufrufe, dann zeigt er mir immer einen Wert mehr an als in meiner daten bank gespeichert sind. Ich hab z.B einen Wert drine und er zeigt mir 2 "Blätter" an. Hier mal das Script.

PHP:
<html>
<br><br>
<p align="center"><b>[e.h | Screenshots]</b></p>
<br><br>
<?php

include("dbconnect.php");

$proseite = 1;

$abfrage = "SELECT * FROM screens";
$ergebnis = mysql_query($abfrage);
$number = mysql_num_rows($ergebnis);
$seiten=ceil($number/$proseite);
$start=$_GET['page'] * $proseite;
$ende = $start + $proseite;
if ($ende>$number) 
{ 
	$ende = $number;
}

$abfrage = "SELECT * FROM screens ORDER BY id DESC LIMIT $start, $proseite";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_object($ergebnis))
        {

?>

<p align="center"><img border="0" src="http://sid.si.funpic.de/ehlineage/screenshots/<?php echo $row->id;?>"></p>
 
<?php

if ($_GET['page']>0) { 
    $i=$_GET['page']-1; 
    echo "<a href=\"include.php?path=scripts/screens/screen.php&page=".$i."\">&lt;previous</a>"; 
} 
for($i=0; $i<=$seiten; $i++) { 
    if ($i==$_GET['page']) { 
        echo $i."&nbsp;"; 
    } 
    else { 
        echo "<a href=\"include.php?path=scripts/screens/screen.php&page=".$i."\">$i</a>&nbsp;"; 
    } 
} 
if ($_GET['page']<$seiten) { 
    $i=$_GET['page']+1; 
    echo "<a href=\"include.php?path=scripts/screens/screen.php&page=".$i."\">next&gt;</A>"; 
}




}

include("dbdisconnect.php");

?>
</html>


Zusehen ist das ganze unter: http://sid.si.funpic.de/ehlineage/include.php?path=scripts/screens/screen.php


Kann mir vielleicht einer helfen?

Fishly
 
vermute mal es liegt an dieser Zeile:

for($i=0; $i<=$seiten; $i++)

da ja der Wert der Seiten nie kleiner als 1 ist geht die Schleife immer mindestens 2 mal durch. Probiers mal so:

for($i=1; $i<=$seiten; $i++)
 
Das Problem ist, dass du die Seiten zählst nach Anzahl der Einträge in der Datenbank. Bsp:
5Einträge -> 5 Seiten

Du beginnst aber immer bei 0 zu zählen mit der variablen $page also hast demzufolge 0 bis 5 also 6 Seiten.

Um es verständlicher auszudrücken, wenn du auf der zweiten Seite bist dann hast du page = 1

Rechne einfach $seiten -= 1 dann sollte es gehen!
 
Hab ich auch schon Probiert, dann lässt er immer den ersten eintrag weg. Warum auch immer?! Hab schon alles mögliche ausprobiert... :/ Oder kennst du noch eine andere lösung um in der datenbank zu blättern? Ich hab bald keine ideen mehr!
 
Das kann ich jetzt aber auch nicht verstehen, dass er dann den ersten Eintrag weglässt. Die "extra" Seite kommt auf jeden Fall dadurch zustande, dass deine Seitenanzahl immer um 1 höher ist als der Wert den du mit $page übergibst.
Dann versuch es mal andersherum. Versuch es mal so:

PHP:
<html> 
<br><br> 
<p align="center"><b>[e.h | Screenshots]</b></p> 
<br><br> 
<?php 

include("dbconnect.php"); 

$proseite = 1; 
$page = $_GET['page'];
if($page < 1) { $page=1; }

$abfrage = "SELECT * FROM screens"; 
$ergebnis = mysql_query($abfrage); 
$number = mysql_num_rows($ergebnis); 
$seiten=ceil($number/$proseite); 
$start=($page-1) * $proseite; 
$ende = $start + $proseite; 
if ($ende>$number) 
{ 
    $ende = $number; 
} 

$abfrage = "SELECT * FROM screens ORDER BY id DESC LIMIT $start, $proseite"; 
  $ergebnis = mysql_query($abfrage); 
  while($row = mysql_fetch_object($ergebnis)) 
        { 

?> 

<p align="center"><img border="0" src="http://sid.si.funpic.de/ehlineage/screenshots/<?php echo $row->id;?>"></p> 

<?php 

if ($page>1) { 
    $i=$page-1; 
    echo "<a href=\"include.php?path=scripts/screens/screen.php&page=".$i."\">&lt;previous</a>"; 
} 
for($i=1; $i<=$seiten; $i++) { 
    if ($i==$_GET['page']) { 
        echo $i."&nbsp;"; 
    } 
    else { 
        echo "<a href=\"include.php?path=scripts/screens/screen.php&page=".$i."\">$i</a>&nbsp;"; 
    } 
} 
if ($page<$seiten) { 
    $i=$_GET['page']+1; 
    echo "<a href=\"include.php?path=scripts/screens/screen.php&page=".$i."\">next&gt;</A>"; 
} 




} 

include("dbdisconnect.php"); 

?> 
</html>

Damit fängst du dann mit page nicht bei 0 sondern bei 1 an und hast als maximalwert den gleichen wie die Anzahl der Seiten
 
Zurück