一個按字段查詢mysql分頁顯示出錯的問題,請大家幫忙


]剛開始學PHP 基礎<0,問個比較簡單的問題,大家不要笑
模糊查詢 數據庫名是ss 表名是nnss2  共有7條記錄,字段名為name3 字段下有很多個電話號碼,分頁顯示出現了些問題,具體情況如下:

查詢表單文件為:02.php 代碼如下:
[code=php][/code<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>查詢</title>
</head>
<form name="form2" method="POST" action="01.php">
          <p> 
            <input type="text" name="1">
          </p>
          <p>
            <input type="submit" name="button2" id="button2" value="按電話查詢">
          </p>
        </form>
</html>

接收表單文件為01.php 代碼如下
[code=php][/code<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>數據庫結果</title></head>
<body>

<hr>
<?php
if (!$con= mysqli_connect('127.0.0.1','root','123456')) die('數據庫選擇失敗!'); //連接服務器
if (!mysqli_select_db($con,"ss")) die('數據庫選擇失敗!');//選擇數據庫

$ii = $_POST['1'];//接受輸入值

//$ii= 130;

$pagesize = 2; // 每頁顯示多少條記錄

//$rowcount = 0; //總記錄有多少條

$rowcount=mysqli_num_rows(mysqli_query($con,"select * from nnss2 WHERE CONCAT (`name3`) LIKE '%$ii%'"));  // 按條件查詢的總記錄有多少條,條件是讀取表-nnss2 下的字段為'name3' 模糊查詢'%$ii%'的值
echo '共有'.$rowcount."條記錄";
$pagenow  = 1; //當前顯示第幾頁

if(!empty($_GET['pagenow'])){//接受pagenow的值
$pagenow = $_GET['pagenow'];
}

//$pagecount= 0; // 
$pagecount = ceil($rowcount/$pagesize);//一共有幾頁,ceil函數-總記錄除以每頁條數+1

$sql = "select * from nnss2 WHERE CONCAT(`name3`) LIKE '%$ii%' limit ".($pagenow-1)*$pagesize.",$pagesize"; //讀取表-nnss2 下的字段為'name3' 模糊查詢'%$ii%'的值,limit分頁條件是($pagenow-1)*$pagesize.",$pagesize 

//超鏈接打印
echo '共有'.$pagecount.'頁&nbsp;';
for($i=1;$i<=$pagecount;$i++){
echo "<a href='01.php?pagenow=$i'>第 $i 頁</a>&nbsp;";
}

$res = mysqli_query($con,$sql);
if($res == false){
echo '查詢無結果';
exit();
}

echo "<table border='1' width='1200px' ellspacing='0' cellpadding='1'>";
 echo " <tr>
    <td align='center' width='100px' height='30px'>日期</td>
    <td align='center' width='100px' height='30px'>姓名</td>
    <td align='center' width='100px' height='30px'>車牌號:</td>
    <td align='center' width='100px' height='30px'>電話:</td>
    <td align='center' width='100px' height='30px'>預約時間是:</td>
    <td align='center' width='200px' height='30px'>用戶留言:</td>
    <td align='center' width='100px' height='30px'>身份證正面照片</td>
    <td align='center' width='100px' height='30px'>身份證背面照片</td>
    <td align='center' width='100px' height='30px'>行駛證雙面照片</td>
    </tr>";

while($row=mysqli_fetch_assoc($res)){
$url1 = $row['file1'];
$url2 = $row['file2'];
$url3 = $row['file3'];
echo 
"<tr>
 <td align='center' width='100px' height='80px'>".$row['time'].'</td>'.
"<td align='center' width='100px' height='80px'>".$row['name1'].'</td>'.
"<td align='center' width='100px' height='80px'>".'桂'.$row['name2'].'</td>'.
"<td align='center' width='100px' height='80px'>".$row['name3'].'</td>'.
"<td align='center' width='100px' height='80px'>".$row['n'].'年'.$row['y'].'月'.$row['r'].'日'.'</td>'.
"<td align='center' width='200px' height='80px'>".$row['text'].'</td>'.

"<td align='center' width='100px' height='80px'>"."<a href='$url1'><img src=\"$row[file1]\" width='100px' height='80px'></img></a>".'</td>'.

"<td align='center' width='100px' height='80px'>"."<a href='$url2'><img src=\"$row[file2]\" width='100px' height='80px'></img></a>".'</td>'.

"<td align='center' width='100px' height='80px'>"."<a href='$url3'><img src=\"$row[file3]\" width='100px' height='80px'></img></a>".'</td>';
}
echo "</table>";
mysqli_close($con);
?>
</body>
</html>
問題圖片1

問題圖片2

情況是:如果接收表單中$ii=$_post[1] 時,第一次刷新頁面正常 能顯示多少條記錄,一旦點第N頁就出錯(圖1到圖2)目前按$ii=130的值應該nnss2表中只有4條符合條件,一旦點了“第N頁“ 就出現圖2的錯誤,不能按條件查詢,只能全部都顯示。
當$ii=130(隨意一個數字),就都正常,意思就是不通過表單提交過來就沒有問題。
麻煩各位幫看看哪里寫得不對。
我是新手 只有100分 麻煩大家了 ,如果可以有償教我也可以私信我,真心謝謝

7 个解决方案

#1


本帖最后由 fdipzone 於 2016-11-22 23:16:31 編輯
1.分頁應該加上搜索條件。
2.變量名應該易懂,用$ii不知道是什么,所以改成keyword

02.php 改為

<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>查詢</title>
</head>
<form name="form2" method="POST" action="01.php">
          <p> 
            <input type="text" name="keyword">
          </p>
          <p>
            <input type="submit" name="button2" id="button2" value="按電話查詢">
          </p>
        </form>
</html>



01.php 改為


<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>數據庫結果</title></head>
<body>

<hr>
<?php
if (!$con= mysqli_connect('127.0.0.1','root','123456')) die('數據庫選擇失敗!'); //連接服務器
if (!mysqli_select_db($con,"ss")) die('數據庫選擇失敗!');//選擇數據庫

$keyword = isset($_REQUEST['keyword'])? $_REQUEST['keyword'] : '';//接受輸入值

//$keyword= 130;

$pagesize = 2; // 每頁顯示多少條記錄

//$rowcount = 0; //總記錄有多少條

if($keyword){
    $rowcount=mysqli_num_rows(mysqli_query($con,"select * from nnss2 WHERE name3 LIKE '%$keyword%'"));  // 按條件查詢的總記錄有多少條,條件是讀取表-nnss2 下的字段為'name3' 模糊查詢'%$keyword%'的值
}else{
    $rowcount=mysqli_num_rows(mysqli_query($con,"select * from nnss2")); // 全部記錄
}

echo '共有'.$rowcount."條記錄";
$pagenow  = 1; //當前顯示第幾頁

if(isset($_GET['pagenow'])){//接受pagenow的值
$pagenow = $_GET['pagenow'];
}

//$pagecount= 0; // 
$pagecount = ceil($rowcount/$pagesize);//一共有幾頁,ceil函數-總記錄除以每頁條數+1

if($keyword){
    $sql = "select * from nnss2 WHERE `name3` LIKE '%$keyword%' limit ".($pagenow-1)*$pagesize.",$pagesize"; //讀取表-nnss2 下的字段為'name3' 模糊查詢'%$keyword%'的值,limit分頁條件是($pagenow-1)*$pagesize.",$pagesize 
}else{
    $sql = "select * from nnss2 limit ".($pagenow-1)*$pagesize.",$pagesize"; // 全部記錄
}

//超鏈接打印
echo '共有'.$pagecount.'頁&nbsp;';
for($i=1;$i<=$pagecount;$i++){
echo "<a href='01.php?pagenow=".$i."&keyword=".$keyword."'>第 $i 頁</a>&nbsp;";
}

$res = mysqli_query($con,$sql);
if($res == false){
echo '查詢無結果';
exit();
}

echo "<table border='1' width='1200px' ellspacing='0' cellpadding='1'>";
 echo " <tr>
    <td align='center' width='100px' height='30px'>日期</td>
    <td align='center' width='100px' height='30px'>姓名</td>
    <td align='center' width='100px' height='30px'>車牌號:</td>
    <td align='center' width='100px' height='30px'>電話:</td>
    <td align='center' width='100px' height='30px'>預約時間是:</td>
    <td align='center' width='200px' height='30px'>用戶留言:</td>
    <td align='center' width='100px' height='30px'>身份證正面照片</td>
    <td align='center' width='100px' height='30px'>身份證背面照片</td>
    <td align='center' width='100px' height='30px'>行駛證雙面照片</td>
    </tr>";

while($row=mysqli_fetch_assoc($res)){
$url1 = $row['file1'];
$url2 = $row['file2'];
$url3 = $row['file3'];
echo 
"<tr>
 <td align='center' width='100px' height='80px'>".$row['time'].'</td>'.
"<td align='center' width='100px' height='80px'>".$row['name1'].'</td>'.
"<td align='center' width='100px' height='80px'>".'桂'.$row['name2'].'</td>'.
"<td align='center' width='100px' height='80px'>".$row['name3'].'</td>'.
"<td align='center' width='100px' height='80px'>".$row['n'].'年'.$row['y'].'月'.$row['r'].'日'.'</td>'.
"<td align='center' width='200px' height='80px'>".$row['text'].'</td>'.

"<td align='center' width='100px' height='80px'>"."<a href='$url1'><img src=\"$row[file1]\" width='100px' height='80px'></img></a>".'</td>'.

"<td align='center' width='100px' height='80px'>"."<a href='$url2'><img src=\"$row[file2]\" width='100px' height='80px'></img></a>".'</td>'.

"<td align='center' width='100px' height='80px'>"."<a href='$url3'><img src=\"$row[file3]\" width='100px' height='80px'></img></a>".'</td>';
}
echo "</table>";
mysqli_close($con);
?>
</body>
</html>

#2


謝謝版主指教,按照您的方法修改 現在已經不報錯 但是還是出現 一旦點第N頁就會跳到總的記錄數.
如下圖 我隨便填個133

到01.php能正常顯示只有一個符合條件的記錄

但是一旦在這個頁面上點那個“第1頁”,就會跳轉到總記錄數,我是只想按要求比如填個133,只顯示這個字段符合條件的記錄

#3


我的問題類似這個 http://bbs.csdn.net/topics/380057988 有沒有大神幫看看 我該怎么改

#4


我試了一下  在接收文件01.php中 $keyword 設定為一個固定值 就不會出現 2樓不按條件查詢而顯示全部記錄的問題,一旦$keyword為接收02.php傳過來的值就出現上面說的問題,不知道怎么修改才合適,請大神指教

#5


截圖中沒有看到 keyword 在 url 中傳遞


for($i=1;$i<=$pagecount;$i++){
echo "<a href='01.php?pagenow=".$i."&keyword=". $keyword."'>第 $i 頁</a>&nbsp;";
}
$keyword 應為 $i

#6


//超鏈接打印
echo '共有'.$pagecount.'頁&nbsp;';
for($i=1;$i<=$pagecount;$i++){
echo "<a href='01.php?pagenow=".$i." &keyword=".$keyword."'>第 $i 頁</a>&nbsp;";
}

這個位置你沒有改吧,我看你訪問地址,都沒有傳keyword的

$keyword = isset($_REQUEST['keyword'])? $_REQUEST['keyword'] : '';//接受輸入值
echo $keyword; 

把keyword也打印出來看看

#7


引用 5 樓 xuzuning 的回復:
截圖中沒有看到 keyword 在 url 中傳遞


for($i=1;$i<=$pagecount;$i++){
echo "<a href='01.php?pagenow=".$i."&keyword=". $keyword."'>第 $i 頁</a>&nbsp;";
}
$keyword 應為 $i

感謝版主 問題就出來這里 十分感謝

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



有一個問題,請大家幫忙 請幫忙看看這句SQL, 實現分頁查詢, 但目前發現排序有問題,請大家幫忙.謝謝 一個消息反射的問題,請大家幫忙 一個很古怪的問題,請大家幫忙.... 一個令我頭痛的問題,請大家幫忙 急 一個關於DateTimePicker 的問題 請大家幫忙 請大家幫忙解決一個問題! 的一個問題!請大家幫忙啦!!請大家幫忙解決一個口令問題!糾結Hibernate ORACLE 分頁問題。請大家幫忙看下,為什么?
 
粤ICP备14056181号  © 2014-2020 ITdaan.com