我是多表联合查询然后 做的一个列表按发布时间显示出来,如果不分页的话,全部数据能正常显示出来,做了分页之后,翻到第二页或者后面几页中间总是少了几条数据,本人刚入门,希望能尽可能详细的列出修改代码!!
//下面是分页代码
$ppp=2;//每页显示多少条数据
$page=max($_GET['page'],1);//当前是第几页
$begin=($page-1)*$ppp;//从第几页开始
$uid = 1;//取UID为1的用户数据
$num=
DB::result_first('select COUNT(displayorder >= 0) from '.DB::table('forum_thread').' WHERE '.DB::field('authorid',$uid))
+
DB::result_first('select COUNT(status = 1) from '.DB::table('lianxi_data').' WHERE status=1 and '.DB::field('uid',$uid));//统计总记录数,将数据库lianxi_data和forum_thread一起统计
//分页
$multi =multi($num,$ppp,$page,'/newlist.php');
//取数据库lianxi_data的数据
$lianxidatas=DB::fetch_all('select * from '.DB::table('lianxi_data').' where '.DB::field('uid',$uid).' and status=1 order by dateline DESC limit %d,%d',array($begin,$ppp));
//循环数据库lianxi_data的数据
$listx=$vidsx=array();
foreach($lianxidatas as $k=>$v){
$listx[$v['vid']]['id']=$v['vid'];
$vidsx[]=$v['vid'];
$listx[$v['vid']]['title']=$v['title'];
$listx[$v['vid']]['dateline']=$v['dateline'];
}
//取数据库forum_thread的数据
$newthreads=DB::fetch_all('select * from '.DB::table('forum_thread').' where '.DB::field('authorid',$uid).' and displayorder >= 0 order by dateline DESC limit %d,%d',array($begin,$ppp));
//循环数据库forum_thread的数据
$list1=$tids=array();
foreach($newthreads as $k=>$v){
$list1[$v['tid']]['id']=$v['tid'];
$tids[]=$v['tid'];
$list1[$v['tid']]['title']=$v['subject'];
$list1[$v['tid']]['dateline']=$v['dateline'];
}
将数据库lianxi_data和数据库forum_thread联合
$lists=$listx+$list1;
$datelines=array();
foreach($lists as $k=>$v){
$lists[$k]['cover']=$v['cover']?$v['cover']:'';
$datelines[$k]=$v['dateline'];
}
arsort($datelines);//按时间倒序排序
$tvlist=array();
$ii==0;
foreach($datelines as $k=>$v){
$tvlist[]=$lists[$k];
$ii++;
if($ii>=$ppp)break;
}
**HTML页面**
{loop $tvlist $tv}
<ul>
<li>标题:{tv[title]}</li>
</ul>
{/loop}
/*分页*/
<div class="pagenav">$multi</div>