与下一个和以前
问题描述:
我想提出一个照相馆,您可以查看完整图片和我的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>
帮助,将不胜感激
答
我想你需要一个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
单独这个'SELECT * FROM' - 这是不好的形式。 'SELECT * FROM' 2014-11-06 18:18:14
旁注:你确实有'session_start();'封装在''标签里面,对吗?如果没有,那么。 – 2014-11-06 18:23:28
是会话是另一套PHP标签的 – admir 2014-11-06 18:45:44