1

写真のページネーションを行う必要があります。

<< 前へ [PHOTO] 次へ >>

実際のページが次のようなものであるとします。www.myWebSite.com/photo.php?id=12

を押すNextと にリダイレクトされますwww.myWebsite.com/photo.php?id=13が、 の写真がid=13データベースから削除された場合、どうすればよいですか?

例えば:

<?php

require_once '../classes/dataBaseManager/ImageDataBaseManagr.php';

if ( isset ( $_GET ['id'] ) ) {
  $id = $_GET ['id'];
  /**
  * Initialize my data base class.
  */
  try {
    $dataBase = ImageDataBaseManager::connect();
    $select = $dataBase->select( array ( 'id' => $id );
    $previous = (int)($select ['id'] - 1);
    $next = (int)($select ['id'] + 1);
    $photo = $select ['path'];
    echo '<a href="http://www.myWebSite.com/photo.php?id='.$previous.'">Previous</a>';
    echo '<img src="'.$path.'" />';
    echo '<a href="http://www.myWebSite.com/photo.php?id='.$next.'">Previous</a>';
  }
  catch ( PDOException $e ) {
    error_log( $e->getMessage );
    return;
  } 
}
?>

ありがとう :)

4

4 に答える 4

1

私の意見では、これは実装の欠陥です。次のクエリ文字列をお勧めします(次の場合)

 photo.php?currentid=1&action=next 

このようにして、選択呼び出しはキャスターによって言及されたようなものになります

于 2012-04-25T14:06:14.807 に答える
0

それはあなたのサイトがどのように機能するかに依存します。画像が削除されたことを他の人に知らせたいですか?または黙ってそれをスキップしますか?スキップする場合は、クエリを変更して、要求されたIDまたは次に高いIDを取得します。実際、方向を変数として渡す場合は、次の1つのクエリを保持できます。

あなたがリクエストしたとしましょう。?ID=13&nextこれを私たちのクエリにします。

SELECT foo, bar FROM images WHERE id >= 13 ORDER BY id ASC LIMIT 1

の方向は、URLの存在またはURL内<で決定されます。&next&back

$direction = isset( $_GET['back'] ) ? '<' : '>' ;

方向変数に進むデフォルトの検索方向を定義しています。URLにが存在する場合&back、それを尊重し、クエリの方向を逆にします。それ以外の場合は、要求されたID以上の画像を常に楽しみにしています。

そしていつものようmysql_num_rows()に、結果にデータが含まれているかどうかの戻り値を確認してください。クエリが次の画像を探していたのに何も見つからなかった場合は、ギャラリーの最後/最初にいることをユーザーに通知する必要があります。

于 2012-04-25T14:15:50.040 に答える
0

現在のページ ID があり、次の既存の ID を取得したい。したがって、次のようなクエリを作成します。

SELECT id FROM `table` WHERE `id` > \"$current_id\" ORDER BY `id` ASC LIMIT 1

これで問題が解決するはずです。

以前の写真を検索するときは、次のクエリを使用します。

SELECT id FROM `table` WHERE `id` < \"$current_id\" ORDER BY `id` DESC LIMIT 1

mysql_num_rows()が0 より大きいかどうかも確認する必要があります。そうであれば、次のレコードがあります。いいえの場合は、最後に到達しました。

于 2012-04-25T14:02:58.117 に答える
0

データベース内の最大数の写真を取得する必要があり、最大数に達した場合はnextリンクを表示しないでください。さらに、写真の ID でページネーションを行うべきではありません。LIMITMySQLのオプションを確認します。

于 2012-04-25T14:03:55.170 に答える