页数定位超界了,比如:只有5页,却定位到了第6页上,当然取不到记录,显示错误supplied argument is not a valid MySQL result resource检查页面的页数定位是否正确。

解决方案 »

  1.   

    数组越标了
    检查数组的sizeof,当前纪录的位置
      

  2.   

    <table width="500"  border="0" cellpadding="0"cellspacing="0">
      <td width="20%"  bgcolor="#FFFFFF"> 留言人姓名</td>
        <td width="50%" bgcolor="#FFFFFF">留言标题</td>
        <td width="30%" bgcolor="#FFFFFF">留言时间</td>
    <?
    global $page;
    $mysql_db=mysql_connect("localhost","root","");
    mysql_select_db("libray",$mysql_db);
    $sql="select * from book ";
    $sql_result=mysql_query($sql);
    $number=mysql_num_rows($sql_result);
    $page_number=2;
                           

    $sql="select * from book limit $page,$page_number";
    $sql_result=mysql_query($sql);
    while($sql_row=mysql_fetch_array($sql_result))
    {        
    print("<tr>");
    print("<td>$sql_row[0]</td>");
    print("<td>$sql_row[1]</td>");
    print("<td>$sql_row[2]</td>");
    print("</tr>");
    }
    page_cleft($number,$page,$page_number);

    ?>
    </table>
    <?
    /****************分页函数********************/
    //$number总的记录数$page_number每页所要显的记录条数$page
    function page_cleft($number,$page,$page_number)
    {
     global $php_self;//最好定义为全局变量
     $page_forward=$page-$page_number;//前页...偏移量
     $page_back=$page+$page_number;//后 一页...偏移量
     $pages=ceil($number/$page_number);//总页数ceil(返回下一个整数)
     $page_nonce=ceil($page/$page_number)+1;//当前页
     $page_end=($pages-1)*$page_number;//末页...偏移量
     echo"<span style=\"font-size:9pt;\">";
     
     if($pages>1)
        {
        echo"页次".$page_nonce."/".$pages."";
        if($page_nonce!=1)
        echo"[<a href='$php_self?page=0'>首页</a>]"."[<a href='$php_self?page=$page_forward'>上 一页</a>]";
        else
        echo"[<font color=red>首页</font>]"."[<font color=red>上一页</font>]";
        echo"";
      if($page_nonce<=3)
         {$y=1;$z=5;}
      elseif($page_nonce>=$pages-2)
        {$y=$pages-4;$z=$pages;}
      else
        {$y=$page_nonce-2;$z=$page_nonce+2;}
      
      for($x=$y;(($x<=$z)and($x<=$pages));$x++)
         {
         if(($x!=$page_nonce)and($x>0))
         {
         $pagex=($x-1)*$page_number;
         echo"<a href='$php_self?page=$pagex'>$x</a>";      
         }
         elseif($x>0)
         echo"<font color=red>.$x.</font>";         
         }
        if($page_nonce<$pages)
        echo"[<a href='$php_self?page=$page_back'>下一页</a>]"."[<a href='$php_self?page=$page_end'>末页</a>]";
        else
        echo"[<font color=red>下一页</font>]"."[<font color=red>末页</font>]";
         }
        echo"</span>";
        }
    ?>                                                                  
      

  3.   

    上面是那个页面的完整代码!
    数据库可以查询,也可以实现分页,可就是要在第一次进入页面时报错
    我是刚开始学php的,真是把我弄痛了
      

  4.   

    再问一个问问题
    php传第参数到下一个页面是不是可以用session();
    可我不会用呀,所以我就用了下面这重苯的方法
    <a href="ui.php?temp=$temp&startyear=$startyear&startmonth=$startmonth&startday=$startday&endmonth=$endmonth&endday=$endday&endyear=$endyear"><?php echo ($server[$j][1]) ?></a>这种方法是不是能把上一个页面的参数传到ui.php这个页面呀
    我是不是写错了呀,就是传不过去
    我 在ui.php这个页面进行验证
     echo $startday;
     echo $startyear;
    看不到东东
    只有$startday$startyear
    值没有传过来;
      

  5.   

    看得头疼了~~~你检查一下$x、$y的值和其他计算出来的变量的值~~~看看有没有越界的~~SESSION很好用~~~session_start();
    $_SESSION["TEMP"]="TEMP";你用GET方法传递完后应该用$_GET["startday"]这样来取得变量~~~~直接$startday是不行的~~~除非你把register设置为ON,然后注册一下你的$startday变量~
      

  6.   

    我在第一个页面session_start();
    $_SESSION["startyear"]="startyear";我又在下一个页面(ui.php)
    session_start();
    $startyear=$_SESSION["startyear"];
    echo $startyear;出  现下面的错误
    Warning: session_start(): open(/tmp\sess_e30a43745bf19398076949f3a8124cb9, O_RDWR) failed: No such file or directory (2) in E:\myphp\yaan\filestat2.php on line 280Warning: session_start(): Cannot send session cookie - headers already sent by (output started at E:\myphp\yaan\filestat2.php:139) in E:\myphp\yaan\filestat2.php on line 280Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at E:\myphp\yaan\filestat2.php:139) in E:\myphp\yaan\filestat2.php on line 280
      

  7.   

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource 
    表示前面的查询出错而你的查询语句
    $sql="select * from book limit $page,$page_number";
    本身不错因此,你的问题在于$page没有初值。
    形如:select * from book limit ,20
    这样的查询肯定是要出错了
      

  8.   

    <?php
    // 建立数据库连接
    $link = mysql_connect("localhost", "mysql_user", "mysql_password") 
          or die("Could not connect: " . mysql_error()); 
    // 获取当前页数
    if( isset($_GET['page']) ){
       $page = intval( $_GET['page'] );
    }
    else{
       $page = 1;

    // 每页数量
    $PageSize = 10; 
    // 获取总数据量
    $sql = "select count(*) as amount from table";
    $result = mysql_query($sql);
    $row = mysql_fetch_row($result);
    $amount = $row['amount']; 
    // 记算总共有多少页
    if( $amount ){
       if( $amount < $page_size ){ $page_count = 1; }               //如果总数据量小于$PageSize,那么只有一页
       if( $amount % $page_size ){                                  //取总数据量除以每页数的余数
           $page_count = (int)($amount / $page_size) + 1;           //如果有余数,则页数等于总数据量除以每页数的结果取整再加一
       }else{
           $page_count = $amount / $page_size;                      //如果没有余数,则页数等于总数据量除以每页数的结果
       }
    }
    else{
       $page_count = 0;
    }// 翻页链接
    $page_string = '';
    if( $page == 1 ){
       $page_string .= '第一页|上一页|';
    }
    else{
       $page_string .= '<a href=?page=1>第一页</a>|<a href=?page='.($page-1).'>上一页</a>|';

    if( ($page == $page_count) || ($page_count == 0) ){
       $page_string .= '下一页|尾页';
    }
    else{
       $page_string .= '<a href=?page='.($page+1).'>下一页</a>|<a href=?page='.$page_count.'>尾页</a>';
    }
    // 获取数据,以二维数组格式返回结果
    if( $amount ){
       $sql = "select * from table order by id desc limit ". ($page-1)*$page_size .", $page_size";
       $result = mysql_query($sql);
       
       while ( $row = mysql_fetch_row($result) ){
           $rowset[] = $row;
       }
    }else{
       $rowset = array();
    }
    // 没有包含显示结果的代码,那不在讨论范围,只要用foreach就可以很简单的用得到的二维数组来显示结果
    ?>