跳不出while循环
我想写个分页代码,每个页面显示6种食物,但是好像跳不出循环,不管我进哪一页都是一样的
代码如下:
PHP code1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http:
-->
$each_page =6;
$diff = $rows % 6;
$page_org = $rows / 6;
$count =1;
if ( $diff >0)
{
$page = floor ( $page_org +1);
}
else
{
$page = floor ( $page_org );
}
$page_count_start =0;
$page_count_end =0;
$stopwatch =0;
if (!isset( $_GET [ 'page' ]) || (isset( $_GET [ 'page' ])&& $_GET [ 'page' ])==1)
{
$page_num =1;
$page_count_end = $page_count_start + 6;
}
else
{
$page_num = $_GET [ 'page' ];
$page_count_start = $page_num + ( $page_num -1) * 5;
$page_count_end = $page_count_start + 6;
}
$query = "SELECT * FROM DISH WHERE dish_id IN (SELECT dish_id FROM CATEGORY_MENU WHERE cat_id=$cat_id)" ;
$result =queryMysql( $query );
while ( $get_details =mysql_fetch_array( $result ))
{
$stopwatch ++;
if ( $stopwatch
|
Nach dem Login kopieren
------解决方案--------------------
既然你已经计算出起始的偏移,那为什么不用 limit 子句呢
$query .= " limit $page_count_start,6";
$result=queryMysql($query);
同时删除循环中与 $stopwatch 相关的代码
------解决方案--------------------楼主可能还不知道mysql有limit子句
------解决方案--------------------在continue;前echo一下,如果看不到echo就是你的判断条件有问题。
另外分页MySQL是使用limit实现的,而不是循环。
------解决方案--------------------我不是做php的,所以我说的,你选着看吧。
做分页,我的做法是先用count(*)查询一下一共有多少项是要查询的,然后除以每页要显示的条数(item),得到共有多少页(page),然后接收传入的页码数(inpage),如果inpage小于等于0或者为空,则将inpage改为1,如果大于page,则改inpage = page。
设置变量StartPage = (inpage-1)*item,
然后写sql文
select * from tab_name where 条件 limit StartPage,item;
这样就能根据传进来的参数查询了。
在页面,上一页直接用当前页-1,下一页直接用当前页+1,做了上面的处理后,不会出现超出范围的情况了。