一个按字段查询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

感谢版主 问题就出来这里 十分感谢
智能推荐

注意!

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



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告