- ベストアンサー
ページ間の値の受け渡しについて
緊急でPHPを用いて開発しなければならず、値の受渡し方法が調べても 結果がうまく出来ないために教えて下さい。 説明がうまくできないので、ソースの一部を下記に記載しております。 【keikaku.php】 <?php $link = DB接続 $query = "SELECT (1) , (2) , (3) FROM KEIKAKU WHERE 営業所= '東京'"; $res_result = mysql_query($query,$link); echo ("<form action='keikaku_input.php' method='POST'>"); while($row = mysql_fetch_array($res_result)){ echo ("<table border=1>"); echo ("<tr>"); echo ("<td><input type='radio' name='name' value=''></td>"); echo ("<td>"); echo $row['(1)']; echo ("</td><td>"); echo $row['(2)']; echo ("</td><td>"); echo $row['(3)']; echo ("</td>"); echo ("</tr>"); } echo ("<input type='submit' value='次へ'>"); echo ("</form>"); ?> というSQLで一覧を表示させて、対象行のラジオボタンが選択されると (1)と(2)の値を使い、【keikaku_input.php】で更に別のSQLを実行後に 結果を表示させる事を行ないたいのです。 【keikaku.php】→【keikaku_input.php】へ(1)と(2)の値を渡したい場合 はどのようにすれば良いかご教授願えませんでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
serialize でいいか。 [code] <?php ... ?> <form action="keikaku_input.php" method="post"> <table> <tbody> <% while ($row = mysql_fetch_assoc($res_result)) : %> <tr><td><input type="radio" name="name[]" value="<%=htmlentities(serialize($row), ENT_QUOTES, 'UTF-8');%>"></td> <% foreach ($row as $value) : %> <td><%=htmlentities($value, ENT_QUOTES, 'UTF-8');%></td> <% endforeach; %> </tr> <% endwhile; %> </tbody> </table> </form> [/code] ちなみに元データが、データベースでなく、XML なら、抽出から変換まで、、、まぁいいや。
その他の回答 (4)
- bm_hiro
- ベストアンサー率51% (200/388)
配列を一行で渡したい時は #3 さんのやり方が お勧めです。 余計なお世話かな~と思いつつ、#3 さんのやり方の補完です。 シリアライズされた文字列 = htmlentities(serialize(配列), ENT_QUOTES, 'UTF-8'); の 対になるのが、 配列 = unserialize(html_entity_decode(シリアライズされた文字列)) です。 keikaku_input.php で受け取ったものを、配列に戻してください。
- yuu_x
- ベストアンサー率52% (106/202)
訂正 name="name[]" → name="name"
PHPではINPUT要素のNAME属性に配列を指定することが出来ます。 チェックボックスの例がありますので、ラジオボタンに置き換えてお試しください。
- yuu_x
- ベストアンサー率52% (106/202)
PHP が理解できる形式で渡してやればよくないですか? 1. uri クエリ, JSON ( XForm を使いたいけど、実装されてるブラウザはほとんどない。) 2. 検索に必要な鍵だけ渡して、受け取り側で再検索。 ... ちなみに echo は関数ではないので、() はいりません。あったりなかったり、、、まぁいいや。
お礼
皆様、ありがとうございます。時間がなく、ラジオボタンではなく <A>タグで逃げてしまったのですが、serializeの事は大変勉強に なりました。INSERT等にも色々と使えそうなので、マスターします。 本当にありがとうございました。