Liste schießt über letzten Eintrag raus
Christian
- php
0 Andreas0 Sven Rautenberg
Hallo,
wenn bei folgendem Skript die Summe aller Datensätze durch die Anzahl der Einträge ($anzahl_eintraege = 5;) geteilt wird und das Ergebniss eine ganze Zahl ist, dann schießt die generierte Liste über den letzten Eintag hinaus. Wie kann ich das korrigieren?
Danke im Voraus,
Christian
$link = mysql_connect( "localhost", $benutzer, $passwort );
if ( ! $link )
die( "Keine Verbindung zu MySQL" );
mysql_select_db( $db, $link )
or die ( "Konnte Datenbank "$db" nicht öffnen: ".mysql_error() );
//$anzahl_eintraege gibt anzahl der eintraege aus
$anzahl_eintraege = 3;
$limit_x = $seite * $anzahl_eintraege;
$ergebnis = mysql_query( "SELECT * FROM domains ORDER BY id DESC LIMIT $limit_x,$anzahl_eintraege" );
$anz_reihen = mysql_num_rows( $ergebnis );
print "<table border=1>\n";
if(!isset($seite))
{
$seite = 0;
}
while ( $datensatz = mysql_fetch_array( $ergebnis ) )
{
print "<tr>\n";
print "<td>$datensatz[geschlecht]</td><td>$datensatz[mail]</td><td>$datensatz[domain]</td>\n";
print "</tr>\n";
$seite_zurueck = $seite - 1;
$seite_vorwaerts = $seite + 1;
}
print "</table>\n";
if($seite>0)
{
echo "<a href="$php_self?seite=" . $seite_zurueck . "">vorherige Seite</a> ";
}
if($anz_reihen>=$anzahl_eintraege)
{
echo "<a href="$php_self?seite=" . $seite_vorwaerts . "">nächste Seite</a>";
}
mysql_close( $link );
HI!
Was heißt bei Dir "schießt über den letzten Eintrag hinaus"?
Und wo teilst Du was, oder bin ich blind?
Warum scheibst Du oben $anzahl_eintraege = 5
und im Script = 3?
Grüße
Andreas
HI!
Was heißt bei Dir "schießt über den letzten Eintrag hinaus"?
Und wo teilst Du was, oder bin ich blind?
Warum scheibst Du oben $anzahl_eintraege = 5
und im Script = 3?
Grüße
Andreas
Nehmen wir an die Datenbank enthält 15 (15/3 = 5 also ne ganze Zahl)Datensätze, dann erschient ein "Nächste Seite-Button" auch wenn gar keine Datensätze mehr folgen(schiesst also hinaus).
Das mit "$anzahl_eintraege = 5" müsste "$anzahl_eintraege = 3" heißen. Sorry
Hallo
Sinngemäß sollte es so gehen:
$anzahl_seiten = ciel($anzahl_datensaetze/$anzahl_eintraege)-1
Paul
Hallo
Sinngemäß sollte es so gehen:
$anzahl_seiten = ciel($anzahl_datensaetze/$anzahl_eintraege)-1
Paul
Hi
Was ist "ciel" für eine Funktion?
Moin!
wenn bei folgendem Skript die Summe aller Datensätze durch die Anzahl der Einträge ($anzahl_eintraege = 5;) geteilt wird und das Ergebniss eine ganze Zahl ist, dann schießt die generierte Liste über den letzten Eintag hinaus. Wie kann ich das korrigieren?
Das Problem ist: Du erhälst durch dein LIMIT immer nur maximal soviele Einträge, wie du ausgeben kannst. Wenn also 5 Einträge gefunden werden, kriegst du sie auch - erfährt aber nicht, ob noch Nummer 6 existiert.
Lösung: Laß dir durch LIMIT immer einen Eintrag mehr SELECTieren, als du ausgeben willst. Wenn tatsächlich nur noch 5 Einträge vorhanden sind, kriegst du auch nur 5, und brauchst keinen Link zur nächsten Seite zu erstellen. Wenn hingegen noch mindestens ein folgender Eintrag erscheint, kriegst du 6 Ergebnisse und kannst entsprechend reagieren. Nur darf der letzte Eintrag natürlich noch nicht ausgegeben werden, sondern wird erst auf der nächsten Seite angezeigt.
- Sven Rautenberg