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}>
<td><{$data.date}></td>
<{/foreach}>
<tr><{$page}></tr>
$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); //这个少了你就不分翻页了