include("conn.php");function pager($rows,$page_size){ 
global $page,$select_from,$select_limit,$pagenav; 
$page_count = ceil($rows/$page_size); 
if($page <= 1 || $page == '') $page = 1; 
if($page >= $page_count) $page = $page_count; 
$select_limit = $page_size; 
$select_from = ($page - 1) * $page_size.','; 
$pre_page = ($page == 1)? 1 : $page - 1; 
$next_page= ($page == $page_count)? $page_count : $page + 1 ; 
$pagenav .= "第 $page/$page_count 页 共 $rows 条记录 "; 
$pagenav .= "<a href='?page=1'>首页</a> "; 
$pagenav .= "<a href='?page=$pre_page'>前一页</a> "; 
$pagenav .= "<a href='?page=$next_page'>后一页</a> "; 
$pagenav .= "<a href='?page=$page_count'>末页</a>"; 
$pagenav.=" 跳到<select name='topage' size='1' onchange='window.location=\"?page=\"+this.value'>\n"; 
for($i=1;$i<=$page_count;$i++){ 
if($i==$page) $pagenav.="<option value='$i' selected>$i</option>\n"; 
else $pagenav.="<option value='$i'>$i</option>\n"; } 
} ///////////////////////////// 利用pager函数计算出 $select_from 从哪条记录开始检索、$pagenav 输出分页导航 
$countsql="select * from manager where 0=0";
  if ($_POST[chinaname]!=""){ 
      $countsql=$countsql." and chinaname like '%$_POST[chinaname]%'";
  }
  if ($_POST[Tel]!=""){ 
      $countsql=$countsql." and Tel like '%$_POST[Tel]%'";
  }
$rows = mysql_num_rows(mysql_query($countsql)); 
$page = $_GET['page'];
pager($rows,2); 
$sql = "select * from manager where 0=0"; 
  if ($_POST[chinaname]!=""){ 
  $sql=$sql." and chinaname like '%$_POST[chinaname]%'";
  }
  if ($_POST[Tel]!=""){ 
  $sql=$sql." and Tel like '%$_POST[Tel]%'";
  }
  $sql=$sql." limit $select_from $select_limit";
  
  echo $sql;
$rst = mysql_query($sql); while($row=mysql_fetch_array($rst)){现在的问题是当我模糊查询没有结果的时候,limit 这里显示的语句就是 limit -2,2
想现在这样的问题,应该在呢么解决呢

解决方案 »

  1.   

    其实就是 while($row=mysql_fetch_array($rst)){ 就是这句报错了,我想就应该是数据库中没有结果,但是我在网上抄的分页,也不能应为没有数据limit 里面出 -2,2 这样的结果啊
      

  2.   

    if($page<= 1 || $page == '') $page = 1; 
    if($page >= $page_count) $page = $page_count; //这两行修改成下面的$page=min(max(1,$page),$page_count);
      

  3.   

    加上逗号:
     $sql=$sql." limit $select_from,$select_limit";
      

  4.   

    不加模糊查询时有没有问题? 
    echo $select_from; //输出多少
      

  5.   

    正确,默认是0,点击下一页跟的数字都是正确的。加上条件进行查询,只要查询没有结果的就是-2,
    select * from manager where 0=0 and chinaname like '%123%' limit -2, 2
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\wamp\www\test\UserList.php on line 137
      

  6.   

    $page_count = ceil($rows/$page_size); 
    没有结果的时候$rows为0,得到的$page_count 也等于0,所以下面的
    $select_from = (0 - 1) * 2   $select_from就得到-2了
    你可以在后面加个判断  $page_count为0的时候 不加limit子句
      

  7.   

    我刚刚弄好了,我们的想法一样,谢谢$select_from = ($page - 1) * $page_size.','; 
    if ($select_from>0){
    $select_from=($page - 1) * $page_size.','; 
    }else{
    $set_from=0;
    $select_from=$set_from.',';
    }我是这样弄的,大概测试了一下,好像是没有什么问题了
      

  8.   

    $set_from=0;
    $select_from=$set_from.',';不好意思在问个问题,我真的不知道php的连接符是什么,上述我用了2个语句才写好,应该一句就可以写出来
    $select_from=0.',';这样写不对,我也不知道怎么写
      

  9.   

    $select_count=($page - 1) * $page_size<0?0:($page - 1) * $page_size;
    $select_from = $select_count.',';这样就可以了