2014-11-06 49 views
0

我想提出一個照相館,您可以查看完整圖片和我的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

回答

0

我想你需要一個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

相關問題