1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Pagination Problem

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von newmacuser24, 03.04.08.

  1. newmacuser24

    newmacuser24 Antonowka

    Dabei seit:
    27.12.05
    Beiträge:
    355
    Hallo zusammen,

    habe folgendes Pagination-Problem:

    Per $_GET wird die Seite, die angezeigt werden soll, festgelegt. Pro Seite werden dann ganz klassisch eine bestimmte Anzahl von Ergebnissen angezeigt. Die Ergebnisse stammen aus einer Tabelle in meinre MySQL Datenbank.

    Hier der Code:

    //php

    $Page = $_GET['page'];
    if(!($Page > 0)) { // This variable is set to zero for the first page
    }



    $max = ($Page * 11);
    $min = ($max-11);
    $sql = "SELECT * FROM mydatabase WHERE username = '$myusername' LIMIT $min,$max";
    $result = mysql_query($sql);
    $array = mysql_fetch_array($result);
    if ($array) {


    //variable to keep the iteration number
    $count = 0;
    $columns = 1;

    //the begining
    echo '<table><tr>';

    //Build 1st Row

    echo '<th align="center">Date/Time</th>';
    echo '<th align="center">login</th>';
    //your loop
    while($array = mysql_fetch_array($result)) {
    if($count % $columns == 0) {//insert a new row
    echo '</tr><tr>';
    }
    echo '<td>';
    echo $array['DateTime'];
    echo '</td>';
    //Next Column
    echo '<td>';
    echo $array['login'];
    echo '</td>';
    $count++;
    }
    //closing table
    echo '</tr></table>';
    }


    $next=$Page+1;

    $page_name='history.php';

    $AlreadyShown = ($Page*11);

    $sql = "SELECT * FROM mydatabase WHERE username = '$myusername'";
    $result = mysql_query($sql);
    $num_rows = mysql_num_rows($result);
    if ($AlreadyShown < $num_rows) {
    print "<a href='$page_name?page=$next'><font face='Verdana' size='2'>NEXT</font></a>";
    }
    else if ($Page >1) {
    $previous =$Page-1;
    print "<a href='$page_name?page=$previous'><font face='Verdana' size='2'>PREVIOUS</font></a>";
    }
    }

    //php

    Ich denke die erneute Abfrage am Ende der Prozedur könnte man sich auch irgendwie sparen. Das ist aber vermutlich nicht das eigentliche Problem.

    Wenn ich jetzt auf NEXT klicke, so wird eine Tabelle angezeigt, die grösser als 10 Einträge ist. Die Ergebnisse werden unten angehängt und die Tabelle ist dann über 20 Einträge lang.

    Verwirrend finde ich dabei, dass es nach diesem Prinzip problemlos bei zwei anderen Tabellen funktioniert. Vermutlich gibt es einen eleganteren Lösungsansatz...

    (Wie man unschwer erkennen kann ist dies mein erster Pagination Versuch :)) )

    Für Antworten danke ich schon mal ganz herzlich im Voraus!
     
  2. Nogger

    Nogger Damasonrenette

    Dabei seit:
    05.11.05
    Beiträge:
    494
    "limit start, anzahl" nicht "limit start, ende"
     
  3. newmacuser24

    newmacuser24 Antonowka

    Dabei seit:
    27.12.05
    Beiträge:
    355

Diese Seite empfehlen