Pænere paging-navigation (via limit fra mysql db)
Pænere paging-navigation (via limit fra mysql db)Jeg bruger dette til at danne frem og tilbage navigation:
<?php
$total_results = mysql_result(mysql_query("select count(*) as num from tester"),0);
$total_pages = ceil($total_results / $max_results);
if($page > 1)
{
$prev = ($page - 1);
echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$prev\">Previous</a> ";
}
else{
echo "Previous ";
}
if($total_results > 60){
for($i = 1; $i <= $total_pages; $i++){
if(($page) == $i){
echo "$i ";
} else {
echo "<a href=\"".$_SERVER['PHP_SELF'].
"?page=$i\">$i</a> ";
}
}
}
if($page < $total_pages)
{
$next = ($page + 1);
echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$next\"> Next</a>";
}
?>
--------
Det virker fint nok, men der bliver dannet en farlig masse enkelte sidetal e.g. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 etc pga denne:
if($total_results > 10){
for($i = 1; $i <= $total_pages; $i++){
if(($page) == $i){
echo "$i ";
} else {
echo "<a href=\"".$_SERVER['PHP_SELF'].
"?page=$i\">$i</a> ";
}
}
}
Kan man lave det om således at den altid kun viser 7 tal som dette:
Previous 1, 2, 3, 4, 5, 6, 7 Next
Og hvis der så tykkes på 7 så bliver det:
Previous 7, 8, 9, 10, 11, 12, 13 Next
Og hvis der så tykkes på 13 så bliver det:
Previous 13, 14, 15, 16, 17, 18, 19 Next
Og hvis der så tykkes på 15 så bliver det:
Previous 15, 16, 17, 18, 19, 20, 21 Next
Osv. Altså så det valgte tal står først og kun med de 6 efter efterfølgende tal bagefter.
