質問: 複数のフォームからpostにより、データが送られる場合、postの処理を分けることはできますでしょうか? ``` ``` 上記コードにおきまして、一つ目、あるいは2つ目のformのデータが送られた場合、1つ目のpost処理、及び2つ目のpost処理がなされてしまいます。 これを、1つ目のformから送られた場合は、1つ目のpost処理のみ、2つ目のフォームから送られた場合は、2つ目の処理のみをさせる、といったことはできますでしょうか? 1つ目のフォームから送られてくるデータの入力チェックなどを行っていて、入力できていない場合エラー変数にエラーメッセージを格納する処理を記載していると、2つ目のformから送られたデータの入力チェックも行ってしまい、結果的に、入力されていない場合のエラーメッセージがエラー変数に格納されてしまいます。 上記問題を解決する為、ご助言頂けないでしょうか? よろしくお願いします。
回答: POSTされる送信データの中で、 1つ目のフォームのデータだよ、2つ目のフォームのデータだよ、 って区別がつくようなデータを持たせないと意味がないです。 あるいは、 POST送信先を分けてしまうのも手ですが。 ものはためしと、 phpコードの冒頭に、 ``` var_dump($_POST); ``` とかかけば、 1つ目のフォームで送信したときは1つ目だけ、 2つ目のフォームで送信したときは2つ目だけ、 のデータを受信するのが確認できるはずですよ。 送信ボタンを押したとき > > C:\xampp71\htdocs\test\186992.php:3: > > array (size=1) > > 'name' => string '変更' (length=6) > > > 変更ボタンを押したとき > > C:\xampp71\htdocs\test\186992.php:3: > > array (size=1) > > 'id' => string '変更' (length=6) > > > わかりやすく区別するために `` を1つ目のフォームに、 `` を2つ目のフォームに加えれば、 楽に区別が付きます。 phpでは ・POST送信データが有るかどうか ・typeっていうデータが有るかどうか(`if (isset($_POST['type'])) {`) ・typeってデータが1なのか2なのか などと判定すればよいのかな。 1や2だと味気ないので、 追加→add もしくは insert 更新→update ってするのも乙。 どういう処理をさせようとしているのかはわかりませんが、 POST送信データはいくらでも偽装できるので、 でたらめなデータが送信されることも想定して 対策することも忘れずに。 (既存データの更新処理の際には、実在するidかどうか、などの検証が必要。) エラー発生時にちゃんと出力できないのはダメなので。 ``` if(count($err)>0){ echo '' . implode('', $err) . ''; } ``` みたいなことを書いてみる。 これなら、複数のエラーメッセージが入っていてもとりあえず出力できる。