介绍一个比较通用的上一篇下一篇跳转的功能,其中$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>