私はしばらくの間答えを探していましたが、答えが見つからないようです..私はここの誰かが助けてくれることを願っています.ネストされた/スレッド化されたコメントの、およびユーザーが1,000を超えるコメントを持っている可能性がある場合、1つのページにすべてのコメントを表示する必要はありません..私が私ができるようにそれをしなければなりません。
これが私のMySQLテーブルです(まだリリースされていない新しいテーブルなので、必要に応じて変更できます)
CREATE TABLE IF NOT EXISTS `comments_threaded` (
`id` bigint(255) NOT NULL AUTO_INCREMENT,
`toUid` bigint(255) NOT NULL,
`fromUid` bigint(255) NOT NULL,
`Pid` bigint(255) NOT NULL,
`Puid` bigint(255) NOT NULL,
`Pseen` int(2) NOT NULL,
`seen` int(2) NOT NULL,
`comment` text NOT NULL,
`tim` int(20) NOT NULL,
`Pip` varchar(30) NOT NULL,
PRIMARY KEY (`id`),
KEY `toUid` (`toUid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
id = 自動増加したコメントの id
toUid = 対象のプロファイル/ユーザー
fromUid = コメントの送信者
Pid = 親 id の id..
Puid = 親 id のユーザー id 番号
Pseen = 親の場合ユーザーがコメントを見た見た
= toUid がコメントを見た場合コメント = fromUid が残したコメント
tim = 残された時間
Pid
= 人の ip
とにかく、ユーザープロファイルにコメントを付けようとしています。そこでは、返信したい場合は、前の/親のコメントへの返信でネストされています。
ページ上のコメントの量も 10 または 20 に制限したいと思います。この数には、ネストされたコメントも含まれます。
たとえば、ページ 1 に 10 個のコメントが必要な場合
comment 1
--comment 2 replied to comment 1
--comment 3 replied to comment 1
----comment 4 replied to comment 3
------comment 5 replied to comment 4
comment 6
--comment 7 replied to comment 6
--comment 8 replied to comment 6
comment 9
--comment 10 replied to comment 9
次に、2 ページ目で、最初のコメントが別のコメントへの返信である場合、そのページに 10 個のコメントしか保持できない場合は、返信された元の親コメントから開始します。追加のコメントを上部に表示するか、1 ページ目の下部に追加のコメントを表示しても問題ありません。どちらが簡単かはわかりません。
comment 9
--comment 10 replied to comment 9
----comment 11 replied to comment 10
----comment 12 replied to comment 10
--comment 13 replied to comment 12
comment 13
comment 14
--comment 15 replied to comment 14
--comment 16 replied to comment 14
----comment 17 replied to comment 16
----comment 18 replied to comment 17
--comment 19 replied to comment 17
comment 20
MySQL の IN 句でこれができると思っていましたが、エラーが発生しました.." 試してみました -
SELECT id, fromUid, Pseen, seen, comment, tim
FROM comments_threaded
WHERE toUid = '".mysql_real_escape_string($toUid)."'
OR Pid IN (
SELECT id, fromUid, Pseen, seen, comment, tim
FROM comments_threaded
WHERE toUid = '".mysql_real_escape_string($toUid)."'
)
LIMIT 10
そして得ている
Operand should contain 1 column(s)
今まで見たことがない..
ご覧いただきありがとうございます。