- ベストアンサー
PHP POSTについて質問です
- PHP初心者がショッピングカートで商品の送り先情報を追加する方法についての質問です。
- 次のページで複数の情報を受け取るためには、JavaScriptを使用してフォームの情報を動的に生成し、送信する必要があります。
- JavaScriptの知識がないため、引用したコードを解析することが難しいです。助けていただけると嬉しいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>いろいろ試しているうちに間違って残ったまま >コピーしてしまいました。 で、正しくはどういう属性値になっているんでしょうか? 「JavaScriptで動的に増やす」ということですが、追加したinput要素にJavaScriptでname属性値を適切に付与しておくか、同じname属性値にするならばokuriname[]のようにしておかないといけません(受け取ったphpスクリプトでは配列として foreach で処理する)。送る方がそういうinput要素を生成できていないと(同一のname属性で[]も付加されていない状態で送信されると)、受け取った側では何も出来ません。 var_dumpした結果がそうなっていますよね。$_POSTがそういう状態になっている以上、受け取り側ではどうしようもありません。 (蛇足) 同一のname属性があってもPOSTされることはされるハズなので、POSTされた生データを自前で展開する手もないわけではありません。が、受け取り側でそこまでやるのは違うだろうと思います。基本的には送信するフォーム側をキチンと書く(phpスクリプトで$_POSTから処理出来るようにする)べきです。
その他の回答 (1)
- agunuz
- ベストアンサー率65% (288/438)
まずは、shop_check.phpを <?php print '<pre>'; var_dump($_POST); print '</pre>'; だけの内容にして、どういうデータを受け取るか確認すればいいのでは? 正直、なぜ名前だけname属性値が配列になっているのか(添え字の $i はどこでどうセットしているのか)提示されたソースからだけでは読み取れません。きっとまだ長いソースなんですよね?
補足
お返事ありがとうございます。 name属性値が配列になっている所は いろいろ試しているうちに間違って残ったまま コピーしてしまいました。 失礼しました。 <?php print '<pre>'; var_dump($_POST); print '</pre>'; こちらを試しました。 3件入力して送っても array(7) { ["okuriname"]=> string(12) "ああああ" ["okuriemail"]=> string(17) "aaaa@docomo.ne.jp" ["okuripostal1"]=> string(3) "123" ["okuripostal2"]=> string(4) "2345" ["okuriaddress"]=> string(12) "ああああ" ["okuritel"]=> string(13) "098-0987-0987" ["submit"]=> string(6) "送信" } 1件分しか出力されません。 全部出力するにはどうしたらいいですか?
お礼
ありがとうございました。 おかげさまでうまくいきました。 勉強になりました!!