利用楼主的分页类,在针对Postgresql的分页查询中正常实现
应用举例如下:
index.php<?php
include("pagec.php");  
$page=$_GET["page"]; //当前页码
echo $page."<br>";
if (empty($page)) $page=1;
echo $page."<br>";
//连接数据库
$dbconn = pg_connect("host=localhost port=5432 dbname=workflowj user=wfuser password=wfpass")
     or die("数据库不能连接。");
$result = pg_query("select * from users"); 
$total=pg_num_rows($result); 
//调用pagec类,每页显示2条信息 , 使用本页URL(默认,所以省略掉,还可以类似 list.php?id=1)。 
$obj=new pagec($total, '2', 'index.php'); 
echo "$obj->pagestart($page) is ".$obj->pagestart($page)."<br>";
$sql = "select * from users ORDER BY username LIMIT 2 OFFSET ".$obj->pagestart($page);
echo $sql."<br>";
$result = pg_query($dbconn, $sql);
while($row = pg_fetch_row($result)){ 
for ($j=0; $j < count($row); $j++) {
     echo "$row[$j]&nbsp;";
   }
  echo "<BR>";
}
echo $obj->pageindex($page);//输出分页导航
?>感谢楼主的分享!

解决方案 »

  1.   

    谢谢各位给面子~ 刚开始还不敢发, 怕被你们菜我。-------------------------------------------
    回复人: wangguan007(张) ( ) 信誉:100 
    引用得很对。不过有多个参数的时候,( 如 index.php?h=2) 有点bug
      

  2.   

    /**
    * C_page Class

    * 获得页面详细信息,显示分页
    *
    * @author aiiiq
    * @website http://www.aiiiq.com/
    * @email [email protected]
    * @today 5:18 05-9-9
    */
    class C_page
    {
    var $cur_page; //当前页
    var $rows_per_page; //每页显示几行
    var $sql; //查询语句
    var $sum_pages; //总页数
    var $sum_rows; //总记录数
    var $url; //地址栏参数
    var $cur_row; //当前页首条记录 /**
    * 获得页面信息
    *
    * Usage Example:
    * $thepage = new C_page;
    * $sql = "SELECT id FROM $notes_table WHERE type=2";
    * $rows_per_page = 5;
    * $thepage->f_page_detail("SELECT id FROM $notes_table WHERE type=2", 5);
    * echo "总页数: " . $thepage->sum_pages;
    */
    function f_page_detail ( $sql, $rows_per_page )
    {
    $result = mysql_query($sql) or die ('Query failed: ' . mysql_error());
    $this->sum_rows = mysql_num_rows($result);
    $this->sum_pages = ceil($this->sum_rows / $rows_per_page);
    $this->cur_page = $_GET['page']; //从地址栏得到需要显示的页
    if ($this->cur_page == '' || $this->cur_page < 1)
    {
    $this->cur_page = 1;
    }
    else if ($this->cur_page > $this->sum_pages)
    {
    $this->cur_page = $this->sum_pages;
    } $this->cur_row = ($this->cur_page - 1) * $rows_per_page;
    } /**
    * 显示分页
    *
    * Usage Example:
    * $thepage = new C_page;
    * $sql = "SELECT id FROM $notes_table WHERE type=2";
    * $thepage->f_page_display($sql, 5, "dir_list.php?");
    *
    * 调用:f_page_detail ( $sql, $rows_per_page )
    * 输出:第1页 共4页 首页 尾页 上一页 下一页
    */
    function f_page_display ( $sql, $rows_per_page, $url )
    {
    $this->f_page_detail ( $sql, $rows_per_page ); //调用函数,获得页面信息 printf ("第%s页 \n", $this->cur_page);
    printf ("共%s页 \n", $this->sum_pages);
    printf ("共%s条记录 \n", $this->sum_rows); if ($this->cur_page > 1)
    {
    printf ("<a href='%spage=1'>首页</a>\n", $url);
    }
    else
    {
    printf ("首页 \n");
    } if ($this->cur_page < $this->sum_pages)
    {
    printf ("<a href='%spage=%s'>尾页</a>\n", $url, $this->sum_pages);
    }
    else
    {
    printf ("尾页 \n");
    } if ($this->cur_page > 1)
    {
    printf ("<a href='%spage=%s'>上一页</a>\n", $url, $this->cur_page - 1);
    }
    else
    {
    printf ("上一页 \n");
    } if ($this->cur_page < $this->sum_pages)
    {
    printf ("<a href='%spage=%s'>下一页</a>\n", $url, $this->cur_page + 1);
    }
    else
    {
    printf ("下一页 \n");
    }
    }
    }?>
      

  3.   

    我到现在还是抵制把分页和数据库操作结合起来。。但是有别的更好的方法吗?
    -------------------
    $page  当前页
    $pagecount  总页数
    $url        地址就用这三个参数就可以了。$pagecount,$page,$url 是主函数给它。它只格式化输出。
    我的想法。
      

  4.   

    代码,我就不贴了
    方法,我用过两个
    第一个,就是根据SQL语句得到数据limit ,显示分面
    第二个就是把得到记录集,但根据记录集分页