2012-04-23 14 views
3

私は、ページごとに10ページ分のコメントシステムを持っています。私はコメントにパーマリンクを作りたい。私は、スクリプトがページ番号を指定せずに過度に大きなクエリや処理をせずに、コメントがどのページにあるかを把握できるようにしたいと考えています。したがって、たとえば、5ページ目のコメントへのリンクは、コメントページ5でブラウザを開き、コメントを(自分のページにコメントを表示するのではなく)スクロールします。ページ区切りコメントシステムのコメントの「ページ」番号の検索方法は?

私は2つのmysqlクエリを使用すると考えていました.1つはすべてCommentIdを選択し、次にarray_searchを入力して結果の位置を見つけて、どのページを計算できるかを調べました。 2番目のクエリでは、コメントのページが必要になります。これは非常に効率が悪いと思われますが、とりあえず多くのコメントがあります。

もっと簡単で効率的な方法はありますか?

答えて

3

それはすべてがcomment_idは自動インクリメント数のいくつかの形式であると仮定すると、SQLとかなり簡単に行うことができ、これは正確なページを返す必要があります親子関係はありません)。明らかに、$comments_per_pageは各ページに表示されるコメント数です(これは単なる定数かもしれません)。$entry_idはコメントが投稿されたブログ/フォーラム投稿を指し、$comment_idはあなたのコメントです。

+0

お返事いただきありがとうございます。 – Jargonaut

3

ページあたりのコメント数を知っていて変更されない場合は、MySQLから数えることができます。あなたは、ブラウザのパーマリンクしている場合は、それにcomment_idを持っているようなものになるだろう:PHPでこの番号の後

select 
    count(*) 
from 
    comments c 
where 
    comment_id < $comment_id 
and 
    topic_id = $topic_id -- or whatever 

、あなたが検索し、データベースに表示するページを計算することが可能であろう。 (もちろん

SELECT FLOOR(COUNT(*)/$comments_per_page) FROM COMMENTS 
    WHERE ENTRY_ID = $entry_id AND comment_id < $comment_id; 

が、これは「フラットなコメント」を前提としています

関連する問題