0

次と前の画像リンクを作成しました。これはうまく機能します。しかし、両方とも最初または最後にループバックしたいと思います。たとえば、image101、image 202、image243 があるとします。image243 をヒットすると、image101 に戻ります。

前と同じように、Image101 をクリックすると、リンクが image243 に戻るようにしたいと思います。(自明)。

どうすればこれを行うことができますか?

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

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


                    <?php
                $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_query = mysql_query($photo_sql)or die(mysql_error());
                $photo_next=mysql_fetch_array($photo_query);



echo "<a href='photo.php?pid=".$photo_next['photo_id']."'>Next</a>";



                $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_query = mysql_query($photo_sql)or die(mysql_error());
                $photo_prev=mysql_fetch_array($photo_query);

                    echo " | <a href='photo.php?pid=".$photo_prev['photo_id']."'>Prev</a>";

}


?>
4

3 に答える 3

1

なぜPHPからそれをしないのですか? これらの不要な MySQL クエリをすべて使用する代わりに、写真 ID を取得して PHP を使用できます。

$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);

$current = 2; // whatever your position is in the photo array

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

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

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

簡単に説明すると、モジュロを使用して正しい次のページを取得します。前のページを取得すること自体が物語っています。ゼロを下回る場合は、$total number of photos を使用します。

このように使用すると、データベースに関して、これらすべての大小比較クエリよりもはるかに効率的です。

于 2012-07-12T13:03:40.843 に答える
0

次のように、最初の画像へのリンクを追加できます。

$photo_sql = "SELECT MIN(photo_id) FROM userphotos WHERE photo_ownerid = ".$user['id']
$photo_query = mysql_query($photo_sql)or die(mysql_error());
$photo_first =mysql_fetch_array($photo_query);
echo "<a href='photo.php?pid=".$photo_first['photo_id']."'>First</a>";

もちろん、MAX を使用して最後の写真を取得することもできます。

于 2012-07-12T11:28:37.957 に答える
0

これにより、次のエントリが表示されますが、最初のエントリも表示されます。つまり、NEXT がない場合は最初のエントリが表示されます。

$photo_sql = "SELECT photo_id FROM userphotos WHERE photo_id > ".$_GET['pid']." AND photo_ownerid = ".$user['id']."  ORDER BY photo_id ASC LIMIT 1 ";
$photo_sql. = "UNION SELECT photo_id FROM userphotos WHERE photo_ownerid = ".$user['id']." ORDER BY photo_id ASC LIMIT 1 ";

次に、前に ORDER BY photo_id DESC で UNION を実行します

于 2012-07-12T11:32:23.497 に答える