Seiteneinteilung mit PHP geht leider nicht

Experience1986

Erfahrenes Mitglied
Hi,

Ich habe hier mal ein Script, für me Seiteneinteilung von Datensätzen in PHP.

Leider funktioniert das nicht, obwohl ich es genau nach einem Tutorial gemacht habe.

Die Ausgabe von den Seitenzahlen habe ich jetzt mal nicht eingebaut, das hab ich zu testzwecken noch weggelassen und über die URL gesteuert.

PHP:
// Variablen
$daten_pro_seite = 10;
// Prüfe, ob seite angegeben wurden ist
if ($seite == null)
    {
    $seite = 1;
    }

$untergrenze = $seite*$daten_pro_seite-$daten_pro_seite;
$obergrenze = $seite*$daten_pro_seite;

// MySQL Abfrage, wenn es der Fall zulässt
$datencounter = $datencounter +1;

if($datencounter > $untergrenze && $datencounter <= $obergrenze)
{
   $zaehler='0';
   $kleine=mysql_query("SELECT id FROM questbook ORDER BY id DESC LIMIT $untergrenze,$obergrenze");
   $zeilen=mysql_num_rows($kleine);

   while($zaehler < $zeilen)
   {
      $fetch=mysql_fetch_array($kleine);
      echo "$fetch[id]<br>";
      $zaehler++;
   }
}

Ich hoffe, ihr könnt mir (schnell) weiterhelfen, schonmal danke ;-) *schleim
 
Zuletzt bearbeitet:
naja ein paar zeilen kann man so lassen :-)

if ($seite == null) tauschen gegen if(!ifset($seite))

die untergrenze /obergrenze macht so erstmal kein sinn

da müsste man ev mehr wissen

was mir fehlt ist die abfrage wieviel datensätze überhaupt da sind ...

und die sqlabfrage muss auch verbessert werden

limit startwert(auch offset genannt),anzahl der reihen
 
also, meine einteilung geht jetzt, das problem war, das sich $obergrenze auch immer + 10 geworden ist, doch die muss immer auf 10 bleiben, kleiner struttel fehler.

jetzt müsste ich nur noch wissen, wie man die links aus gibt, also Seite 1, 2, 3....

Aber nur so viel, wie auch angezeigt werden können, also nicht seite 26662, wenn es nur 4 seiten gibt ;-)

Momentan sind 42 Datensätze in meiner DB.
 
SELECT COUNT(*) FROM tabelle
Das ist der Query.

Dann musst du Anzahl geteilt durch $daten_pro_seite.

$i = 1;
while ($i < $daten_pro_seite + 1) {
echo "<a href=\"deineseite.php?seite=" . $i . "Seite" . $i;
$i++;
}
 
@Terrance...
den Code, den du mir gegeben hast, zählt bis 10, aber ansonsten geht es.

Ist es nicht korrekter, wenn man es so mach: $zeilen ist die Datensatz-Höhe:

PHP:
$i = 1;
while ($i < $zeilen/$daten_pro_seite) {
echo "<a href=\"deineseite.php?seite=" . $i . "\">Seite" . $i . "</a> ";
$i++;
}


Da kommt aber in dem Fall ne 4.2 raus (42 Datensätze / 10 daten_pro_seite)

Müsste man doch dann aufrunden, aber wie?
 
Ups. Sorry. Ich hab ja oben geschrieben "Dann musst du Anzahl geteilt durch $daten_pro_seite.". Das hab ich dann aber vergessen auch in die Schleife einzufügen.

Ja so müsste es gehn.
 
habe ich jetzt gerade ausprobiert, nur durch das Limit in der Abfrage ist der Anzahl der Datensätze ja immer auf 10, und daher ist $zeilen immer zehn und nicht die gesamte Anzahl der Datensätze in meiner Tabelle.

Muss ich dan extra ne neue Query mache?
 
Ok, hier mal der ganze Code, hab halt die gesamte Zahl nun doch noch mit na Extra Query gemacht. Leider urndet die Schleife ab, aber sie muss logischer weise ja eigentlich aufrunden, so das auch die letzte Seite angezeigt wird:

PHP:
// Variablen
$daten_pro_seite = 10;
// Prüfe, ob seite angegeben wurden ist
if ($seite == null)
    {
    $seite = 1;
    }

$untergrenze = $seite*$daten_pro_seite-$daten_pro_seite;
$obergrenze = $daten_pro_seite;

// MySQL Abfrage, wenn es der Fall zulässt
$datencounter = $datencounter +1;


   $zaehler='0';
   $kleine=mysql_query("SELECT id, vorname, datum, nachname, email, icq, msn, entry, comment FROM questbook ORDER BY id DESC LIMIT $untergrenze,$obergrenze");
   $zeilen=mysql_num_rows(mysql_query("SELECT id comment FROM questbook ORDER BY id DESC"));



$i = 1;
while ($i < $zeilen/$daten_pro_seite) {
echo "<a href=\"test.php?seite=" . $i . "\">Seite" . $i . "</a> ";
$i++;
}



echo "<hr>Ausgabe von Variablen:<br>
Untergrenze: $untergrenze<br>
Obergrenze: $obergrenze<br>
DatenCounter: $datencounter<br>
Seite: $seite<br>
DatenProSeite: $daten_pro_seite<br>
Zeilen: $zeilen

<hr>";


   while($zaehler < $zeilen)
   {
      $fetch=mysql_fetch_array($kleine);
      echo "$fetch[id]<br>";
      $zaehler++;
   }


Ich hab im Manuale schon gegugt, aber da wird nur die round(9 funktion angeboten, nur bringt mir das nichts, denn es muss zum Beispiel bei 4.2 auf 5 AUF gerundet werden und nich auf 4.0 ab gerundet werden.

Was gibt es da noch für möglichkeiten?
 
Zurück