Christian: Liste schießt über letzten Eintrag raus

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 );

  1. 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

    1. 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

      1. Hallo

        Sinngemäß sollte es so gehen:
        $anzahl_seiten = ciel($anzahl_datensaetze/$anzahl_eintraege)-1

        Paul

        1. Hallo

          Sinngemäß sollte es so gehen:
          $anzahl_seiten = ciel($anzahl_datensaetze/$anzahl_eintraege)-1

          Paul

          Hi

          Was ist "ciel" für eine Funktion?

  2. 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