2012-05-21 109 views
1

我有一个数据库存储图像URL和其他数据,我想要一个画廊来显示他们,但因为该网站是公开的,我可能想删除一些图像。当用户上载图片来源和标题时,它会使用自动增量唯一ID插入到数据库中。当前脚本仅添加或减去ID以显示下一个或上一个图像。有没有更好的方法来做到这一点? 我当前的脚本:PHP从MySQL获取下一个结果

function image_control($id){ 
$next=$id+'1'; 
$prev=$id-'1'; 
$query = "SELECT MAX(id), MIN(id) FROM mp_images"; 
$result = mysql_query($query) or die(mysql_error()); 
while($row = mysql_fetch_array($result)){ 
    $max = $row['MAX(id)']; $min = $row['MIN(id)']; 
} 
if($next==$max+"1"){$next=$min;} if($prev==$min-"1"){$prev=$max;} 
echo "<a href='".$next."'>Next Image</a> <a href='".$prev."'>Previous Image</a>"; 
} 

这种失败的一个例子是图像,其中ID是3,4,5,7,8。

+3

请不要使用古老的'mysql_ *'函数编写新代码。他们不再被维护,社区已经开始[弃用流程](http://goo.gl/KJveJ)。相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定,[本文](http://goo.gl/3gqF9)将有助于选择。如果你关心学习,[这里是一个很好的PDO相关教程](http://goo.gl/vFWnC)。 – vascowhite

+0

vascowhite是正确的,但他的文章的链接了解更多不是很有帮助。我发现[这个stackoverflow的答案](http://stackoverflow.com/questions/13569/mysqli-or-pdo-what-are-the-pros-and-cons)更多的信息。 –

回答

5

用于获取下一个ID的一些伪代码:

$nextId = SELECT id FROM mp_images WHERE id > $currentId ORDER BY id ASC LIMIT 1 
if (no results) 
    // no next image 

和以前:

$prevId = SELECT id FROM mp_images WHERE id < $currentId ORDER BY id DESC LIMIT 1 
if (no results) 
    // no previous image 

这是给你做什么,如果没有下一个图像(你可以为实例获取第一张图片)或没有之前的图片(您位于第一张图片上)。

+0

你能告诉我如何在休息之后获取下一张图片吗? 例如如果7和8失踪,我将如何取9? –

+1

什么突破?我不明白你的意思... –

+0

我刚刚告诉过你。我的伪代码就是这样! –