ホームページ > バックエンド開発 > PHPチュートリアル > ページングの問題: ページング クエリを実行できません

ページングの問題: ページング クエリを実行できません

WBOY
リリース: 2016-06-23 13:02:19
オリジナル
1230 人が閲覧しました

コードを読みたくない場合は、私の説明を読んでから解決策を送信してください。これは、Baidu に似た検索ページです。検索ボックスがあります
以下はクエリ結果を表示します。 たとえば、PHP を検索し、テーブルの num フィールドの下にある PHP の内容を検索すると、クエリの結果がすべてページネーションで表示されます。
最初のページと 2 番目のページです... ここでの問題は、クエリ結果がユーザーに基づいて、送信されるたびにデータベースのクエリに $_POST['num'] が使用されることです。
5 個の場合。各ページに 1 つのデータが表示され、3 ページのデータがクエリされるようになりました。各クエリではデータとページング情報を表示できますが、たとえば、2 番目のページをクリックすると、エラーが報告されます。 2 番目のページをクリックすると、送信された $_POST['num'] データがないため、エラーが報告されるのは 1 つのみです。最初のページのデータをクエリできるのですが、2 番目のページをクリックするとエラーが報告されます。しかし、ユーザーが 2 番目のページをクリックしたときにそれを修正する方法がわかりません。以前にクエリしたデータが消えないことを願っています。これについてはどうすればよいですか?誰もがこれを理解できるかどうかはわかりません

<div id="show">       <?php       header('content-type:text/html;charset=utf-8;');       include 'function.php';       if (isset($_POST['num'])||isset($_GET['page'])) {       $pdo=new PDO("mysql:host=localhost;dbname=t1","root","");       session_start();       $_SESSION['num']=$_POST['num'];       $stmt3=$pdo->prepare("select * from table1 where num=?");       $stmt3->execute(array($_POST['num']));       $res3=$stmt3->fetchall();       $rows=count($res3);       $pagesize=5;       if($rows==0){        $pagenum=1;       }else{        $pagenum=ceil($rows/$pagesize);       }       if(isset($_GET['page'])){          $page=$_GET['page'];          if(empty($page)||$page<0||!is_numeric($page)) {            $page=1;          }else{            $page=intval($page);          }        }else{        $page=1;       }       if($page>$pagenum){        $page=$pagenum;       }       $startnum = ($page - 1)*$pagesize;       $display_page=5;       $query = "SELECT * FROM qq where num=? LIMIT $startnum,$pagesize";       $stmt=$pdo->prepare("$query");       //$stmt=$pdo->prepare("select * from table1 where num=?");       $stmt->execute(array($_POST['num']));       $res=$stmt->fetchall(PDO::FETCH_ASSOC);       $v = current($res);       if($res){         foreach($res as $v){          //echo '<h3><span>'.$v['num'].'</span></h3>' ;          echo '<h4>'.$v['name'].'</h4>';         }       }else{        echo "无数据";       }               }       ?>     </div>     <div id="page">        <?php         if(isset($_POST['num'])||isset($_GET['page'])){           fenye();         }       ?>     </div>
ログイン後にコピー



ディスカッション (解決策) への返信


あなたの番号は郵送で送信されました。 2 ページ目、当然これ以上 num はありません

なぜなら、最初のページと 2 ページ目をクリックすると、POST メソッドの代わりに GET メソッドが使用されるからです。 sso赤い部分に問題があります= $ pdo-&gt; prepare( "select * from table1 where num =?"); );

その後、fenye メソッドは num と page を追加する必要があります

pagination に渡される URL には、次の 2 つのパラメータを追加する必要があります:?page=xxx&num=xxx

次のように変更してみてください

<div id="show">       <?php       header('content-type:text/html;charset=utf-8;');       include 'function.php';       $num = isset($_REQUEST['num'])? $_REQUEST['num'] : 0;       $page = isset($_REQUEST['page'])? $_REQUEST['page'] : 1;        $pdo=new PDO("mysql:host=localhost;dbname=t1","root","");        session_start();        $_SESSION['num']=$num;        $stmt3=$pdo->prepare("select * from table1 where num=?");        $stmt3->execute(array($num));        $res3=$stmt3->fetchall();        $rows=count($res3);        $pagesize=5;        if($rows==0){            $pagenum=1;        }else{            $pagenum=ceil($rows/$pagesize);        }        if($page){            if(empty($page)||$page<0||!is_numeric($page)) {                $page=1;            }else{                $page=intval($page);            }         }else{            $page=1;        }        if($page>$pagenum){            $page=$pagenum;        }        $startnum = ($page - 1)*$pagesize;        $display_page=5;        $query = "SELECT * FROM qq where num=? LIMIT $startnum,$pagesize";        $stmt=$pdo->prepare("$query");        //$stmt=$pdo->prepare("select * from table1 where num=?");        $stmt->execute($num);        $res=$stmt->fetchall(PDO::FETCH_ASSOC);        $v = current($res);        if($res){            foreach($res as $v){                //echo '<h3><span>'.$v['num'].'</span></h3>' ;                echo '<h4>'.$v['name'].'</h4>';            }        }else{         echo "无数据";        }       ?>     </div>     <div id="page">        <?php         if($num || $page){           fenye($num, $page);         }       ?>     </div>
ログイン後にコピー


次のようになりますBaidu、Baidu の次のページのリンクを見てください。検索語はすべてアドレスパラメータに含まれていますが、最初のページをクリックしてもエラーが報告されないだけです。または 2 ページ目では、メソッドは POST メソッドではなく GET メソッドで渡されます。 sso赤い部分に問題があります= $ pdo-&gt; prepare( "select * from table1 where num =?"); );

