我正试图在循环中获取下一个图像,以便它们返回到图像列表的开头。我可以让图片从列表一直到最后一张图片,然后我的最后一张照片在链接上没有显示PID。
我有
<div id="photolistholder">
<?php if(isset($_GET['pid'])){?>
<?php
//Now we'll get the list of the specified users photos
$var =$_GET['pid'];
$sql = "SELECT * FROM coverphotos WHERE coverphoto_id='$var'";
$query = mysqli_query($mysqli,$sql)or die(mysqli_error($mysqli));
while($photo = mysqli_fetch_array($query)){
$user=rawfeeds_user_core::getuser($photo['coverphoto_userid']);
?>
<p class="frontpage_description"><a href="profile.php?username=<?php echo $user['username']; ?>">
<?php
$id=$_SESSION['id'];
if($user['id']){
echo "<img border='"0'" src='"userimages/cropped".$user['id'].".jpg'" onerror='this.src='"img/no_profile_img.jpeg'"' width='"40'" ><br/>".$user['fullname']."'s</a> Album: </p>";
}else{
echo "<img border='"0'" src='"userimages/cropped".$id.".jpg'" onerror='this.src='"img/no_profile_img.jpeg'"' width='"40'" ><br/>".$user['fullname']." </a></p>";
}
$id=$_SESSION['id'];
$var = $_GET['pid'] ;
$photo_sql = "SELECT coverphoto_id FROM coverphotos WHERE (coverphoto_id < ".$var." OR coverphoto_id > ".$var.") AND coverphoto_userid = ".$user['id']." ORDER BY coverphoto_id DESC LIMIT 1";
$photo_query = mysqli_query($mysqli,$photo_sql)or die(mysqli_error($mysqli));
$photo_prev=mysqli_fetch_array($photo_query);
if($photo_prev>1){
echo"<a href='coverimagephoto.php?pid=".$photo_prev['coverphoto_id']."'>Previous</a> | ";
}else{
echo " ";
}
$var = $_GET['pid'] ;
$photo_sqls = "SELECT coverphoto_id FROM coverphotos WHERE (coverphoto_id > ".$var." OR coverphoto_id < ".$var.") AND coverphoto_userid = ".$user['id']." ORDER BY coverphoto_id ASC LIMIT 1";
$photo_querys = mysqli_query($mysqli,$photo_sqls)or die(mysqli_error($mysqli));
$photo_next=mysqli_fetch_array($photo_querys);
if($photo_next>1){
echo "<a href='coverimagephoto.php?pid=".$photo_next['coverphoto_id']."'>Next</a>";
}else{
echo "";
}
$user1_id=@$_SESSION['id'];
$user2_id=$user['id'];
if($user1_id==@$_SESSION['id']){
echo " | <a href='include/photo_delete.php?pid=".$photo['coverphoto_id']."'>Delete</a>";
}else{
echo"";
}
?>
<center>
<?php
//echo "<div class='photo_captionholder'><b>Name</b> : ".$photo['photo_name']." | <b>Caption</b> : ".$photo['photo_caption']." |
//<b>Uploaded</b> : ".$photo['photo_datetime']."</div>";
echo "<img id='"coverimage'" border='"0'" src='coverimages/".$photo['coverphoto']."?".time()."' onerror='this.src='"coverimages/nocover.png'"'>";
}}
?>
</body>
我试过使用
$var = $_GET['pid'] ;
$photo_sql = "SELECT coverphoto_id FROM coverphotos WHERE (coverphoto_id > ".$var." OR coverphoto_id < ".$var.") AND coverphoto_userid = ".$user['id']."";
$photo_query = mysqli_query($mysqli,$photo_sql)or die(mysqli_error($mysqli));
$photo_next=mysqli_fetch_array($photo_query);
if($photo_next>1){
echo"<a href='coverimagephoto.php?pid=".$photo_prev['coverphoto_id']."'>Next</a> | ";
}else{
echo " ";
}
但这种联系只是在两个图像之间跳跃。图像不在1,2,3,4,5中,如果用户删除图像,则可以在图像PID 3或5上启动,则可以是1,2,4,5。
如果您只使用第一个查询,然后将所有结果提取到一个数组中,然后上下处理该数组,那么编码和理解并将查询(往返服务器)从N+1个查询减少到1个查询(其中N=(照片数)会不会简单得多
快速模型:
<div id="photolistholder">
<?php
if( isset($_GET['pid']) ) {
// validate the pid
$_GET['pid'] = some_validation_please($_GET['pid']);
$id=$_SESSION['id'];
$sql = "SELECT * FROM coverphotos WHERE coverphoto_id='$_GET['pid']'";
$result = mysqli_query($mysqli,$sql) or die(mysqli_error($mysqli));
$photos = array();
while($row = mysqli_fetch_array($result)){
$photos[] = $row;
}
foreach( $photos as $idx => $photo ) {
// add all your image html with the prev and next links
// using $idx-1 for prev image
// using $idx+1 for next image
// and checking if $idx = 0 for first image
// so you can use count($photos)-1 to know you are on last image
// so you use photos[0] as the next image to get continuous loop
// and if $idx == 0 next image is count($photos)-1
}
?>
很抱歉,我没有时间从你发布到浏览器的内容中挑出要点,因为我一定会犯一个愚蠢的错误,并为此受到困扰。
我已经找到了一种更好的方法,可以完美地工作。只需使用UNION
$var = mysqli_escape_string($_GET['pid']) ;
$photo_sql = "(SELECT coverphoto_id FROM coverphotos WHERE coverphoto_id < ".$var." AND coverphoto_userid = ".$user['id']." AND album=1 ORDER BY coverphoto_id DESC LIMIT 1)";
$photo_sql.= " UNION (SELECT coverphoto_id FROM coverphotos WHERE coverphoto_id > ".$var." AND coverphoto_userid = ".$user['id']." AND album=1 ORDER BY coverphoto_id DESC LIMIT 1)";
$photo_query = mysqli_query($mysqli,$photo_sql)or die(mysqli_error($mysqli));
$photo_prev=mysqli_fetch_array($photo_query);
if($photo_prev>1){
echo"<a href='coverimagephoto.php?pid=".$photo_prev['coverphoto_id']."'>Previous</a> | ";
}else{
echo " ";
}
$var = $_GET['pid'] ;
$photo_sqls = "(SELECT coverphoto_id FROM coverphotos WHERE coverphoto_id > ".$var." AND coverphoto_userid = ".$user['id']." AND album=1 ORDER BY coverphoto_id ASC LIMIT 1)";
$photo_sqls.= " UNION (SELECT coverphoto_id FROM coverphotos WHERE coverphoto_id < ".$var." AND coverphoto_userid = ".$user['id']." AND album=1 ORDER BY coverphoto_id ASC LIMIT 1)";
$photo_querys = mysqli_query($mysqli,$photo_sqls)or die(mysqli_error($mysqli));
$photo_next=mysqli_fetch_array($photo_querys);
if($photo_next>1){
echo "<a href='coverimagephoto.php?pid=".$photo_next['coverphoto_id']."'>Next</a>";
}else{
echo " ";
}