あなたの投稿はあまり明確ではありません。あなたが中に持っているトピックがそのトピックに投稿され、そのトピックに返信するかどうかはわかりません。
この場合、これは良い方法ではないと思います。トピックデータから投稿を分離する必要があります。説明させてください。
フォーラムは以下によって形成されます。
// MAIN PAGE, showing avaible forums
// |
// SPECIFIC FORUM, that show the threads (or topics) inside
// |
// POSTS that show part of the post related to that thread.
//
// USER_CP -------------- ADMIN_CP
少なくとも4つのテーブルが必要です(私はadmin_cpを考慮していません)。これらは:
// TOPICS:
// +---------------+---------+-------------+----------+----------+----------------+
// | ID, p.k. a.i. | TITLE | SUB_TITLE | AUTHOR | CLOSED | PARENT FORUM |
// +---------------+---------+-------------+----------+----------+----------------+
//
// These are very few basic field for the table. No reference about the posts here.
//
//
// FORUMS:
// +---------------+---------+-------------+--------------+
// | ID, p.k. a.i. | TITLE | SUB_TITLE | VISIBILITY |
// +---------------+---------+-------------+--------------+
//
// Almost clear, visibility is a value to determine if the forum is private (such are
// forums like: "Moderator rooms" or "Admin stuff"), protected (i.e. for non registered
// users, or if the forum is public.
//
//
// POSTS:
// +---------------+----------+-------+-----------+--------+---------+-------+- - -
// | ID, p.k. a.i. | TOPIC_ID | TITLE | SUB_TITLE | AUTHOR | MESSAGE | VOTES | ...
// +---------------+----------+-------+-----------+--------+---------+-------+- - -
//
// In Votes you have a integer number (positive o negative, no matter) with the total
// of the votes for this post (not useful if you fully use the table like).
//
// REPLIES
// +---------------+----------+---------+--------+---------+
// | ID, p.k. a.i. | TOPIC_ID | POST_ID | AUTHOR | MESSAGE |
// +---------------+----------+---------+--------+---------+
//
//
// USERS
// +---------------+------+------+------------+------+---------+- - - - -
// | ID, p.k. a.i. | NICK | PASS | PRIVILEGES | NAME | SURNAME | ETC..
// +---------------+------+------+------------+------+---------+- - - - -
//
// Privileges determinate if a user is admin, mod, super_mod or simple user
//
//
// LIKES
// +---------------+---------+---------+----------+----------+---------+------+
// | ID, p.k. a.i. | USER_ID | POST_ID | TOPIC_ID | REPLY_ID | UP_DOWN | DATE |
// +---------------+---------+---------+----------+----------+---------+------+
これは、私の意見では、使用する必要のある構造です。
ホームページ、すべてのフォーラムを表示します。
- ユーザーの権限を読み取る
- テーブルからフォーラムのデータを読む
WHERE visibility >= user_privileges
- 適切なリンクを各フォーラムに浸透させます。
フォーラムページ、すべてのトピック(およびモデレーター)を表示します。
- 表からトピックを読む
WHERE parent_forum = forum_id
- このフォーラムのモデレーターを読む
- 適切なリンクでトピックを浸透させる
- ページの下部にモデレーターを表示します。
トピックページ、すべてのメッセージを表示します。
- テーブルからtopiデータを読み取ります。
- トピックは最初のメッセージでもあります!
- テーブルから投稿を読む
WHERE topic_id = current_topic_id
- テーブル「LIKES」から読み取った投稿ごとに
WHERE post_id = selected_post
- すべての投票を合計する
- 適切なページと適切な投票で投稿を浸透させます。
ユーザーページ:
- すべてのデータを読み、
WHERE id = user_id_that_want
- 「いいね」から読む
WHERE user_id = actual_user
- ユーザーが送信したすべてのいいね/嫌いがあります。あなたがやりたいことをしなさい。
- 浸透する
このテーブル構造を使用すると、StackOverflowと同様の方法で投票を検討できます。つまり、投票者の場合、賛成票は0ですが、反対票は-1です。投稿ごとに、post_idを使用するだけで同様のテーブルから読み取ることができるため、投稿の投票数(上下)がわかります。これにより、投稿作成者に+10票、投稿に-5票に投票することもできます。作成者。
好きな追加のテーブルがある場合のみ。
あなたが持つことができます:
- トピックに投票する
- 投稿に投票する
- 返信に投票する
- トピックの合計投票数(返信+投稿+トピック)。
トピックを挿入すると、次のものが追加されます。
user_id
topic_id = topic id
post_id = -1 (this is not a post, is the topic!)
repl
y_id = -1(上記のとおり)
投稿を挿入するとき:
user_id
topic_id = current topic
post_id = post_id
reply_id = -1 (this is not a a reply)
返信を挿入するとき
user_id
topic_id = current topic
post_id = current post
reply_id = the reply id.
これにはidの問題はありません。3つが分かれているからです。
特定のトピックと特定の投稿のすべての回答を求める場合は、次を追加します。
WHERE topic_id = current, post_id = current
トピックの返信が必要な場合は、post_id=-1と入力してください。
等々。IDに問題はありません!
私はほとんどすべてを説明したと思います。ご不明な点がございましたら、お問い合わせください。編集:あちこちで何か