0

うまく機能する次の前の画像リンクを作成しました。ただし、ユーザーが特定のアルバムで最後にアップロードした画像をヒットしたときに、両方を最初または最後にループバックしてほしいと思います。

そこで、アルバムIDが「22」の作成したアルバムをクリックしました。image243を押すと、アップロードされた画像(image101、image 202、image243)が内部にアップロードされます。アルバムの最初の画像image101に戻りたいのですが。

以前と同じように、Image101を押したときに、リンクをimage243に戻したいと思います。(自己説明)。

各ユーザーには独自のアルバムがあり、特定のユーザーがアップロードした画像の数に応じて、アップロードされた画像をさまざまなphoto_idで作成します。したがって、1、2、3、4の順序ではありません。新しい画像をウェブサイトにアップロードしたばかりの場合、次に利用可能なphoto_idとして244のphoto_idが作成され、別のアカウントの別のユーザーが自分のアカウントで私の直後に画像をアップロードした場合、その写真にはphoto_idが含まれます。以下のコードは私がこれまでに持っているものであり、次の前のコードは次のユーザーのアップロードされた画像にジャンプし、他のユーザーアカウントからアップロードされた画像を見逃します。最後の画像の後に空白のページが表示されないように、次と前の画像が必要です。

誰にも頭を悩ませることなく、これを明確に説明できたと思います。少しでも助けやアドバイスやアドバイスが得られたら、どんな質問にも喜んでお答えします。

ありがとう

ユーザーセットアルバム内の次/前のユーザー画像を選択するために使用されるコード

 <?php if(isset($_GET['pid'])){ ?>
<?php
//Now we'll get the list of the specified users photos

$sql = "SELECT * FROM userphotos WHERE photo_id=".$_GET['pid'];
$query = mysql_query($sql)or die(mysql_error());
while($photo = mysql_fetch_array($query)){
$user=rawfeeds_user_core::getuser($photo['photo_ownerid']);
?>
<p class="frontpage_description"><a href="profile.php?username=<?php echo $user['username']; ?>">
<?php 
$id=$_SESSION['id'];
if($id==$_SESSION['id']){
echo "<img border=\"0\" src=\"imgs/cropped".$id.".jpg\" onerror='this.src=\"img/no_profile_img.jpeg\"' width=\"40\" >";
}
            ?>

<?php echo $user['fullusersname'];?></a></p>
<?php
//Now we'll get the list of the specified users photos

    $sql = "SELECT id FROM albums WHERE user_id=".$user['id']." ORDER BY name ASC LIMIT 1 ";
    $query = mysql_query($sql)or die(mysql_error());


while($album = mysql_fetch_array($query)){ ?>

<?
$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);
print_r($photos);
// 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 "<div class='photo_captionholder'><b>Name</b> : ".$photo['photo_name']." | <b>Caption</b> : ".$photo['photo_caption']."</div>";
    echo "<img class='viewer_image' alt='".$photo['photo_name']."' width='60%'  src='";
    echo "include/media.userimage.php?pid=".$photos[$current];
    echo "'\">"; // 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>";
?>
<?php   
}}}
?>
4

3 に答える 3

1

状況に何も変化がない場合は、同じ質問を2回行うことはお勧めしません。ただし、ここで質問をより適切に文書化したので、例を使用して、より明確な回答を示し、それをどのように処理する必要があるかを示します。

$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>";
于 2012-07-13T09:11:55.453 に答える
1

説明:

「次の」クエリは、現在の画像の後にレコードを取得します。(つまり、レコード3は4,5,6を取得します)

コードはその結果から最初のレコードを取得します。(すなわち4)

UNIONクエリをPREVIOUSレコードに追加すると、そのレコードがクエリ結果の最後に配置されます。(すなわち、4,5,6、1,2)注:今のところ制限を無視します

最初のSELECTからレコードが返されない場合、最初のレコードは実際には結果の先頭になります(つまり、レコード6の場合、次は空で、その後に1.2が続くため、次のレコードは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 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)";

最初の。=に2番目のクエリを追加し、photo_idチェックを逆にした>は<になります

于 2012-07-13T09:18:28.047 に答える
0

この目的のために、私はクエリを作成しました。要件に応じて変更できるかどうかを確認します

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
于 2012-07-13T09:15:08.697 に答える