回答受付が終了しました

ID非公開

2021/9/20 12:23

44回答

プログラミング初心者です。練習として、PHPで掲示板を作っています。

PHP64閲覧xmlns="http://www.w3.org/2000/svg">25

回答(4件)

0

> ・INSERT前にSELECTで個数を数える これ一択では? 普通に想像する掲示板は、最初のアクセス時に、直近の数件、あるいはページング(ページネーション)で投稿のタイトルや本文を表示しませんか? 特に後者ならその時点で件数が既知のはずです。 前者でも、直近の数件を拾ってくる時に投稿数も別途取得するだけなので。 その時点で制限に達しているかで、投稿用のフォームを表示/非表示を判断すれば良いと思うので、タイミングとしては INSERTよりずっと以前ですが、「INSERT前に取得しておく」だろうと。 既存の投稿を全く表示なしで投稿用のフォームを表示するというのは、多分無いだろうと思うので、投稿データを入力する時に何かをするって事はあまり無いんじゃないかと思います。 そうではなく、一度に(≒極短い間隔)複数の投稿があり得る場合に厳密に処理するなら、いろいろ考えなきゃいけなくなります。 学習用の教材としては、結構高いハードルだと思うのですが、そちらを想定しているんでしょうか?

0

せっかく入力したコメントが弾かれるんですか? 二度とコメント投稿したくなくなるような仕様ですね。 元のメッセージを標示させるときにコメントがN件になってたら投稿できなくしとけば無駄なコメント入力させないで済みますよ。

0

掲示板なら、例えN+1件が投稿されたとしても実害はないですよね。このように厳密な制御が必要ない場合は、同時実行性を有線して、 > ・INSERT前にSELECTで個数を数える のほうが適切だと思います。 絶対にN件を超えてはならないという厳密な制御をおこないたいのであれば、INSERTした後に件数を数えて、Nを超えていたらロールバックするという方法が良いでしょう。

0

やり方は複数ありますし、仕様としてどういう要求なのかによっても変わります。 掲示板全体なのかスレッド単位なのかにもよるし、投稿前に明示するのか、POSTされた後に分かるようにするのかにもよるし、情報不足すぎて答えようがありませんね。 まあ普通に考えればスレッドをDBから取得して表示する時にコメント数をカウントしておいて、N件を越えていたら「もう投稿できません」と表示して投稿フォームをグレーアウトするかな。もちろんそれでも無理やりPOSTされた時に備えてINSERT時にもカウントチェックはする。