次に、fenye メソッドで num と page を追加する必要があります。
pagination に渡される URL には、次の 2 つのパラメーターを追加する必要があります。この問題を解決します?

あなたの番号は郵送で送信されました。2 ページ目以降は投稿がありません。したがって、当然、番号はもうありません

这个那个分页函数的代码
function fenye(){
global $page,$pagenum,$shoupage,$pageoffset;
echo "

";
echo "
    ";
    echo '
  • '.$page.'/'.$pagenum.'页|
  • ';
    if($page==1){
    echo '
  • 首页|
  • ';
    echo '
  • 上一页|
  • ';
    }else{
    echo '
  • 首页|
  • ';
    echo '
  • 上一页|
  • ';
    }
    $shoupage=5;
    $pageoffset=($shoupage-1)/2;
    $start=1;
    $end=$pagenum;
    if($pagenum>$shoupage){
    if($page>$pageoffset){
    $start=$page-$pageoffset;
    $end=$pagenum>$page+$pageoffset?$page+$pageoffset:$pagenum;
    }else{
    $start=1;
    $end=$pagenum>$shoupage?$shoupage:$pagenum;
    }
    if($page+$pageoffset>$pagenum){
    $start=$start-($page+$pageoffset-$end);
    }
    }
    echo '
    ';
    echo '
      ';
      for($i=$start;$i<=$end;$i++){
      echo '
    • '.($i).'
    • ';
      }
      echo '
    ';
    echo '
    ';
    if($page==$pagenum){
    echo '
  • |下一页|
  • ';
    echo '
  • 尾页|
  • ';
    }else{
    echo '
  • |下一页|
  • ';
    echo '
  • 尾页|
  • ';
    }
    echo '
';
echo '
';

};
?>

在链接中加入 num=$num

把原来这句话 echo '

  • '.($i).'
  • ';
    改成了这样echo '
  • ';这样改对吗 但是还是提示我拼接错误 为什么?Parse error: syntax error, unexpected '=', expecting ',' or ';' in D:\wamp\www\function.php on line 33

    在链接中加入 num=$num

    改这样

    <?phpfunction fenye($num){global $page,$pagenum,$shoupage,$pageoffset;echo "<div >";echo "<ul id='ul2'>";echo '<li>'.$page.'/'.$pagenum.'页|</li>';   if($page==1){             echo '<li>首页|</li>';             echo '<li>上一页|</li>';   }else{     echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'">首页</a>|</li>';             echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'?'.($page-1).'&num='.$num.'">上一页</a>|</li>';   }   $shoupage=5;       $pageoffset=($shoupage-1)/2;       $start=1;       $end=$pagenum;   if($pagenum>$shoupage){        if($page>$pageoffset){        $start=$page-$pageoffset;        $end=$pagenum>$page+$pageoffset?$page+$pageoffset:$pagenum;        }else{        $start=1;        $end=$pagenum>$shoupage?$shoupage:$pagenum;        }        if($page+$pageoffset>$pagenum){        $start=$start-($page+$pageoffset-$end);        }       }   echo '<div>';       echo '<ul id="ul1">';       for($i=$start;$i<=$end;$i++){        echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'?page='.$i.'&num='.$num.'">'.($i).'</a></li>';       }       echo '</ul>';           echo '</div>';   if($page==$pagenum){    echo '<li>|下一页|</li>';    echo '<li>尾页|</li>';   }else{    echo '<li>|<a href="'.$_SERVER["SCRIPT_NAME"].'?page='.($page+1).'&num='.$num.'">下一页</a>|</li>';    echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'?page='.$pagenum.'&num='.$num.'">尾页</a>|</li>';   }echo '</ul>';    echo '</div>';    };?>
    ログイン後にコピー
    ログイン後にコピー


    然后调用改这样

    if($num || $page){
    fenye($num);
    }
    ?>

    哈哈可以了 我先好好看看你的代码

    改这样

    <?phpfunction fenye($num){global $page,$pagenum,$shoupage,$pageoffset;echo "<div >";echo "<ul id='ul2'>";echo '<li>'.$page.'/'.$pagenum.'页|</li>';   if($page==1){             echo '<li>首页|</li>';             echo '<li>上一页|</li>';   }else{     echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'">首页</a>|</li>';             echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'?'.($page-1).'&num='.$num.'">上一页</a>|</li>';   }   $shoupage=5;       $pageoffset=($shoupage-1)/2;       $start=1;       $end=$pagenum;   if($pagenum>$shoupage){        if($page>$pageoffset){        $start=$page-$pageoffset;        $end=$pagenum>$page+$pageoffset?$page+$pageoffset:$pagenum;        }else{        $start=1;        $end=$pagenum>$shoupage?$shoupage:$pagenum;        }        if($page+$pageoffset>$pagenum){        $start=$start-($page+$pageoffset-$end);        }       }   echo '<div>';       echo '<ul id="ul1">';       for($i=$start;$i<=$end;$i++){        echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'?page='.$i.'&num='.$num.'">'.($i).'</a></li>';       }       echo '</ul>';           echo '</div>';   if($page==$pagenum){    echo '<li>|下一页|</li>';    echo '<li>尾页|</li>';   }else{    echo '<li>|<a href="'.$_SERVER["SCRIPT_NAME"].'?page='.($page+1).'&num='.$num.'">下一页</a>|</li>';    echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'?page='.$pagenum.'&num='.$num.'">尾页</a>|</li>';   }echo '</ul>';    echo '</div>';    };?>
    ログイン後にコピー
    ログイン後にコピー


    然后调用改这样
         

             if($num || $page){
    fenye($num);
    }
    ?>
         

    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート