• ベストアンサー

PHP 配列の受け渡し

現在PHPでアンケートフォームを作成しているものです。 フォーム⇒確認画面⇒登録完了画面 と3モジュールを経由します。 配列の受け渡しで問題が発生しています。 フォーム⇒確認画面では問題なく配列の値がわたってきているのですが。 確認画面⇒登録完了画面ではわたってきません。 $a = $HTTP_POST_VARS["a"];(←配列変数:a) <input type=hidden name=a value=$a> とアンケートフォーム、確認画面両モジュールとも上記のような書き方で渡しています。 変数名を変えたりといろいろしていますが うまくいきません。 アドバイスお願いします。

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

valueがクウォーテーションで囲ってませんが、日本語の場合だと受け渡せないかもしれません。 value="$a" としたほうがよいでしょう。

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

その他の回答 (3)

回答No.4

ほとんど解決しているようですが、状況が分からなくなった時の切り分けにはprint_rを使うと良いと思います。 例えば、 print_r($HTTP_POST_VARS); とすれば中に入っているか確認出来るわけです。 ポスト関連は最近ではでは$_POSTが推奨されています。PHPのバージョンによって確認下さい。 また、変数の受け渡しでは過去にregisterglobalがonになっていればPOSTでもGETでも自動的に変数にはいったりしていました。この辺も環境によって違うので確認したほうが良いと思います。 蛇足かもしれませんが。

全文を見る
すると、全ての回答が全文表示されます。
  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.2

確認画面で hidden の箇所は <form>~</form> 内に入っていますか? つまり、 <input type=hidden name=a value=$a>  ~ <form> <input type="submit"> </form> ってな感じになってないですか? こんな感じになってるか確認してみてください。 <form> <input type=hidden name=a value=$a> <input type="submit"> </form>

全文を見る
すると、全ての回答が全文表示されます。
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

どこで分かっていないのか特定してください。 $a に渡せないのか、 $HTTP_POST_VARS["a"] に入っていないのか、 <input type=hidden name=a value=$a> で表示されていなのか・・・ あと、$HTTP_POST_VARS["a"]は古いPHPの書き方なので、 $_POST['a']に変えたほうがいいでしょう。

fm0606
質問者

補足

ありがとうございます。 確認画面モジュールの <input type=hidden name=a value=$a> 直前までをデバッグさせてみたら入ってます。 登録完了画面モジュールの $HTTP_POST_VARS["a"] 受け取り時に値が入ってません。 早速$_POST[]に書き換えます。

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

