2012-04-25 12 views
1

私は写真のページ付けをしなければなりません。ページネーション - 次/前のレコードの存在を確認する

< <実際のページではそのような何かであることを前の[PHOTO]次へ>>

Suposs: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; 
    } 
} 
?> 

感謝:)

+0

あなたの質問はここには表示されませんが、あなたの質問には '... WHERE photo_id> = 13 ORDER BY photo_id LIMIT 12'と書いてあります。そうすれば、それがあれば13で始まり、それ以外の場合は次の最高位から始まり、次の12レコードを取得します。 –

+0

唯一可能な注文はIDの降順ですか? –

答えて

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よりも大きいかどうかを確認する必要があります。いいえ、あなたは最後に達しました。

+0

私は分、感謝の友人でそれを試してみます。 –

+0

更新された回答:-)問題ありません。論理は大丈夫です。 – castor

0

データベース内の写真の枚数を最大にする必要があります。上限に達すると、nextリンクは表示されません。 さらに、写真のIDで改ページしないでください。 MySQLのLIMITオプションを確認してください。

1

私の意見では、これは実装上の欠陥です。 私は

photo.php?currentid=1&action=next 

(次回のために)クエリ文字列以下のそれはあなたのサイトがどのように動作するかに依存ヒマシ

0

で述べたように、あなたの選択のコールが何かになります。この方法をお勧めします。あなたは、画像が削除されたことを人々に知らせたいのですか?または静かにそれをスキップしますか?それをスキップしたい場合は、クエリを変更して、要求されたIDまたは次に高いIDを取得してください。あなたにも変数として方向を渡す場合、実際には、あなたはこの1つの問合せを保つことができる:

は、あなたがこの私たちのクエリを作り、?ID=13&nextを要求したとします

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

<の方向は、によって決定されるだろうURLで&nextまたは&backの存在:

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

は、私たちは方向変数に前方のデフォルトの検索方向を定義しています。 URLに&backがある場合は、それを尊重し、クエリの方向を逆にします。さもなければ、我々は常に要求されたID以上のイメージを楽しみにします。

いつものように、戻り値がmysql_num_rows()であることを確認して、結果にデータが存在することを確認してください。あなたのクエリーが次のイメージを探していても何も見つからなかった場合は、ギャラリーの最後/最初にいることをユーザーに伝えたいと思うでしょう。

関連する問題