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