用户名 密码 记住我 还未注册?

文章管理 - xoops数据分页怎么用?

文章管理 :: Xoops 模块 :: 模块开发

xoops数据分页怎么用?


http://xoops.org.cn/modules/newbb/viewtopic.php?topic_id=8966
原作者:wenhsiang、scottlai
xoops 分页很简单,先用一个例子说明。后面是一个大概的流程。

说明:因为例子的后面的流程来自不同作者,所以不是完全匹配的。保持原文完整,我没有进行编辑。学习重在理解,理解了使用方法,就可以自己应用了。


////////////////////////////////////////////////////////////////////////////////


首先是例子


$start = (!isset($_REQUEST['start']))? '':$_REQUEST['start'];

if ($start=='') $start=0;

//前面2行照抄



$sql_query = "select * from ".$xoopsDB->prefix('XXXXXXX')." WHERE account='$account' ORDER BY date DESC ";//求总笔数用的

$total = mysql_num_rows(mysql_query($sql_query));

$result = $xoopsDB->query($sql_query) or die(mysql_error());

$page_num=30;//一页有30行

$nav = new XoopsPageNav($total,$page_num,$start);

$sql="select * from ".$xoopsDB->prefix('xxxxxx')." WHERE account='$account' ORDER BY date DESC LIMIT ".$start.",".$page_num;//有 LIMIT 用来分页



$arr = array();

while($rows = $xoopsDB->fetchArray($result)){

$arr[] = $rows;

}

$xoopsTpl->assign('show_data',$arr);// 秀出结果

$xoopsTpl->assign('page',$nav->renderNav());//显示 (1) 2 3 4 » 横式选择条 另一种是直式 $nav->忘记了





show_data.html

<{foreach from=$show_data item=data}>

<{$data.date}>

<{/foreach}>

<{$page}>



////////////////////////////////////////////////////////////////////////

下面是流程说明:


1. 参数初始化


$start = $_GET['start']; //起始数

$perPage = 5; //每页记录数



2. 生成查询条件

这一步我建议使用Criteria,为什么呢?因为xoopsDB的很多方法都支持这一种对象,而且是可以和SQL相对分离,易于移植。

$sql = "SELECT * FROM table ".$criteria->renderWhere();



3. 取得总记录数

$xoopsDB->getCount($criteria); //这就是为什么使用Criteria的原因了。



4. 获取记录

$xoopsDB->query($sql, $perPage, $start); //感谢XOOPS提供了这么好的query方法!

fetchRow()之类的不用我多说了吧。



5. 生成分页导航栏

include(XOOPS_ROOT_PATH."/class/pagenav.php"); //加载pagenav.php

$nav = new XoopsPageNav($productCount, $perPage, $start, "start", $extra_arg); //生成pagenav实例

$pagenav = $nav->renderNav(4); //生成pagenav的HTML代码



需要注意的地方:

1. 生成pagenav实例是,第4个参数是与参数初始化的$_GET['start']对应的,这个参数改变了,那初始化的时候也要变。

最后一个参数$extra_arg是附加参数,再于效果嘛,自己试一下就知道了。

2.renderNav($count)是指导航栏里面显示多少个页码。



6.往模板输出

这个也不用我多说吧。

$xoopsTpl->assign($pagenav); //这个少了你就不分翻页了


 

<< XOOPS 和 Discuz 论坛简易用户同步代码 Xoopslifetype功能简介(图文) >>
跟踪网址
  • 文章地址: http://xoops.org.cn/modules/article/view.article.php/c15/78
  • 跟踪地址: http://xoops.org.cn/modules/article/trackback.php/78
API: 工具箱 短消息 Email PDF 书签 打印 | RSS | RDF | ATOM
Copyright© shawnf69 & XOOPS CHINA
网友个人意见,不代表本站立场。对于发言内容,由发表者自负责任。
发表者 树状展开