解决方案 »

  1.   

    没有看到你处理传入的 offset
      

  2.   

    $offset = isset($_GET['pid'])?intval($_GET['pid']):1;
    if(!$offset) $offset = 1;开头就处理了啊
      

  3.   

    参考了下往上的,现在修改如下:<?php
    $offset = isset($_GET['ofset']) ? intval($_GET['offset']) : 1;
    if(!$offset) $offset = 1;echo "the current page: $offset<br />";//测试语句$perpage = 30; //每页显示30条目信息$offset = ($offset-1)*$perpage;
    $db = NEW PDO("mysql:host=localhost; port = 3306; dbname =library", 'root', 'cai123');
    $total = $db->query('SELECT COUNT(*) FROM library.messages')->fetchColumn(0); //获取信息的总数
    $sql = "SELECT * FROM library.messages LIMIT $offset, $perpage";
    $result = $db->query($sql);
    if ($result)
    {
    foreach ($result->fetchAll() as $row)
    {
    echo "subject:    ".$row[5]."<br />";
    }
    }
    else
    {
    $error = $db->errorInfo();
    echo "error happened..".$error[2];
    exit();
    }$numpage = ceil($total/$perpage);
    if($total%$perpage) $numpage++;//计算可以显示为numpage页if ($numpage > 1)
    {
    for ($i = 1; $i <= $numpage; $i++)
    {
    if ($i == $offset) //如果是当前页
    {
    echo "$i";
    }
    else
    {
    //echo "<a href ='". htmlentities($_SERVER['PHP_SELF'])."?offset=$i'".">$i</a>  ";
    echo "<a href = '"."http://127.0.0.1/php/example/setPage02.php?offset=$i'>$i</a>  ";
    }
    }
    }当我点击显示第20页的内容时,测试信息显示的还是第一页,但是我获取的是:$_GET['offset']没有错啊,怎么不论点那一页都显示是第一页?如下图,我点的是第20页。浏览器地址栏显示: http://127.0.0.1/php/example/setPage02.php?offset=20
    但echo "the current page: $offset<br />"; 显示的还是第一页。 
    怎么回事?
      

  4.   

    42 行有 ...setPage02.php?offset=$i'>$i....
    而第 2 行是 $offset = isset($_GET['ofset']) ? intval($_GET['offset']) : 1;知道问题在哪了吧?
      

  5.   


    哈哈哈,,,,我已经被自己打败了,看来我还是要换编辑工具了,这么明显的拼写差异没发现,害得我好一顿纠结...THX
      

  6.   

    现在初学,我是在windows环境下,平时一直都是用EditPlus编辑工具,这么明显的差异就这么放过去了,由衷的蛋碎》