• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Pagination Problem

newmacuser24

Antonowka
Registriert
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!
 

Nogger

Damasonrenette
Registriert
05.11.05
Beiträge
494
"limit start, anzahl" nicht "limit start, ende"