跳不出while循环,该怎么解决

php中文网
发布: 2016-06-13 10:18:22
原创
1121人浏览过

跳不出while循环
我想写个分页代码,每个页面显示6种食物,但是好像跳不出循环,不管我进哪一页都是一样的
代码如下:

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->$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)            {                //echo "hello";                $page_num=1;                $page_count_end=$page_count_start + 6;            }            else            {                //echo "hello";                $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<$page_count_start)                {                    //$stopwatch++;                    continue;   //这里好像跳不出去,试了一下,不管进哪一页都是一样的                }                                $dish_id=$get_details['dish_id'];                $dish_price=$get_details['dish_price'];                $dish_name=$get_details['dish_name'];                $dish_img=$get_details['img_url'];                $dish_descr=$get_details['dish_description'];                //echo "$dish_id $stopwatch";                            $page_count_start++;                if($page_count_start==$page_count_end+1)                {                    $stopwatch=0;                    break;                }                             //echo ".....";}
登录后复制



------解决方案--------------------
既然你已经计算出起始的偏移,那为什么不用 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,做了上面的处理后,不会出现超出范围的情况了。
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号