関連するQ&A

  • 配列の受け渡し

    こんばんは。 あるページで使用した配列を他のページでも使いたいのですが、 こういう配列を格納した変数の受け渡しって出来るのでしょうか? 普通の変数のデータを受け渡したかったら <input type="hidden" />で直接valueに変数の値を入れれば良いですが、 配列だと自分では以下のように愚直にやる方法しか分かりません。 もっとちゃんと渡せる方法ってあるのでしょうか? <?$a=array(1,2,3,4,5);?> <? for($i=0;$i<count($aaa);$i++){ ?> <input type="hidden" value="<?=$aaa[$i]?>" name="hoge[]"/> <?}?>

    • ベストアンサー
    • PHP
  • PHPによる確認フォームについて

    PHP初心者です。 HTMLフォームからPHPファイルに変数を受け渡すシステムを作っています。 下記のようにHTMLフォームから入力された変数をPHPファイル (確認フォーム)で受け取ることはうまくいきました。 $HTTP_POST_VARS['変数'] 次はそのデータを確認フォームの「確認ボタン」で確認して次のPHPファイル (DBへの入力)に変数を渡したいのですが、どのようにすればよいのでしょうか? いろいろ調べてみたのですが、どうもうまくいきません。 どのようにすればよいのでしょうか?

  • 配列の受け渡し

    失礼致します。 配列について困っていまして、質問させてください。 今、フォームデータとしてsubmitを押したときにjavascriptから配列をサーブレットに受け渡ししたいです。フォームを含めたソースは次のようになります。 <script> function submitArr(n) { var i = 0; var array = []; while(i<n) { array.push(variable); // variableはiの値に応じて変わる変数。 } document.frm.array.value = array; ☆ } </script> <form action="servlet" method="post" name="frm"> <input type = "submit" value = "submit" onClick="submitArr()"> <input type = "hidden" value = "" name="array"> ☆ </form> 次に、servlet側でこれを受け取ります。 String[] array = new String[n]; ★ while(i<n) { array[i] = req.getParameter(array[i]); ★ } 以上が本質的な部分だと思うのですが、☆および★の部分をどう書いたらいいかわかりません。 添え字も少しあやふやなのですが、 分かる人がおられましたら、教えていただけないでしょうか?

    • ベストアンサー
    • Java
  • VBA 変数の受け渡し

    エクセルVBAで標準モジュール内でインプットボックスに入力した変数をユーザーフォームに受け渡してユーザーフォーム内のリストボックスに表示させる場合どのように変数の受け渡しを行えばよいか教えてください。 現在は、一度ワークシートの任意のセルに値を書き出し、その後ユーザーフォームのイニシャライズで先ほどのセルから値を受け取るようにしています。 標準モジュールではインプットボックス入力後「UserForm1.Show」でユーザーフォームの立ち上げを行っています。

  • PHPのメールフォーム文字化けについて

    PHP超初心者です。 前任者が退職し、急きょWEBを引き継ぐことになりました。 現在稼動中のサイトのメールフォームは、PHPで処理を行っているのですが、 フォーム入力後に表示する入力確認画面及び送信メールで、 日本語が文字化けを起こしてしまいます。 PHP内に記述されているのは、 if(phpversion() < "4.1.0"){ $_GET = $HTTP_GET_VARS; $_POST = $HTTP_POST_VARS; $_SESSION = $HTTP_SESSION_VARS; } なのですが、レンタルサーバーのPHPバージョンは5.2.8です。 言語及び内部エンコーディングは、 mb_language('Japanese'); mb_internal_encoding(UTF-8); と設定してありますので、文字化けはバージョンの違いによるものではないかと考えているのですが、なにぶん初心者でどのように修正をかければよいのか分かりません。 尚、動作には問題はありません。 初歩的な質問で大変恐縮ですが、どなたかご回答よろしくお願いいたします。 (初心者向けの分かりやすい回答でお願いします)

    • 締切済み
    • PHP
  • ruby on railsでの画面間 パラメータ受け渡し方法

    ruby on railsでの画面間のパラメータ受け渡し方法についての 質問です。 入力画面1→入力画面2→確認画面→(登録) のような画面遷移を行う場合、入力画面1、2の内容を 登録処理で使用するにはどのようにしたらよいでしょうか? 1.Sessionに格納する。 2.Hiddenフィールドを使用して、画面間で、受け渡しをする。 3.その他、良い方法があれば教えてください。

  • ユーザーフォームのリストボックスの設定を標準モジュール内で取得した配列

    ユーザーフォームのリストボックスの設定を標準モジュール内で取得した配列にしたい。 題名のままの説明ですが、ユーザーフォームのリストボックス値を配列にして動的に動作させるようにしたいのですが、標準モジュールでPublicで配列を宣言しているのですが、うまくユーザーフォームモジュールに渡っていないというか、その配列変数をユーザーフォームモジュール内に書くと配列が存在しません。 というエラーが出てしまいます。 かといってユーザーフォームでPublicで配列を宣言することもできないのでどうやってリストボックスに 配列を設定すればいいのかわかりません。 配列は2次元配列で視覚的に説明するとは列数が3行、行数は標準モジュール内でRedimにより可変します。この配列をそのままレコードセットみたいにリストボックスに設定したのですが、 なにか良い方法はありますでしょうか?

  • フォームを通さずに2次元配列の値の受け渡しについて教えてください

    お世話になります。 以前にも質問させて頂きましたが、うまくいかずもう1度質問させてください。 phpで2次元配列の値の受け渡しについて教えてください。 A.phpファイルからB.phpファイルに2次元配列の値をフォームを通さずにPOSTで渡したいと考えています。 処理上、2次元配列のままB.phpファイルに値を渡したいと考えています。 そもそもPOSTで2次元配列を送ることはできるのでしょうか? その他の方法で2次元配列のままB.phpファイルに渡すことが出来るのであれば、その方法も教えて頂きたいのですが。 たとえば [A.php] $DATA = array( array('name'=>"tanaka", 'age'=>"20"), array('name'=>"sasaki", 'age'=>"30"), ); をB.phpファイルに送るにはどうすれば良いのでしょうか? ※2次元配列のサイズは可変です。 どなたか教えて頂けないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • Perl:hiddenタグを使って二次元配列を保持する方法

    Perlで、ショッピングカートのようなもの(厳密には違いますが)を 作成しております。複数画面に渡ってユーザが必要事項を入力する際の データの受け渡し方法で、どうにも詰まってしまいました。 フォームに <input type="hidden" name="hoge" value=(二次元配列)> のような形で二次元配列を埋め込み、配列の値を一連の処理のあいだ中 保持・利用したいのですが、hiddenタグに上手く配列を格納することが できません。 配列を一要素ずつ展開してhiddenに入れれば実現できましたが、要素数が 多くなる場合も考えると、できればその方法は避けたいと思います。 PerlはWebと参考書で独学で勉強しているため、(私が見つけられないだけで) オーソドックスな方法があるのではと思い質問させていただきました。 検索キーワードなどでも結構ですので、何かアドバイスいただければ幸いです。 よろしくお願い致します。

  • PHPでページをまたがった変数の渡し方

    何かを書き込むページを作った場合に 1・書き込むページ → 2・確認画面 → 3・完了通知画面 1→2は普通にpostで値を渡しますが、2→3の場合は2のページでフォームの形にして hiddenで値を渡すのが通例なのでしょうか。 COOKIE等に入れるのはナンセンスでしょうか。

    • ベストアンサー
    • PHP