会社にてあるイベントの申込みページを作成している、ほぼ初心者です。
ショッピングカートへとフォームから飛ばしたいのですが、プログラムがよくわからず行き詰っています。
以前の回答にもあったhttp://oshiete.goo.ne.jp/qa/3418439.htmlを真似て作ってみましたが、
最初のものだけをピックアップして実行されてしまいます
また、本来はチェックボックスにチェックが入っているもののみを送信したいんです
</style>
<script language="javascript"><!--
function send() {
document.a11.submit();
document.b11.submit();
・
・
・
・
}
//--></script>
これをヘッダー内に書き込み
<form name="a11" action="/products/detail.php" method="post" target="_blank">
<input type="hidden" name="mode" value="cart" />
<input type="hidden" name="product_id" value="137" />
<input type="hidden" name="product_class_id" value="634" />
<input type="checkbox" name="quantity" value="1" /><br />
</form>
<form name="b11" action="/products/detail.php" method="post" target="_blank">
<input type="hidden" name="mode" value="cart" />
<input type="hidden" name="product_id" value="140" />
<input type="hidden" name="product_class_id" value="637" />
<input type="checkbox" name="quantity" value="1" /><br />
</form>
・
・
・
・
・
というフォームが数十個あります。
数十個あるうちのチェックボックスにチェックが入っているもののみを
送信したいのですが、プログラムの組み方をご教授願えませんでしょうか?
順番としては
(1)チェックボックスにチェックが入っているものを認識
(2)チェックボックスにチェックが入っているものを順に送信
という感じなのかなと考えていろいろ調べてみたのですが、
わからない状態です
ほぼ初心者なので、お手数ですが、サンプル記述などもいただけると
大変たすかります
どうぞよろしくお願いいたします
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/ )
丁寧な回答ありがとうございます
なるほどですね
思っていたよりも、かなり難しく、プロの方にお任せしないといけないかもしれませんね
どうもありがとうございました
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" />
で行うべきでしょう。
回答ありがとうございます
無理な相談だったんですね。。。無知ですみません
記載していただいたもので送信した場合、どうやってnameの中に書かれているものを読み取らせるのかすらわかっていないんです。。。
模索するしかないですね
どうもありがとうございます
No.2
- 回答日時:
フォームを送信した時のブラウザの通常の処理は、サーバー上のphp等から送られるページに表示が遷移します。
>(2)チェックボックスにチェックが入っているものを順に送信
順に送信してページ遷移はしないというのであれば、ajaxで送信だけを行えば可能でしょう。方法は検索してみてください。
送信後、ページ遷移を行いたいのであれば、チェックの入ったデータをまとめて(一度に)送信すれば可能ですが、サーバー側のプログラム(php等)がそれに対応できている必要があります。
(一度に複数のデータを受け取れるようになっていますか?)
簡単に実現するのであれば、全体をひとつのフォームにしてしまって、全データを一括して送信し、サーバー側で有効なデータを選別することでしょう。
サーバー側のプログラムの変更が必要ですが、スクリプトでやろうとなさっていることとほぼ同じ処理をサーバーサイドで行うだけとも言えます。
また、データ送信にスクリプトを介すると、スクリプトが使えない環境からは予定した送信がなされないことになりますが、そのようなユーザーは無視することになったり、予定とは異なる処理がされたりすることになる可能性がありそうです。
回答ありがとうございました
なかなか思ったようには出来ないもんですね。。。
といっても自分の知識不足が原因なのでどうしようもできないですが、、、
一括送信をしてサーバー側でデータを選別という方法を作れればそれがよさそうですね
模索してみます
どうもありがとうございました
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を使うという手もあるし。
回答ありがとうございました
JavaScriptでは難しいということなんですね。。。
きちんと知識があればいいのですが、急に投げられてしまったので調べながらやっています
参加したいものにチェックをいれてもらってまとめて申込みができたらいいなと仕組みを構築していました
一度に送信して、それをPHP側で認識させられれば間違いが起きないんですね
別の方法を模索してみるしかないですね
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
動的にnema属性が変化する場合...
-
フォーム要素以外にもname属性...
-
submitをボタン以外にするには
-
HTMLのoptionタグ部分に画像を...
-
GETをPOSTに変更したところ 送...
-
プルダウンメニューでインライ...
-
プロトコルmailtoはサポートさ...
-
セレクトボックスの幅をプルダ...
-
【html】)パスワード認証フォー...
-
input date について
-
リストボックス全選択について
-
</form>タグを使用すると強制的...
-
checkboxを「変更不可」にでき...
-
送信フォームを2つ用意する方法
-
送信ボタン押下時に値が未入力...
-
1アクションでPOST・GET、両方...
-
URL パラメータを使ってフォー...
-
ニフティのメールデコードにつ...
-
mailtoについて
-
お問い合わせフォームの送信後...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1つのformで複数のactionを実...
-
javaScriptで検索結果の保持
-
「アドオンを実行しようとして...
-
inputタグのclass名にコロン「:...
-
一括で値を入力するには?
-
Googleのサイト内検索機能の貼...
-
同じ名前が複数あるインプット...
-
グーグルでの化け文字対策は?
-
インフォシーク翻訳リクエスト...
-
inputタグのtype値がfileの場合...
-
動的にnema属性が変化する場合...
-
ランダムリンクでリンク先を別...
-
今日の日付をセットしたいのですが
-
htmlソースの書き換え
-
自分のサイト内のワード検索?
-
リクエストパラメータの値によ...
-
javascriptで四則演算
-
javasqliptで複数のテキストボ...
-
サイト内の検索システムをHPに...
-
ローカルファイルをgoogleの機...
おすすめ情報