查询后得到的列表,
再用分页函数分页操作,
可是一按下一页,搜索的结果就没了,必须重新点击查询按钮才会再显示出来。
这个应该怎么办?
<form id="form2" name="form2" method="post" action="<?=$_SERVER['../PHP_SELF'];?>">
所要查询的物品名称或设备编码:
<input name="txtSearch" type="text" id="txtSearch" />
<input name="btnSearch" type="submit" id="btnSearch" value="查询" onclick="showHint();" />
</form>
<DIV style="BORDER: black 2px solid; OVERFLOW: scroll; WIDTH: 620px; SCROLLBAR-DARKSHADOW-COLOR: #000000; HEIGHT: 150px" align=center>
  <table width="600" border="0" align="center">
  <tr>
<td width="35" bgcolor="#CCCCCC">&nbsp;</td>
<td bgcolor="#CCCCCC">物料编号</td>
<td bgcolor="#CCCCCC">名称</td>
<td bgcolor="#CCCCCC">型号</td>
<td bgcolor="#CCCCCC">价格</td>
<td bgcolor="#CCCCCC">适用机型</td>
<td bgcolor="#CCCCCC">类别</td>
  </tr>
  <?php

if($_POST['btnSearch']){
$search = $_POST['txtSearch'];
$sql = "select * from material where Mat_name like '%$search%' or Mat_mode like '%$search%'";
echo $sql;
$_SESSION['sql']=$sql;
$page = page($db,$_SESSION['sql'],4);
while($row = mysql_fetch_array($page[0])){
?>
  <tr>
<td width="40">
    <input type="radio" name="rb_id" value="<?=$row['Mat_id'].",".$row['Mat_price']?>" onclick="getID();"/> </td>
<td><?=$row['Mat_id']?></td>
<td><?=$row['Mat_name']?></td>
<td><?=$row['Mat_mode']?></td>
<td><?=number_format($row['Mat_price'],2)?></td>
<td><?php if($row['Mat_availableMode']=='') echo "无"; else echo $row['Mat_availableMode'];?></td>
<td><?php if($row['Mat_category']==0) echo "耗材"; else if($row['Mat_category']==1) echo "电脑"; else echo "其他设备";?></td>
  </tr>
<?php
  }
}
?>
<tr><td height="20" colspan="7" bgcolor="#CCCCCC"><?=$page[1]?></td>
</tr>
</table>
</DIV>

