Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 下一个/上一个图像(按用户id和照片id)_Php_Mysql_Arrays_Image_Image Gallery - Fatal编程技术网

Php 下一个/上一个图像(按用户id和照片id)

Php 下一个/上一个图像(按用户id和照片id),php,mysql,arrays,image,image-gallery,Php,Mysql,Arrays,Image,Image Gallery,我已经创建了一个下一个和上一个图像链接,效果非常好。但我希望它们都能在用户点击给定相册中最后一张上传的图像时循环回到开始或结束 所以我点击了我创建的相册,相册id为'22',点击了image243后,我上传了我上传的图像-image101、Image202和image243。我想让它回到相册的第一张图片image101 我想对上一个做同样的操作,当我点击Image101时,我希望链接返回到image243。自我咒骂 每个用户都有自己的相册,他们在相册中创建上载的图像,其中包含各种照片id,具体取

我已经创建了一个下一个和上一个图像链接,效果非常好。但我希望它们都能在用户点击给定相册中最后一张上传的图像时循环回到开始或结束

所以我点击了我创建的相册,相册id为'22',点击了image243后,我上传了我上传的图像-image101、Image202和image243。我想让它回到相册的第一张图片image101

我想对上一个做同样的操作,当我点击Image101时,我希望链接返回到image243。自我咒骂

每个用户都有自己的相册,他们在相册中创建上载的图像,其中包含各种照片id,具体取决于给定用户上载的图像数量。所以它不是1,2,3,4的顺序。 如果我刚刚上传了一张新图片到网站上,它将创建一个照片id 244,因为这是下一个可用的照片id,如果另一个帐户中的另一个用户直接在我之后在他们的帐户下上传一张图片,他们的照片将有一个照片id 245。 下面的代码是我到目前为止的代码,下一个和上一个跳转到下一个用户上传的图像,忽略了其他用户帐户上传的任何图像。我只需要下一个和上一个,不要在最后一张图片后点击空白页

我希望我已经解释清楚了,不会让任何人头痛。如果我能得到一些帮助/建议或指导,我乐意回答任何问题

谢谢

用于在用户集相册中选择下一个/上一个用户图像的代码


如果你的情况没有改变,建议不要问同一个问题两次。然而,您在这里更好地记录了您的问题,因此这里有一个更清晰的答案,并举例说明您必须如何处理它:

$photo_sql = "SELECT photo_id FROM userphotos WHERE photo_ownerid = ".$user['id']." AND album_id=".$album['id']." ORDER BY photo_id ASC"
$photo_result = mysql_query($photo_sql) or die(mysql_error());
while($row=mysql_fetch_array($photo_result)) {
   $photos[]=$row[0];
}
$total = mysql_num_rows($photo_result);

// Testing example:
// $photos = array(200, 202, 206, 211);
// $total = count($photos);

$current = $_GET['pid']; // whatever your position is in the photo array

if($current > ($total-1) || $current < 0) {
    echo "Error: nonexistent photo ID.";
    exit;
}

echo '<img src="images/'.$photos[$current].'.png" alt="my image!" />'; // display current photo

$next = ($current+1) % $total; // modulo
$prev = (($current-1) < 0) ? $total-1 : $current -1;

echo "<a href='photo.php?pid=".$next."'>Next</a>";
echo " | <a href='photo.php?pid=".$prev."'>Prev</a>";

为此,我写了一个查询。看看是否可以根据您的要求进行更改

select
  users_id as ID,
  (select  users_id from users where users_id > ID limit 1) as NextID,
  (select  users_id from users where users_id < ID ORDER BY users_id DESC limit 1) AS PreviousID
from users
where users_id = 1
说明:

下一个查询将获取当前图像之后的记录。ie记录3将获得4,5,6

您的代码从该结果中获取第一条记录。ie 4

将联合查询添加到以前的记录会将该记录放在查询结果的末尾。ie 4,5,6,1,2注:暂时忽略限制

如果第一次选择没有返回任何记录,那么第一条记录实际上将位于结果的顶部,即记录6的next为空,后跟1,2,因此next记录为1

下一个

先前的

$photo_sql = "(SELECT photo_id FROM userphotos WHERE photo_id < ".$_GET['pid']." AND photo_ownerid = ".$user['id']." AND album_id=".$album['id']." ORDER BY photo_id DESC LIMIT 1)";
$photo_sql.= " UNION (SELECT photo_id FROM userphotos WHERE photo_id > ".$_GET['pid']." AND photo_ownerid = ".$user['id']." AND album_id=".$album['id']." ORDER BY photo_id DESC LIMIT 1)";

我已经将第二个查询添加到第一个查询中。=并使用相同的问题将photo_id checking>再次变为hello。根据我之前的回答,向您添加一个联合查询prev和next查询,以便提取的第一条记录将是next,如果没有next,则为first。我回答您时没有回答..它们是您代码中的一个错误..并且不起作用!如果你回答了,我就不用再问了。我想我会让我的问题更深入!没什么对你不利的,好吧。我会把这个给你的。非常感谢。我知道发两次帖子不是最好的做法。所以我就继续这个。我道歉!我感谢你的帮助。你应该得到比你更多的代表。photo.php?pid=0会给你这个错误吗?在这种情况下,请尝试打印\u r$photos并查看其中是否有任何内容。这是它打印的内容->数组[0]=>200[1]=>201[2]=>202在这种情况下,photo.php?pid=0无法打印该错误。你做错了什么,或者误解了PHP。你能不能把它简单地说一遍。。看看是否一切都在正确的地方,它应该是如何请?我已经用其他代码更新了顶部的代码!在下一步中,我发现您的SQL语法中有一个错误;查看与您的MySQL服务器版本对应的手册,以了解在第1Ah行的“从userphotos中选择photo_id,其中photo_id<201和photo_ownerid=”附近使用的正确语法!在测试之前需要一个空间。您需要选择。。。联盟精选…先生,你是个天才。谢谢你。它起作用了。就这么简单,需要什么!非常感谢你的时间和耐心。
$photo_sql = "(SELECT photo_id FROM userphotos WHERE photo_id > ".$_GET['pid']." AND photo_ownerid = ".$user['id']." AND album_id=".$album['id']." ORDER BY photo_id ASC LIMIT 1)";
$photo_sql.= " UNION (SELECT photo_id FROM userphotos WHERE photo_id < ".$_GET['pid']." AND photo_ownerid = ".$user['id']." AND album_id=".$album['id']." ORDER BY photo_id ASC LIMIT 1)";
$photo_sql = "(SELECT photo_id FROM userphotos WHERE photo_id < ".$_GET['pid']." AND photo_ownerid = ".$user['id']." AND album_id=".$album['id']." ORDER BY photo_id DESC LIMIT 1)";
$photo_sql.= " UNION (SELECT photo_id FROM userphotos WHERE photo_id > ".$_GET['pid']." AND photo_ownerid = ".$user['id']." AND album_id=".$album['id']." ORDER BY photo_id DESC LIMIT 1)";