ホームページ >バックエンド開発 >PHPチュートリアル >whileループから抜け出せない、解決方法

whileループから抜け出せない、解決方法

WBOY
WBOYオリジナル
2016-06-13 13:35:001180ブラウズ

whileループから抜け出せない
各ページに6種類の食べ物を表示するページングコードを書きたいのですが、どのページでもループから抜け出せないようです。
コードは次のとおりです:

PHP コード
<!--

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 ".....";
}




-----解決策----- ---------------
開始オフセットを計算したので、
$query .= "limit $page_count_start,6";
$result=queryMysql($query);

も使用してみてはいかがでしょうか?ループ内の $stopwatch に関連するコードを削除します。
------解決策----------------------
投稿者は、mysql に制限句があることを知らない可能性があります
------解決策-----
「When」が表示されない場合は、続行する前にエコーします。エコーになる、あなたの判断条件に何か問題があります。
さらに、MySQL のページングは​​ループではなく制限を使用して実装されます。
------解決策-----
私はphpの人間ではないので、これを言いました、視聴することを選択します。
ページングを行うには、最初に count(*) を使用してクエリする項目の数を確認し、次に各ページ (項目) に表示される項目の数で割って、合計数を取得します。ページ (page) を入力し、受信ページ番号 (inpage) を受け取ります。 inpage が 0 以下または空の場合、inpage を 1 に変更します。それが page より大きい場合、inpage = page を変更します。
変数 StartPage = (inpage-1) *item,
を設定し、SQL テキストを記述します。
select * from tab_name where 条件制限 StartPage, item;
これにより、次の条件に基づいてクエリを実行できます。渡されるパラメータ。
ページでは、前のページは現在のページ -1 を直接使用し、次のページは現在のページ +1 を直接使用します。上記の処理の後、範囲外の状況は発生しません。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。