介绍一个比较通用的上一篇下一篇跳转的功能,其中$new_id是当前浏览的文章id,而$arr是所有的文章ID的数组,详细代码如下
//得到上一篇文章的id,如果没有的话就返回0
public function getpreid($news_id,$arr){
$len=count($arr);
$pre_id=$news_id;
if($pre_id==1){
return 0;
}else{
for ($i=1; $i <$len ; $i++) {
$pre_id=$pre_id-1;
if(in_array($pre_id,$arr)){
break;
}
}
return $pre_id;
}
}
//得到上一篇文章的id,如果没有的话就返回0
public function getnextid($news_id,$arr){
$len=count($arr);
$next_id=$news_id;
$last = array_search(max($arr), $arr);
if($next_id==$arr[$last]){
return 0;
}else{
for ($i=1; $i <$len ; $i++) {
$next_id=$next_id+1;
if(in_array($next_id,$arr)){
break;
}
}
return $next_id;
}
}
还有一种方法是mysql语句查询方法,这种方法更精炼
//产品详情
public function productdetail(){
$id=$_GET['id'];
//上一条
$presql= "select id,title from dvl_product where id < '$id' order by id desc limit 0,1";
$preArr = $this->productModle->query($presql);
//下一条
$nextsql= "select id,title from dvl_product where id > '$id' order by id asc limit 0,1";
$nextArr = $this->productModle->query($nextsql);
$productArr=$this->productModle->where('id='.$id)->relation(true)->order('time asc')->select();
$srcArr=explode('%',$productArr[0]['pic']);
$this->assign("srcarr",$srcArr);
$this->assign("arr",$productArr);
$this->assign("prearr",$preArr);
$this->assign("nextarr",$nextArr);
$this->display();
}
//渲染页面
<notempty name="prearr">
<li><a href="{:U('Index/productdetail',array('id'=>$prearr[0]['id']))}">上一条 :{$prearr[0].title}</a></li>
</notempty>
<notempty name="nextarr">
<li><a href="{:U('Index/productdetail',array('id'=>$nextarr[0]['id']))}">下一条:{$nextarr[0].title}</a></li>
</notempty>