解决方案 »

  1.   

    那是因为点击下一页搜索的条件未保存~你可以在分页函数中加一个参数 $id :比如:?page='.$page.'&'.$id后再到你的HTML页面设置这个变量:
    global $id;
    $id = 'txtSearch='.$_POST['txtSearch'];
    这样就可以了,实现点击下一页,搜索的条件依旧存在
      

  2.   

    在分页链接处传参,页面上部接收,再构造SQL语句。
      

  3.   

    分页函数为function page($db,$sql,$pagesize,$class="")
      {
    $result=mysql_query($sql);
    $number=mysql_num_rows($result);//总记录数
    if(!$number){return 0;exit;}
    $totalpage=ceil($number/$pagesize);

      //接收页码数
      
       $pageno=(int)$_GET['page'];

    //校验页码数的有效性
       $pageno=$pageno<=1?1:$pageno;
    $pageno=$pageno>=$totalpage?$totalpage:$pageno;

    //计算起始记录数
    $startrow=($pageno-1)*$pagesize;
    $sql.=" limit $startrow,$pagesize";
    $result=mysql_query($sql);
    $num=mysql_num_rows($result)!=$pagesize?mysql_num_rows($result):$pagesize;
    $num=$num+$startrow-1;

    $url=$_SERVER["PHP_SELF"];

    if($pageno==1) $str= '首页 | 上页 | ';
    else  $str=  '<a href="'.$url.'?page=1&'.$class.'">首页</a> | <a href="'.$url.'?page='.($pageno-1).'&'.$class.'">上页</a> | ';
    if($pageno==$totalpage) $str.=  "下页 | 末页 ";
    else  $str.= '<a href="'.$url.'?page='.($pageno+1).'&'.$class.'">下页</a> | <a href="'.$url.'?page='.$totalpage.'&'.$class.'">末页</a>';
    $str.= "共 $totalpage 页 当前第 $pageno 页 位于第 $startrow 条至 $num 条记录"; return array($result,$str);
    }然后HTML页面里改成 global $class;
    if($_POST['btnSearch']){
    $class = $_POST['txtSearch'];
    $sql = "select * from material where Mat_name like '%$class%' or Mat_mode like '%$class%'";
    echo $sql;
    $page = page($db,$sql,4,$class);还是不对啊?哪里改错了嘛?
      

  4.   


    function page($db,$sql,$pagesize)
      {
        global $class;
        $result=mysql_query($sql);
        $number=mysql_num_rows($result);//总记录数
        if(!$number){return 0;exit;}
        $totalpage=ceil($number/$pagesize);
        
      //接收页码数
      
          $pageno=(int)$_GET['page'];
        
        //校验页码数的有效性
          $pageno=$pageno<=1?1:$pageno;
        $pageno=$pageno>=$totalpage?$totalpage:$pageno;
        
        //计算起始记录数
        $startrow=($pageno-1)*$pagesize;
        $sql.=" limit $startrow,$pagesize";
        $result=mysql_query($sql);
        $num=mysql_num_rows($result)!=$pagesize?mysql_num_rows($result):$pagesize;
        $num=$num+$startrow-1;
        
        $url=$_SERVER["PHP_SELF"];
        
        if($pageno==1) $str= '首页 | 上页 | ';
        else  $str=  '<a href="'.$url.'?page=1&'.$class.'">首页</a> | <a href="'.$url.'?page='.($pageno-1).'&'.$class.'">上页</a> | ';
        if($pageno==$totalpage) $str.=  "下页 | 末页 ";
        else  $str.= '<a href="'.$url.'?page='.($pageno+1).'&'.$class.'">下页</a> | <a href="'.$url.'?page='.$totalpage.'&'.$class.'">末页</a>';
    $str.= "共 $totalpage 页 当前第 $pageno 页 位于第 $startrow 条至 $num 条记录";    return array($result,$str);
    }[code=HTML]
    global $class;
    $class= 'txtSearch='.$_POST['txtSearch'];
        
        if($_POST['btnSearch']){
            $class = $_POST['txtSearch'];
            $sql = "select * from material where Mat_name like '%$class%' or Mat_mode like '%$class%'";    
            echo $sql;
            $page = page($db,$sql,4);
    [/code]
      

  5.   

    HTML如下,应该可以global $class;
    $class= 'txtSearch='.$_POST['txtSearch'];
        
        if($_POST['btnSearch']){
            $search = $_POST['txtSearch'];
            $sql = "select * from material where Mat_name like '%$search %' or Mat_mode like '%$search %'";    
            echo $sql;
            $page = page($db,$sql,4);
      

  6.   

    其实第一次搜索是$_POST,然后翻页就是$_GET,,,所以代码这样改  if($_REQUEST['btnSearch']){
            $class = $_REQUEST['txtSearch'];
            $sql = "select * from material where Mat_name like '%$class%' or Mat_mode like '%$class%'";    
            echo $sql;
            $page = page($db,$sql,4,$class);
    这样查询的条件就不会丢失了。不过这个参数要过滤
      

  7.   

    再看看下面的,刚刚忘了传入参数global $class;
    $class= 'txtSearch='.$_POST['txtSearch'];
        
        if($_POST['btnSearch']){
            $search = $_POST['txtSearch'] ? $_POST['txtSearch'] : $_GET['txtSearch'] ;
            $sql = "select * from material where Mat_name like '%$search %' or Mat_mode like '%$search %'";    
            echo $sql;
            $page = page($db,$sql,4);
      

  8.   


    看了你的代码,你还是没弄清楚。你搜索要执行的话,要什么条件呢?按照你写的
    1.$class= 'txtSearch='.$_POST['txtSearch'];// 这个只有第一次才有翻页之后,这里有值吗?改为$_REQUEST["txtSearch"]
    2.
    if($_POST['btnSearch']){
    //这里只有提交表单才可以执行,翻页之后这里能执行吗? 
    }
    这样改:
    global $class;
    $keyword=$_REQUEEST['txtSearch'];
    $class= "txtSearch=$keyword";
        
        if($keyword){
           // $search = $_POST['txtSearch'] ? $_POST['txtSearch'] : $_GET['txtSearch'] ;
            $sql = "select * from material where Mat_name like '%$keyword%' or Mat_mode like '%$keyword%'";    
            echo $sql;
            $page = page($db,$sql,4);
      

  9.   

    对,好像没有值传过来,这样改应该有值了global $class;
    $class= 'action='.$_SERVER['../PHP_SELF'].'&txtSearch='.$_POST['txtSearch'];
        
        if($_GET['action'] == $_SERVER['../PHP_SELF']){
            $search = $_POST['txtSearch'] ? $_POST['txtSearch'] : $_GET['txtSearch'] ;
            $sql = "select * from material where Mat_name like '%$search %' or Mat_mode like '%$search %'";    
            echo $sql;
            $page = page($db,$sql,4);
      

  10.   


    $_SERVER['../PHP_SELF']....这样的写法没见过啊!难道我落后了?
      

  11.   

    又看错了,这样改应该没错
    <form id="form2" name="form2" method="post" action="<?=$_SERVER['../PHP_SELF'];?>?action=search">global $class;
    $class= 'action=search&txtSearch='.$_POST['txtSearch'];
        
        if($_GET['action'] == 'search'){
            $search = $_POST['txtSearch'] ? $_POST['txtSearch'] : $_GET['txtSearch'] ;
            $sql = "select * from material where Mat_name like '%$search %' or Mat_mode like '%$search %'";    
            echo $sql;
            $page = page($db,$sql,4);
      

  12.   

    还是错误的,,,,翻页后关键字会丢失所以你得注意这个接参的方式//$class= 'action=search&txtSearch='.$_POST['txtSearch']; 
    $class= 'action=search&txtSearch='.$_REQUEST['txtSearch']; 
    //$_REQUEST 默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组。 
      

  13.   

    闲来无事,帮你整理一下吧。<form id="form2" name="form2" method="post" action="?action=search">
    //some code here$class= 'action=search&txtSearch='.$_REQUEST['txtSearch'];if($_REQUEST['txtSearch']&&$_GET["action"]=="search")
    {
    $sql = "select * from material where Mat_name like '%$_REQUEST['txtSearch']%' or Mat_mode like '%$_REQUEST['txtSearch']%'";    
          
            $page = page($db,$sql,4);
    //some code here
    }
      

  14.   

    点击下一页的时候把你要查询的这个字段txtSearch的值传到下一页去,直接GET接值,传到要查询的SQL语句里就行了。祝你好运。
      

  15.   


    自己动动脑子啊
    if($_REQUEST['txtSearch']&&$_GET["action"]=="search")
    {
    $sql = "select * from material where Mat_name like '%$_REQUEST['txtSearch']%' or Mat_mode like '%$_REQUEST['txtSearch']%'";    
        
    //some code here
    }
    else
    {$sql = "select * from material"; 
    }
      

  16.   

    想问下,如果搜索的内容有两个或者三个?应该怎么做?
    比如有两个文本框,一个id=search1,另一个id=search2
    sql语句就位$sql = "select * from material where Mat_name like '%$search1%' and Mat_mode like '%$search2%'";