繁体   English   中英

如果您的mysql查询中有某些条件(在哪里),如何创建分页?

[英]How to create Pagination , if there are some conditions(Where caluse) in your mysql Query?

我有这样的查询:

     $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";    

因此,它不起作用:((

我知道问题在于“ WHERE”子句,因为当用户单击页码时,我的$ limit例如: 2,10,而我的查询将是:

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

这里有一个条件(WHERE名...)。mysql甚至如何知道从哪里开始搜索?

mysql如何知道“ LIMIT 2,10”的含义。

(如果有条件的话)将2放在我的桌子上的什么位置?

如果没有条件,则2表示记录号21(我对吗?),当然,如果offset为10; (LIMIT 2,10);

那正确吗?

但是,如果有A WHERE子句,该怎么办?

现在那个起点是什么?(2 ????)

如果您需要更具体的细节,请随时提问(我想我已经解释清楚了)谢谢

$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"; 

您需要对结果集进行排序,以使限制有意义。 另外,开始需要考虑页面大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM