• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:同一ページの複数フォームを一括送信したい)

同一ページの複数フォームを一括送信したい

このQ&Aのポイント
  • 会社にてあるイベントの申込みページを作成している、ほぼ初心者です。ショッピングカートへとフォームから飛ばしたいのですが、プログラムがよくわからず行き詰っています。
  • 以前の回答にもあったhttp://okwave.jp/qa/q3418439.htmlを真似て作ってみましたが、最初のものだけをピックアップして実行されてしまいます。また、本来はチェックボックスにチェックが入っているもののみを送信したいんです。
  • 数十個あるうちのチェックボックスにチェックが入っているもののみを送信するためには、以下の手順を実行します。まず、チェックボックスにチェックが入っているかどうかを認識し、入っている場合は順に送信します。プログラムの組み方がわからない場合は、サンプル記述を確認すると良いでしょう。

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.4

>どうやってnameの中に書かれているものを読み取らせるのかすらわかっていないんです。。。  それは、フォームを別々に分けたって同じ事です。 このあたりになるとPHPよりPerlを使ったCGIのほうが資料も多いでしょう。  フォームのデータは、[name]=[value]のペアで送られてきます、通常はハッシュ(連想配列)に入れますが、そうすると同名のものがあれば上書きされてしまいます。  そのため、ハッシュのハッシュなど二次元三次元のデータを作らなければなりません。  このあたりは、Perlのマニュアル(らくだ本)をお読みください。  ⇒O'Reilly Japan - プログラミングPerl 第3版 VOLUME 1( http://www.oreilly.co.jp/books/4873110963/ )  ⇒O'Reilly Japan - プログラミングPerl 第3版 VOLUME 2( http://www.oreilly.co.jp/books/4873110971/ )  ⇒O'Reilly Japan - Perl クイックリファレンス( http://www.oreilly.co.jp/books/4900900729/ )

muscleking78
質問者

お礼

丁寧な回答ありがとうございます なるほどですね 思っていたよりも、かなり難しく、プロの方にお任せしないといけないかもしれませんね どうもありがとうございました

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.3

そんなの無理です。javascriptに頼るとjavascriptが動作しない端末では動作しない。 単純にひとつのフォームで送信すればよいです。  同名なものがありますから、ハッシュで処理すると後出のもので上書きされますから、ハッシュのハッシュに代入するのが分かりやすいでしょう。  なお、本来は <input type="checkbox" name="quantity137_634" value="1" /> <input type="checkbox" name="quantity138_640" value="1" /> <input type="checkbox" name="quantity140_635" value="1" /> で行うべきでしょう。

muscleking78
質問者

お礼

回答ありがとうございます 無理な相談だったんですね。。。無知ですみません 記載していただいたもので送信した場合、どうやってnameの中に書かれているものを読み取らせるのかすらわかっていないんです。。。 模索するしかないですね どうもありがとうございます

すると、全ての回答が全文表示されます。
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

フォームを送信した時のブラウザの通常の処理は、サーバー上のphp等から送られるページに表示が遷移します。 >(2)チェックボックスにチェックが入っているものを順に送信 順に送信してページ遷移はしないというのであれば、ajaxで送信だけを行えば可能でしょう。方法は検索してみてください。 送信後、ページ遷移を行いたいのであれば、チェックの入ったデータをまとめて(一度に)送信すれば可能ですが、サーバー側のプログラム(php等)がそれに対応できている必要があります。 (一度に複数のデータを受け取れるようになっていますか?) 簡単に実現するのであれば、全体をひとつのフォームにしてしまって、全データを一括して送信し、サーバー側で有効なデータを選別することでしょう。 サーバー側のプログラムの変更が必要ですが、スクリプトでやろうとなさっていることとほぼ同じ処理をサーバーサイドで行うだけとも言えます。 また、データ送信にスクリプトを介すると、スクリプトが使えない環境からは予定した送信がなされないことになりますが、そのようなユーザーは無視することになったり、予定とは異なる処理がされたりすることになる可能性がありそうです。

muscleking78
質問者

お礼

回答ありがとうございました なかなか思ったようには出来ないもんですね。。。 といっても自分の知識不足が原因なのでどうしようもできないですが、、、 一括送信をしてサーバー側でデータを選別という方法を作れればそれがよさそうですね 模索してみます どうもありがとうございました

すると、全ての回答が全文表示されます。
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 うむ、残念じゃが、複数の「フォーム」を1つのリクエストにする方法はないんじゃよ。  また、かりにJavaScriptで数十個のフォームの内容を調べ、一つの大きなフォームを作ってPOSTするという方法を取ったとしても、フォームの受け取り先(具体的には/products/detail.php)が複数のデータのPOSTに対応していないと最終的に動作はせぬ。  つまり、やるべき事は、function sendの中身を、数十個のフォームをそれぞれsubmit()するのではなく、POST用の大フォームを動的に作成し(動的じゃなくてもかまわないけど)、数十個の画面上のフォームを順番に舐めていき、チェックボックスにチェックが入っている場合は先ほどの大フォームの中に動的にhiddenでINPUTを追加していき、最後には大フォームを一気に/products/detail.phpにどーんって感じに作って、かつ/products/detail.phpは複数のmodeやprodoct_idやproduct_class_idやquantityを受け取るような作りにしておくことだ。  サンプル記述については、あなたがいま作っているシステムがどんなものなのかわからないのでなんとも言えないが、動的にフォームタグやフォームタグの中にhiddenのINPUTを作るのはdocument.createElement(name);やappendChild(element);などをキーワードに情報を集めてみていただきたい。JavaScriptの話だったらjQueryを使うという手もあるし。

muscleking78
質問者

お礼

回答ありがとうございました JavaScriptでは難しいということなんですね。。。 きちんと知識があればいいのですが、急に投げられてしまったので調べながらやっています 参加したいものにチェックをいれてもらってまとめて申込みができたらいいなと仕組みを構築していました 一度に送信して、それをPHP側で認識させられれば間違いが起きないんですね 別の方法を模索してみるしかないですね ありがとうございました

すると、全ての回答が全文表示されます。

関連するQ&A