如果你的mysql查询中有一些条件(Where子句),如何创建分页?

时间:2014-03-11 16:10:26

标签: php mysql pagination

我有这样的查询:

     $pagenumber = get_page_number(); // I'll get the pagenumber by a method wich runs when user click's on page numbers , for example : 2 or 3 or whatevere user clicks.


     //Now , I'll make A Limit caluse : 

     $limit = $pagenumber.",10"; // limit the page to show 10 result  => example : LIMIT 2,10

     $sql = "SELECT * From doctors LIMIT $limit";
     --> after this , I show the result which is by my on way (echo a div for every result );

这是一个很酷的分页,工作正常。


但问题是,当我的查询中有一个 WHERE 时,mysql会感到困惑,我不知道该怎么做

考虑一下:

     $sql = "SELECT * FROM doctors WHERE `firstname` LIKE '$firstname' LIMIT $limit";    

所以,它不起作用:((

我知道问题是"在哪里"子句,因为当用户点击页码时,我的 $ limit 将是例如: 2,10  我的查询将是:

    $sql = "SELECT * FROM doctors Where firstname LIKE '$firstname' LIMIT 2,10";    

这里有一个条件(WHERE firstname ....) mysql甚至知道从哪里开始搜索?(从起点开始,我的意思是" LIMIT x,y" x是起点)

mysql如何知道我的意思" LIMIT 2,10"。

在我的表格中放置 2 的位置?(当有条件时);

如果没有条件, 2 表示记录号21(我是对吗?),当然如果偏移是10; (限2,10);

是吗?

但是,如果有一个WH WHERE子句,??????

那是什么起点?(2 ????)

如果您想了解更具体的细节,请随时询问(我想我解释过) 感谢

1 个答案:

答案 0 :(得分:0)

$pagesize = 10;
$start = ($page) * $pagesize;  // assuming you're passing in 0 based pages, if they're 1 base, do a $page -1

$sql = "SELECT * FROM doctors Where firstname LIKE '$firstname' ORDER BY lastname LIMIT $start,$pagesize"; 

您需要订购结果集才能使限制有意义。此外,开始需要考虑页面大小。