用smarty做网站,最近遇到这样一个问题,就是一张张的图片翻页(上一页,下一页)问题。图片的名字存数据库中,图片id为主键,设为自动递增的。当点击页面“下一页”的时候链接到下一页,动态传递变量(图片id)调用下一张图片。但是,后台管理的时候有可能会删除一些图片,使得数据库中图片id不连续,那循环读出的时候,怎样将图片按id递增的顺序读出来呢?
php中代码:
 $row=$GLOBALS['db']->getone("SELECT * FROM ".$db_prefix."project where project_id='$id'");
  if($row){
      $project['id']=intval($row['project_id']);//图片id
   $project['up_id']=intval($row['project_id']+1);
   $project['down_id']=intval($row['project_id']-1);   
   $project['pro_name']=$row['proj_name'];
   $project['pro_pic']=$row['proj_pic'];//图片名称
   $project['pro_declare']=$row['proj_declare'];
   $project['pro_class']=$row['proj_class'];//图片所属类型,总共有两类图片
     
}  
$smarty=new smarty();smarty_header();
$smarty->assign('project',$project);
        $smarty->display('projectdetail.html');projectdetail.html中代码:
<!--{if $project.id==$max}-->
第一页
<!--{else}-->
<a href="projectdetail.php?id=<!--{$project.up_id}-->&type=0>" >上一页</a>
<!--{/if}-->
<!--{if $project.id==$min}-->
最后一页
<!--{else}-->
<a href="projectdetail.php?id=<!--{$project.down_id}-->&type=0">下一页</a>
<!--{/if}-->
由于主键id设为自动递增的,如果这时数据库中有图片被删除,id就不连续了,$project['up_id']跟$project['down_id']就可能链接不到正确的图片

解决方案 »

  1.   

    对于不连续的id,你不能简单的
    $project['up_id']=intval($row['project_id']+1);
    $project['down_id']=intval($row['project_id']-1);    
    而是要查询出 project_id 上下各一条(共3条)记录来处理
      

  2.   

    有点没明白,这个时候在html页面怎么来查询呢
      

  3.   

    我主要就是想问这点,这里$project['up_id']=intval($row['project_id']+1);
    $project['down_id']=intval($row['project_id']-1);怎么来写呢?
      

  4.   

    我有想过就是在删除一条记录的时候,我就将比当前删除的id大的id挨个减1,如:"update project set project_id=project_id-1 where project_id>'$project_id'";可是执行之后没有反应,不知道是不是设置了id为自动递增的原因
      

  5.   

    传递一个真实的id不就行了。有了id,取啥都行
      

  6.   

    取三条
    id,id前的,id后的
      

  7.   

    对,不要使用 +1, -1 这种方法
    直接查当前记录的上一个id是多少,下一个id是多少。
      

  8.   

    上一条:select * from table where id < 当前id order by id desc limit 1;下一条:select * from table where id > 当前id order by id asc limit 1;
      

  9.   

    http://w3cschool.cn/php_file_upload.html
      

  10.   

    谢谢各位额,尤其是jordan102,非常感谢