分页的建议

时间:2012-10-28 06:41:51

标签: php mysql pagination

我的分页问题。分页查询的php代码是:

$ <? if (isset($_GET["page"])) { 

    $Page = preg_replace("/[^0-9]/","", $_GET["page"]);
} else {
    $Page = 0;
}
$limit       = 10;
$StartFrom  = $limit * $Page;
$TotalFiles = mysql_num_rows(mysql_query("SELECT * FROM linkuri WHERE `categorie` = 'Afaceri' AND status = 1"));
$TotalPages = floor($TotalFiles / $limit); ?>

显示它的代码:

$i = 0; while ($TotalPages >= $i) { echo '<a class="active imgf" style="opacity: 1;margin-bottom:3px; margin-top:3px;" href="afaceri.php?page='.$i.'">'.($i+1).'</a>';$i++;}

问题是我正在尝试将显示设为:PAGES: "BACK" 1 2 3 4 5 "NEXT"

2 个答案:

答案 0 :(得分:2)

首先,我想建议对您的查询进行改进。要计算总行数,请使用:

SELECT count(*) as `totalpost` FROM linkuri WHERE `categorie` = 'Afaceri' AND status = 1

然后,您通过执行以下操作来创建分页:

$totalPost = 50; //Dummy total post
$limit = 10;

$pages = $totalPost / $limit; //Giving 5

//Now we know there are five pages
for($i=1; $i<=$pages; $i++) {
  echo $i; // Better echo something like <a href="link">$i</a>
}

P.S:这是一个非常基本的例子

在了解了如何创建分页效果之后,请查看本教程

  

How to paginate with PHP?

答案 1 :(得分:0)

如果你不想在相同条件下执行两个长查询,那么考虑测试一下:

SELECT SQL_CALC_FOUND_ROWS, * FROM foo WHERE bar ORDER BY ouch

然后在那之后

SELECT FOUND_ROWS() AS found

第一个查询会根据您的条件和限制为您提供结果,第二个查询会给出所有记录计数而不受限制