PHPコメント返信

WBOY
リリース: 2016-06-23 14:39:39
オリジナル
2395 人が閲覧しました

この投稿の最終編集者は haoren026 2013-12-15 21:12:03 です

この質問が非常に初歩的なものであることは承知しています。 。私も多くの投稿を検索しましたが、どれも非常に面倒、またはそれを達成するのに十分な能力がありません。

問題は次のとおりです:
コメント返信機能を実装したいと考えています。要件は高くありません。訪問者はコメントに返信できません。コメント返信。それはとても簡単です。

オンラインメソッドのデータテーブル構造の多くは以下の通りです:
id: コメント ID
pid: 返信コメント ID
content: コメント内容

コメントレコードと返信の間に複数の行がある場合に知りたいレコード、どうすればいいですか? 返信レコードを見つける方法は次のとおりです。

id pid
1 0
2 0
3 1 //返信とコメントは数行で区切られています
4 0

この問題は非常に難しいですSQLのソートと再編成で解決します。 。マスターからの助け、ありがとうございます


ディスカッション(解決策)への返信

pid=1はid=1のコメントへの返信ではないでしょうか?隣り合っているかどうかは気にする必要はありません

区切られた行の意味がよく分かりません…

pid=1というのはid=1のコメントへの返信だけではないでしょうか?隣り合っているかどうかは気にする必要はありません
データベースからコメントを取得したい場合は、次のようになります:
id pid
1 0
3 1
2 0
4 0
このようにphpを使って出力すると非常に簡単です。以下にIDが順に出力されます。pidが0でない場合はブロガーからの返信とみなされ、返信されたコメントの下に表示されます。

分割された行の意味がよくわかりません...
たとえば、訪問者が 2 つのコメントを投稿し、ブロガーが最初のコメントに返信した場合、データベース内の保存順序は次のようになります:
id pid
1 0
2 0
3 1 //返信とコメントは一行で区切ってます

3階から2階の投稿への返信を参考にしてください

コメントへの返信はpid=1ではないでしょうか? id=1の場合?隣り合っていても気にする必要はありません
php内で並び替える必要がなく、関連するコメントや返信を「上下」で実現できるSQL文があれば知りたいです


分割された行の意味がよくわかりません...
たとえば、訪問者が 2 つのコメントを投稿し、ブロガーが 1 つ目のコメントに返信した場合、データベース内の保存順序は次のようになります。
id pid
1 0
2 0
3 1 //コメント1行ごとに返信を分けます

2階の投稿への3階からの返信をご参照ください

隣同士とは関係ありません。重要なのは、プログラムが間違っていないことを確認するために SQL とロジックを適切に処理することです。想像した順序で挿入することは不可能です



何が何だかよくわかりません。区切られた行は...
たとえば、訪問者が 2 つのコメントを投稿し、ブロガーが最初のコメントに返信した場合、データベース内の保存順序は次のとおりです:
id pid
1 0
2 0
3 1 //返信とコメントは一行で区切ってあります

2階への返信は3階の私の投稿を参照してください

これは隣り合わせとは関係ありません、重要です SQLとロジックをうまく処理した方が良いですプログラムが間違っていないことを確認するために、この順序に依存しないでください。想像した順序で挿入することは不可能です

ユーザーがコメントを投稿し、ブロガーが返信する順序が同じではないことは承知しています。そのため、データベースストレージには順序がありません。データベースからデータを取得するときにSQLクエリステートメントにソート関数を追加して、希望する順序を達成できるようにし、Webページに簡単に出力できるようにしたいと考えています。順序付けされていないデータは、解決するために PHP にスローされます。したがって、特定のデータベース設計と SQL クエリのスキルが必要です




分割された行の意味がよくわかりません...
たとえば、訪問者が 2 つのコメントを投稿し、ブロガーが最初のコメントに返信した場合、

2 階への返信は 3 階の投稿を参照してください

これは隣り合うこととは関係がありません。プログラムが間違っていないことを確認するために、SQL とロジックを適切に処理することをお勧めします。この順序で挿入することは不可能です。ユーザーがコメントを投稿し、ブロガーが返信する順序が通常と同じではないことはわかっています。そのため、データベースからデータを取得するときに、SQL クエリ ステートメントに並べ替え関数を追加したいと考えています。希望する順序を実現できるため、順序のないデータを PHP にスローして解決するのではなく、Web ページに簡単に出力できます。したがって、特定のデータベース設計と SQL クエリのスキルが必要です
order by を使用することはできないでしょうか?共通点を見つけて、最初に PID、次にその他を見つけて、1 つずつ並べ替えます

order byは使えないのですか?共通点を見つけて、最初に PID、次にその他の ID を 1 つずつ並べ替えます
共通点はありません。考えてみました

質問と要件を正しく理解しているかどうかわかりません。

この問題にはいくつかの解決策があると思います:

1. 1 つは、最も複雑な状況は「コメントの投稿後、コメントのコメント」のみであるため、単にコメント専用の新しいテーブルをセットアップするだけです。コメントを保存します。 order by について議論するよりも、この方が信頼できると思います。

2. 1 つは、投稿を表示し (問題ないはずです)、次にコメントを表示する方法です (これも問題ありません)。 foreach が各コメントを表示するときに、コメントのコメントを表示するクエリをいくつか呼び出します。

個人的には、2 番目の方法を使用することをお勧めします。

ところで、この質問は実際には初歩的なものではありません。

固定レベルが 2 レベルであると言うのは簡単です
http://sqlfiddle.com/#!2/e433e/1
このステートメントは mysql モデレーターから学びました

select * from `comment` order by if(pid=0,id,pid) asc
ログイン後にコピー

このステートメントは注意深く研究する必要があります。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート