Home >Backend Development >PHP Tutorial >翻页有关问题

翻页有关问题

WBOY
WBOYOriginal
2016-06-13 10:12:36904browse

翻页问题
用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中代码:

第一页

上一页


最后一页

下一页

由于主键id设为自动递增的,如果这时数据库中有图片被删除,id就不连续了,$project['up_id']跟$project['down_id']就可能链接不到正确的图片

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

探讨

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

------解决方案--------------------
探讨

引用:

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

传递一个真实的id不就行了。有了id,……

------解决方案--------------------
上一条:select * from table where id
下一条:select * from table where id > 当前id order by id asc limit 1;
------解决方案--------------------
http://w3cschool.cn/php_file_upload.html
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn