与下一个和以前

问题描述:

我想提出一个照相馆,您可以查看完整图片和我的Mysql图片库要 它通过在全尺寸图像具有一个和上一个按钮周期。 到目前为止,我设法使它工作,但我有一个问题,当我删除和 重新上传图像。与下一个和以前

问题是,当我打开该图像 被删除并重新上传,当我在图像上单击以全尺寸查看画廊 我的下一个按钮消失,只有前一个按钮,这需要你到 在画廊,然后下一个按钮,显示最近拍摄的,当你点击它,它把你 第一图像。

这里是我的表:

 
Gallery: id(int) primary key auto_increment, name varchar(255) 
Photos : id(int) primary key auto_increment, path varchar(255), gallery_id int 

的index.php:

<?php 
$query=mysqli_query($conn,"SELECT*FROM gallery"); 
while($row=mysqli_fetch_array($query)){ 
$gallery_name=$row['name']; 
$galleryid=$row['id']; 
echo "<a href='gallery.php?id=$galleryid'>$gallery_name</a><br>"; 

} 
?> 

Gallery.php:

session_start(); 

<div class="piccontainer"> 
<?php 
if(isset($_GET['id']) and is_numeric($_GET['id'])){ 
$id=$_GET['id']; 
}else{ 
echo "<script>window.location.href='index.php'</script>"; 
} 
$query=mysqli_query($conn,"SELECT*FROM gallery WHERE id='$id'"); 
while($row=mysqli_fetch_array($query)){ 
$gallery_name=$row['name']; 
echo "<h2>".$gallery_name."</h2>"; 
} 
$query=mysqli_query($conn,"SELECT*FROM photos WHERE gallery_id='$id'"); 
echo "<div><a class='nazad' href='index.php'>Back</a></div><br><br>"; 
while($row=mysqli_fetch_array($query)){ 
$pic_id=$row['id']; 
$path=$row['path']; 
$_SESSION['galleryid']=$row['gallery_id']; 
echo "<div class='picholder'><a href='photo.php?id=$pic_id'><img src='uploads/$path' /></a></div>"; 
} 

?> 
</div> 

Photo.php:

session_start(); 

<div class="piccontent"> 
<?php 
if(isset($_SESSION['galleryid'])){ 
$back=$_SESSION['galleryid']; 
echo "<div><a class='nazad' href='gallery.php?id=$back'>Back</a></div><br><br> 
"; 
} 
?> 
<?php 
if(isset($_GET['id']) and is_numeric($_GET['id'])){ 
$id=$_GET['id']; 

}else{ 
echo "<script>window.location.href='index.php'</script>"; 
} 
?> 
<div id="links"> 
<?php 
$prevquery=mysqli_query($conn,"SELECT id FROM photos WHERE id<$id AND gallery_id='$gid'"); 
while($row=mysqli_fetch_array($prevquery)){ 
$prev=$row['id']; 
} 
$nextquery=mysqli_query($conn,"SELECT id FROM photos WHERE id>$id AND gallery_id='$gid'"); 
while($rw=mysqli_fetch_array($nextquery)){ 
$next=$rw['id']; 
} 
$nextbtn=(isset($next))?"<a href='photo.php?id=$next'>Next</a>":""; 
$prevbtn=(isset($prev))?"<a href='photo.php?id=$prev'>Prev</a>":""; 
echo $prevbtn." ".$nextbtn; 
?> 
</div> 
<?php 
$query=mysqli_query($conn,"SELECT*FROM photos WHERE id='$id'"); 
while($row=mysqli_fetch_array($query)){ 
$path=$row['path']; 


echo "<img src='uploads/$path' />"; 
} 
?> 
</div> 

帮助,将不胜感激

+0

单独这个'SELECT * FROM' - 这是不好的形式。 'SELECT * FROM' 2014-11-06 18:18:14

+0

旁注:你确实有'session_start();'封装在''标签里面,对吗?如果没有,那么。 – 2014-11-06 18:23:28

+0

是会话是另一套PHP标签的 – admir 2014-11-06 18:45:44

我想你需要一个ORDER BY和LIMIT 1取得一行:

$prevquery=mysqli_query($conn,"SELECT id FROM photos WHERE id<$id AND gallery_id='$gid' ORDER BY id DESC LIMIT 1"); 

请与ASC ORDER第二个查询类似。无论如何,这个语法是可怕的,并且对SQL注入是开放的。使用准备的语句!我也建议尝试嵌套子查询,其中您可以包含对上一张和下一张照片ID的查询。

+0

我想你的代码为$ prevquery和$ nextquery,结果是像我有这么far.I没有试过嵌套子查询一样的,因为我不知道应该怎样他们看着像是 – admir 2014-11-06 20:30:09