Christian: Seitenwechsel bei bestimmter Seitenlänge?

Hallo,
wie muss ich folgendes Skript modifizieren dass ab einer gewissen Anzahl von Datensätzen ein "Weiter"- bzw "zurück"-Button automatisch generiert wird?

<?php
$benutzer = "root";
$passwort = "";
$db = "testdb";
$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() );
$ergebnis = mysql_query( "SELECT * FROM domains" );
$anz_reihen = mysql_num_rows( $ergebnis );
print "Es sind zur Zeit $anz_reihen Datensätze in der Tabelle<P>";
print "<table border=1>\n";
while ( $datensatz = mysql_fetch_array( $ergebnis ) )
    {
    print "<tr>\n";
    print "<td>$datensatz[name]</td><td>$datensatz[mail]</td><td>$datensatz[kommentar]</td>\n";
    print "</tr>\n";
    }
print "</table>\n";
mysql_close( $link );
?>

Danke im Voraus,
Christian

PS: Hab dem Beitrag weiter unten versehentlich die falsche Kategorie zugewiesen. Kommt nicht wieder vor.

  1. Hi,

    wie muss ich folgendes Skript modifizieren dass ab einer gewissen Anzahl von Datensätzen ein "Weiter"- bzw "zurück"-Button automatisch generiert wird?

    was erwartest Du daraufhin für eine Antwort?

    Überlege Dir, was gegeben sein muss. Du brauchst

    • eine maximale Anzahl,
    • einen Offset ("Startnummer"),
    • einen Weg, nur die Daten von Offset bis Offset+Anzahl zu lesen,
    • eine Erkennung, ob vorherige und/oder spätere Datensätze vorhanden sind,
    • Links mit Parametrierung, die vom Script als Offset-Angabe dient.

    Damit solltest Du erst mal arbeiten können.

    Cheatah

    1. Schon mal recht herzlichen Dank wegen dem Hinweis bezüglich der Limitierung. Das ist auch irgendwie logisch...

      ...

      $ergebnis = mysql_query( "SELECT * FROM domains LIMIT 10" );

      ...

      Aber wie die Links zu den anderen Seiten generiert werden sollen verstehe ich nicht

      1. Hi,

        $ergebnis = mysql_query( "SELECT * FROM domains LIMIT 10" );

        die LIMIT-Klausel erlaubt noch einen weiteren Parameter, der Dir beim Blättern auf der zweiten Seite hilft.

        Aber wie die Links zu den anderen Seiten generiert werden sollen verstehe ich nicht

        Die anderen Seiten sind das selbe Script, nur mit einem Parameter, der dem Script sagt, wie die LIMIT-Klausel auszusehen hat (etwas verkürzt gesagt).

        Cheatah

      2. Moin!

        Schon mal recht herzlichen Dank wegen dem Hinweis bezüglich der Limitierung. Das ist auch irgendwie logisch...

        ...

        $ergebnis = mysql_query( "SELECT * FROM domains LIMIT 10" );

        LIMIT kann auch zwei Parameter haben - die brauchst du auch.

        Wenn du festlegst, 10 Einträge pro Seite auszugeben (es macht sich gut, das als Konstante irgendwo zu definieren), dann kannst du mit "LIMIT 1,10" d ab dem ersten Eintrag 10 Einträge erhalten. Die nächste Seite würde dann mit "LIMIT 11,10" zu kriegen sein, die danach mit "LIMIT 21,10" etc... Ich hoffe, du erkennst das Muster. Wenn du die ID des ersten Eintrages als Variable im Link hast, ist eigentlich schon alles gewonnen. Es müssen nur noch ein paar Checks erfolgen, daß du nicht "LIMIT -9,10" befiehlst (1 ist der kleinste Index, kleiner geht nicht), und aus Gründen der Einfachheit solltest du dir auch etwas überlegen, um nicht über das Ende der Liste hinauszuschießen.

        - Sven Rautenberg

  2. Moin!

    wie muss ich folgendes Skript modifizieren dass ab einer gewissen Anzahl von Datensätzen ein "Weiter"- bzw "zurück"-Button automatisch generiert wird?

    Wie Cheatah schon gesagt hat: Einige Dinge sind einzubauen. Primär mußt du die Masse an Datenbankergebnissen _limitieren_ (Zaunpfahl!). Und natürlich irgendeine Art von Link zur vorhergehenden und nachfolgenden Seite einbauen.

    <?php
    $benutzer = "root";
    $passwort = "";
    $db = "testdb";
    $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() );
    $ergebnis = mysql_query( "SELECT * FROM domains" );

    //Hier limitieren.

    $anz_reihen = mysql_num_rows( $ergebnis );
    print "Es sind zur Zeit $anz_reihen Datensätze in der Tabelle<P>";

    //Diese Angabe stimmt nicht mehr, wenn du limitierst.

    print "<table border=1>\n";
    while ( $datensatz = mysql_fetch_array( $ergebnis ) )
        {
        print "<tr>\n";
        print "<td>$datensatz[name]</td><td>$datensatz[mail]</td><td>$datensatz[kommentar]</td>\n";
        print "</tr>\n";
        }
    print "</table>\n";
    mysql_close( $link );

    //Link zur vorhergehenden und nachfolgenden Seite (bzw. wenn's einfacher ist, Link zum nachfolgenden und vorhergehenden Datensatz, direkt passend für's LIMIT-Statement) - aber nur, wenn's in diese Richtung noch weitergeht, sonst nicht.

    ?>

    PS: Hab dem Beitrag weiter unten versehentlich die falsche Kategorie zugewiesen. Kommt nicht wieder vor.

    Kein Problem, das ist soeben korrigiert worden.

    - Sven Rautenberg