ホームページ >バックエンド開発 >PHPチュートリアル >ページングの問題: ページング クエリを実行できません
コードを読みたくない場合は、私の説明を読んでから解決策を送信してください。これは、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>
ディスカッション (解決策) への返信
その後、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>
这个那个分页函数的代码
0f71cf2d3e4fc691962ff252181ca724";
echo "0885e9496e8a7abcb37d986806dd9235";
echo '25edfb22a4f469ecb59f1190150159c6'.$page.'/'.$pagenum.'页|bed06894275b65c1ab86501b08a632eb';
if($page==1){
echo '25edfb22a4f469ecb59f1190150159c6首页|bed06894275b65c1ab86501b08a632eb';
echo '25edfb22a4f469ecb59f1190150159c6上一页|bed06894275b65c1ab86501b08a632eb';
}else{
echo '25edfb22a4f469ecb59f1190150159c6969efa3e79593faa6776a54b1e11b85c首页5db79b134e9f6b82c0b36e0489ee08ed|bed06894275b65c1ab86501b08a632eb';
echo '25edfb22a4f469ecb59f1190150159c6eb450df7fab43ebc2688455fc22885cc上一页5db79b134e9f6b82c0b36e0489ee08ed|bed06894275b65c1ab86501b08a632eb';
}
$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 'dc6dce4a544fdca2df29d5ac0ea9906b';
echo '657b1780c1e0ce660a6f99ce0d400961';
for($i=$start;$i<=$end;$i++){
echo '25edfb22a4f469ecb59f1190150159c6f300b7e427de65a7980acecabbe01dc6'.($i).'5db79b134e9f6b82c0b36e0489ee08edbed06894275b65c1ab86501b08a632eb';
}
echo '929d1f5ca49e04fdcb27f9465b944689';
echo '16b28748ea4df4d9c2150843fecfba68';
if($page==$pagenum){
echo '25edfb22a4f469ecb59f1190150159c6|下一页|bed06894275b65c1ab86501b08a632eb';
echo '25edfb22a4f469ecb59f1190150159c6尾页|bed06894275b65c1ab86501b08a632eb';
}else{
echo '25edfb22a4f469ecb59f1190150159c6|905205241e9c87c2a1ce77bb5030080c下一页5db79b134e9f6b82c0b36e0489ee08ed|bed06894275b65c1ab86501b08a632eb';
echo '25edfb22a4f469ecb59f1190150159c6284ac78396054279dbf8b001c67b79c1尾页5db79b134e9f6b82c0b36e0489ee08ed|bed06894275b65c1ab86501b08a632eb';
}
echo '929d1f5ca49e04fdcb27f9465b944689';
echo '16b28748ea4df4d9c2150843fecfba68';
};
?>
在链接中加入 num=$num
把原来这句话 echo '25edfb22a4f469ecb59f1190150159c6f300b7e427de65a7980acecabbe01dc6'.($i).'5db79b134e9f6b82c0b36e0489ee08edbed06894275b65c1ab86501b08a632eb';
改成了这样echo '25edfb22a4f469ecb59f1190150159c6baa2b9f27cbd1323f31ca51e37237de8'.($i).'5db79b134e9f6b82c0b36e0489ee08edbed06894275b65c1ab86501b08a632eb';这样改对吗 但是还是提示我拼接错误 为什么?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>'; };?>
哈哈可以了 我先好好看看你的代码
改这样
<?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>'; };?>