跳不出while迴圈,該怎麼解決

來源:互聯網
上載者:User
跳不出while迴圈
我想寫個分頁代碼,每個頁面顯示6種食物,但是好像跳不出迴圈,不管我進哪一頁都是一樣的
代碼如下:
PHP code
$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,做了上面的處理後,不會出現超出範圍的情況了。
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.