使用php与mysql数据分页
我想创建一个分页,其中有5个项目一次取决于数据库中的项目数。我写了这段代码。但我DONO如何去更好地buggy..any分页或进一步改变。其本使用php与mysql数据分页
<?php
$myresult .= "<div class='pagination' >";
if ($pagenum == 1)
{
}
else
{
$pagenum = 1;
$myresult .= "<a href='javascript:newPage(\"".$pagenum."\")'> first </a>";
$myresult .= " ";
$previous = $pagenum-1;
$myresult .= "<a href='javascript:newPage(\"".$previous."\")'> Prev </a>";
if ($pagenum == $last)
{
$previous3 = $pagenum-4;
$myresult .= "<a href='javascript:newPage(\"".$previous3."\")'> $previous3 </a>";
$previous2 = $pagenum-3;
$myresult .= "<a href='javascript:newPage(\"".$previous2."\")'> $previous2 </a>";
}
if ($pagenum > 2)
{
$previous1 = $pagenum-2;
$myresult .= "<a href='javascript:newPage(\"".$previous1."\")'> $previous1 </a>";
}
if ($pagenum > 1)
{
$previous2 = $pagenum-1;
$myresult .= "<a href='javascript:newPage(\"".$previous2."\")'> $previous2 </a>";
$myresult .= " ";
}
}
$myresult .= "<span class=\"disabled\"> $pagenum </span>";
if ($pagenum == $last)
{
}
else {
if($pagenum < $last - 1)
{
$next = $pagenum+1;
$myresult .= "<a href='javascript:newPage(\"".$next."\")'> $next </a>";
}
if($pagenum < $last - 2)
{
$next1 = $pagenum+2;
$myresult .= "<a href='javascript:newPage(\"".$next1."\")'> $next1 </a>";
}
if($pagenum == 1)
{
$next2 = $pagenum+3;
$myresult .= "<a href='javascript:newPage(\"".$next2."\")'> $next2 </a>";
$next3 = $pagenum+4;
$myresult .= "<a href='javascript:newPage(\"".$next3."\")'> $next3 </a>";
}
if($pagenum == 2)
{
$next2 = $pagenum+3;
$myresult .= "<a href='javascript:newPage(\"".$next2."\")'> $next2 </a>";
}
$next = $pagenum+1;
$myresult .= "<a href='javascript:newPage(\"".$next."\")'> Next </a>";
$myresult .= "<a href='javascript:newPage(\"".$last."\")'> Last</a>";
}
$myresult .= "</div>";
$myresult .= "</br>";
?>
也许不是最好的答案永远但这里是我已经使用:
<?php
class Pagination {
function __construct() {
}
function getPaginatinationNavigation($page = 1, $num_rows, $rows_per_page, $page_name)
{
$lastpage = ceil($num_rows/$rows_per_page);
$page = (int)$page;
if ($page > $lastpage)
{
$page = $lastpage;
}
if ($page < 1) {
$page = 1;
}
$content='<p style="text-align: center;">';
if ($page == 1) {
$content.= " FIRST PREV ";
} else {
$content.= " <a href='$page_name?page=1'>FIRST</a> ";
$prevpage = $page-1;
$content.= " <a href='$page_name?page=$prevpage'>PREV</a> ";
}
$content.= " (Page $page of $lastpage) ";
if ($page == $lastpage) {
$content.= " NEXT LAST ";
} else {
$nextpage = $page+1;
$content.= " <a href='$page_name?page=$nextpage'>NEXT</a> ";
$content.= " <a href='$page_name?page=$lastpage'>LAST</a> ";
}
$content.= '</p>';
return $content;
}
}
?>
导入对象
require_once('classes/Pagination.php');
获取总行量:
$query= "SELECT COUNT(*) FROM TABLE_NAME";
$row = mysql_fetch_array($getResults);
$numRecords = $row[0];
做出了限制,以限制基于页面数行:
$limit = ' LIMIT ' . ($page - 1) * 25 .', 25';
查询中使用LIMIT
$query = 'SELECT * FROM TABLE_NAME' . $limit;
$getResults=mysql_query($query) or die(mysql_error());
显示结果,你通常会:
while($row = mysql_fetch_array($getResults))
{
DISPLAY RESULTS HERE
}
使用类吐出导航:
$pagination->getPaginatinationNavigation($page, $numRecords, 25, 'display_page_name.php');
所以总体而言,分页您需要2个疑问:
1)要获得在搜索 2)为了获得在一定范围仅限于这些项目的记录中记录的总金额:说25〜50或1000至1050
您可以显示来自有限查询的记录,并转到下一组记录,将页码增加1。
希望这会有所帮助。不要忘记清理从url查询字符串中获得的任何数据。
让我知道你是否希望我进一步解释。
数据提取的后端代码正在完成。 drupal.org/node?page=2我正在尝试在底部创建类似分页的内容。说分页按钮像第一,上一页,3,4,5,6,7,下一页,最后 – Hacker 2010-06-03 05:13:03
我找到了解决方案。它在http://www.phpeasystep.com/phptu/29.html – Hacker 2010-06-03 06:28:08
的问题,一旦你调用函数一次,你得到的总页数和结果总数。在进入后续页面的后续调用函数时,有没有办法让电话获得结果的总数?加载“新页面”时,基本上是两次前往数据库。“ – luckytaxi 2010-06-10 15:06:52
分页很大程度上取决于您打算实现的图形方面! 你有图片/截图/无论你想创建什么? 有了这个,我可以给你一个手... 关于你现在的代码,你重复相同的语句分配,正如你所说,它是非常buggy :) – Zuul 2010-06-02 21:13:34
http://drupal.org/node ?page = 2我正在尝试在底部创建类似分页的内容。说分页按钮像第一,先导,3,4,5,6,7,下一个,最后。获得第一,prev,next,last很容易,但中心5页链接对我来说很困难 – Hacker 2010-06-03 05:06:40
我找到了解决方案。其在phpeasystep.com/phptu/29.html – Hacker 2010-06-03 06:29:31