3

ページごとに10個のページ付けのコメントシステムがあります。コメントへのパーマリンクを作りたいです。ページ番号を指定したり、過度に大きなクエリや処理を行ったりすることなく、コメントがどのページにあるかをスクリプトに認識させたいと思います。したがって、たとえば、5ページのコメントへのリンクは、コメントページ5でブラウザを開き、コメントに#scrolledします(独自のページにコメントを表示するのではありません)。

私は2つのmysqlクエリを使用することを考えていました。1つはすべてのCommentIdをSELECTし、次にphpを使用array_searchして結果内の位置を見つけ、そこからどのページに表示されるかを計算できました。2番目のクエリは、必要なコメントのページを取得します。プルするコメントIDがたくさんある場合は特にそうですが、これは非常に非効率的なようです。

誰かがより簡単またはより効率的な方法を提案できますか?

4

2 に答える 2

3

1ページあたりのコメント数がわかっていて、それが変わらない場合は、MySQLから数えることができるはずです。ブラウザのパーマリンクにcomment_idが含まれている場合は、次のようになります。

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

次に、PHPでこの数値を使用すると、データベースで検索して表示するページを計算できます。

于 2012-04-23T18:30:35.087 に答える
3

これはすべてSQLを使用して非常に簡単に実行できます。これcomment_idは、何らかの形式の自動インクリメント番号であると仮定すると、正確なページが返されるはずです。

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

もちろん、これは「フラットコメント」(親子関係なし)を前提としています。明らかに、$comments_per_pageは各ページに表示されるコメントの数(これは一定である可能性があります)で$entry_idあり、コメントが作成されたブログ/フォーラムの投稿を参照し、$comment_idはあなたが探しているコメントです。

于 2012-04-23T18:31:15.720 に答える