1

画像の URL やその他のデータを保存するデータベースがあり、それらをギャラリーに表示したいのですが、サイトが公開されているため、いくつかの画像を削除したい場合があります。ユーザーが画像ソースとタイトルをアップロードすると、データベースに挿入され、自動インクリメントの一意の ID が付けられます。現在のスクリプトは、ID に 1 を加算または減算するだけで、次または前の画像を表示します。これを行うより良い方法はありますか?私の現在のスクリプト:

function image_control($id){
$next=$id+'1';
$prev=$id-'1';
$query = "SELECT MAX(id), MIN(id) FROM mp_images";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
    $max = $row['MAX(id)']; $min = $row['MIN(id)'];
}
if($next==$max+"1"){$next=$min;} if($prev==$min-"1"){$prev=$max;}
echo "<a href='".$next."'>Next Image</a> <a href='".$prev."'>Previous Image</a>";
}

この失敗の例は、ID が 3、4、5、7、8 のイメージです。

4

1 に答える 1

5

次の ID を取得するための擬似コード:

$nextId = SELECT id FROM mp_images WHERE id > $currentId ORDER BY id ASC LIMIT 1
if ( no results )
  // no next image

前の場合:

$prevId = SELECT id FROM mp_images WHERE id < $currentId ORDER BY id DESC LIMIT 1
if ( no results )
  // no previous image

次の画像がない場合 (たとえば、最初の画像を取得できます)、または前の画像がない場合 (最初の画像にいる場合) は、あなた次第です。

于 2012-05-21T19:51:17.303 に答える