PHPでのセレクトボックスの値の取得について

このQ&Aのポイント
  • 入力画面で都道府県をセレクトボックスで入力したい
  • 外部ファイルに都道府県を書いたものをoptionの部分に入れたい
  • Perlでの処理をPHPに移植する方法を教えてください
回答を見る
  • ベストアンサー

PHPでのセレクトボックスの値の取得について

入力画面(HTML)で都道府県をセレクトボックス で入力したいんですが、入力画面のHTMLに北海道から沖縄まで書くのは大変だし、 もしかしたらエリアを限定するかもしれないので 外部ファイル(例:area_data)にカンマ区切りで北海道から沖縄まで書いたものを optionの部分に入れたいと思います。 Perlでやるとこんな感じで出来たんですがこれをPHPでやるにはどうすればいいのか教えてください。 ただ単にPerl(の関数)をPHPに直すだけでできるものなのでしょうか? ----------------Perl(sample.cgi) mode:new--------------------------- ##===================== ## 都道府県の設定 = ##===================== if(!open(DATA,$area_data)){ &error('システムエラー','エリアデータファイルをオープンできません。'); } @area_data = <DATA>; close(DATA); @area = split(/,/,$area_data[0]); foreach(@area){ $option_val .= qq|<option value="$_">$_</option>\n|; } ##=============================== ## マクロリファレンス置き換え = ##=============================== foreach(@html){ s/_%option_val%_/$option_val/g; } ##========================= ## 入力画面HTML 出力 = ##========================= print <<"EOF"; Content-type: text/html @html EOF exit; } ---------------入力画面html------------------------------------------ <form name="form1" method="post" action="sample.cgi"> <input type="hidden" name="mode" value="new1"> <select name="address_a"> _%option_val%_ </select> </form> ---------------Perl(sample.cgi) mode:new1---------------------------- 入力確認画面のHTMLを開く ##=============================== ## マクロリファレンス置き換え = ##=============================== foreach(@html){ s/_%address_a%_/$param{'address_a'}/g; } ##========================= ## 入力確認画面HTML 出力 = ##========================= print <<"EOF"; Content-type: text/html @html EOF exit; } ---------------入力確認画面html---------------------------------------- <form name="form1" method="post" action="sample.cgi"> <input type="hidden" name="mode" value="new2"> <input type="hidden" name="address_a" value="_%address_a%_"> _%address_a%_ </form>

  • PHP
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

スタティックなHTMLをわざわざオーバーヘッド発生させてプログラム 処理する意味があるかどうか疑問ですが・・・ まず、外部ファイルは読み込みだけならわざわざファイルI/Oで 開いたり閉じたりすることもなく file_get_contents()などで十分、例示のソースになぞらえると <? $fname="prefecture.txt"; $str=file_get_contents($fname); $area = split(",",$str); foreach($area as $val){ $option_val .= "<option value=\"{$val}\">{$val}</option>\n"; } ?> みたいな感じ ヒアドキュメントはPHPでもつかえるので、処理的にはほぼ 同等のことはできると思います。

s_mac_ts
質問者

お礼

いつもありがとうございます。 おかげさまで何とかなりました。 >スタティックなHTMLをわざわざオーバーヘッド発生させてプログラム 処理する意味があるかどうか疑問ですが・・・ 確かにそうなんですよね。まぁ元にあるプログラムでは テンプレート(HTML)と処理部分(PHP)は完全に分けて作ってるからなんですかね。

関連するQ&A

  • selectが複数ある場合の値取得について

    お世話になります HTML内に下記のようなフォームが複数存在しています。 select[name="page_name"]が変更されたときに値を取得しPHP に送信したいのですが、一番上にあるselectの値が取得されてしまいます。 ひとつのscriptで複数のselectに対応したい場合、どのような記述になりますでしょうか? 助けていただきたいです。よろしくお願いします。 <!--1番目のセレクト--> <form method="post" action="javascript:void(0);"> <input type="hidden" id="img_id" name="img_id" value="3"> <select name="page_name"> <option value="">選択してください</option> <option id="page_name" value="1">あああ</option> <option id="page_name" value="2">いいい</option> <option id="page_name" value="3">ううう</option> </select> </form> <!--2番目のセレクト--> <form method="post" action="javascript:void(0);"> <input type="hidden" id="img_id" name="img_id" value="4"> <select name="page_name"> <option value="">選択してください</option> <option id="page_name" value="1">あああ</option> <option id="page_name" value="2">いいい</option> <option id="page_name" value="3">ううう</option> </select> </form> <!--3番目のセレクト--> ---省略--- /*script*/ $('select[name="page_name"]').change(function() { var data = { 'page_name' : $('#page_name').val(), 'img_id' : $('#img_id').val() }; $('#name').text(data['img_id']); $.ajax({ type: "POST", url: "/admin/change/", data:data }); alert("画像使用ページを変更しました!"); return false; }); });

  • フォームへ入力した値の取得について

    PHPを始めたばかりの初心者です。 Windows NT4.0 + apache 1.3.24 + php 4.20の環境で 以下のようなサンプルプログラムを作って実行したのですが、「送信」ボタンを押しても、入力した文字が表示されません。初歩的な質問ですいませんが、原因を御教授下さい。 <HTML> <body> <FORM ACTION="sample.php" METHOD="POST"> 文字の入力 <INPUT TYPE="text" NAME="val" VALUE=""><BR> <INPUT TYPE="submit" VALUE="送信"> </FORM> <BR> <?PHP print "入力文字は<B>" . $val . " </B>です。"; ?> </BODY> </HTML>

    • ベストアンサー
    • PHP
  • セレクトボックスの値取得に関して

    こんにちは。今、セレクトボックスの値取得に頭を悩ませています。 具体的には、(送迎バスの)到着時間、出発時間を入力してもらい、 到着時間が出発時間より早くないとアラートを出すような仕掛けを 作りたく思っています。以下のようなスクリプトを作ったのですが、 時間の計算がうまくいかないみたいです。至らぬ点など多々あるかと 思いますが、ご教授よろしくお願いいたします。 <html> <head><title>select_test</title> <script type="text/javascript"> function jikoku_chk(){ //到着時刻 arrive_time=eval(document.getElementsByName("HH1").selectedindex)*60+eval(document.getElementsByName("MM1").selectedindex); //出発時刻 depart_time=eval(document.getElementsByName("HH2").selectedindex)*60+eval(document.getElementsByName("MM2").selectedindex); if (arrive_time > depart_time){ alert("出発時刻は到着時刻以降でなければなりません"); }else{ alert("入力内容は適切です"); } </script> </head> <body> <form name="s_box" action="./select_test.html" onsubmit="jikoku_chk()"> 到着時間 <select name="HH1"> <option>00 <option>01 <option>02 </select> : <select name="MM1"> <option>00 <option>01 <option>02 </select> <br><br> 出発時間 <select name="HH2"> <option>00 <option>01 <option>02 </select> : <select name="MM2"> <option>00 <option>01 <option>02 </select> <br> <input type="submit" value="登録"> </form> </body> </html>

  • セレクトボックスのリンクと値を渡す方法

    pealで以下の用に記述しているものを・・・ <script language=JavaScript> <!-- function page(v,s,f) { var val = v; var sid = s; var flg = f; document.go_page.method=\"post\"; document.go_page.action=val; document.go_page.sid.value=sid; document.go_page.flg.value=flg; document.go_page.submit(); } //--> </script> <a href=\"javascript:page('***.cgi','','','','$m')\">[$m]</a> 以下のような形にselectされた時点で値($m)を渡し、かつ同じページ(***.cgi)内で値に伴うリンクを飛ばし表示させるにはどのようにすればよいでしょうか? <form action=***.cgi> <select name=***> <option value="$m">$m</option> </form>

  • サーバーのフォルダ名をセレクトの値とする

    こんにちは、よろしくお願いします。 クラインと用のサーバーフォルダ検索フォームを作成したいです。 サーバーのデータ領域内のフォルダをそのままセレクトメニューの項目値にしたいのですが、何かいい方法はありますでしょうか? 【理由】 クラインと側でフォルダの登録・削除が頻繁に行われる(別処理)ため、リアルタイムで取得したい。 一応、フォルダ情報を取得する方法はCGIで考えているのですが、 -------------------- print <<"EOF"; <TR><TD>エリア名:</TD><TD><select name="AREA"> EOF ### エリア名表示処理 ### opendir(DIR, "$AREA"); while($file = readdir(DIR)){ print <<"EOF"; <option value ="$file">$file</option> EOF } closedir(DIR); print <<"EOF"; </select></TD> </TR> EOF -------------------- 同じようなものをあと3つ用意して、 セレクト(1)エリア(フォルダ)   ↓ 選択 セレクト(2)モデル(フォルダ)-セレクト(1)のモデル   ↓ 選択 セレクト(3)タイプ(フォルダ)-セレクト(2)のタイプ   ↓ 選択 セレクト(4)バージョン(フォルダ)-セレクト(3)のバージョン と紐付かせたいのですが、その方法がわかりません。 情報お持ちの方いらっしゃいましたら ご教授願えないでしょうか。 webサーバー・・・HP-UX web・・・IE CGI開発言語・・・Perl 開発端末・・・windows2000(Tera Term 使用) 以上、よろしくお願いいたします。

  • セレクトボックスの値を保持

    現在php等を使用してメールフォームを作成してる初心者です。 入力確認時、エラー等でフォーム画面に戻った時にセレクトボックスで 選択した情報を保持させたいのですが上手くいきません。 恐らく function MenuValue の指定の仕方が悪いのではと思うのですが・・・ 色々やってみてはいるのですがどう直したらよいか解りません。 ソースは・・・ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>メールフォーム</title> </head> <body> <?php ~中略~ /* ****************************************************************** 確認時エラー等でフォーム画面に戻った時に入力した情報が消えない設定 ドロップダウンリスト用 ****************************************************************** */ function MenuValue($v,$r) { if(!empty($_POST[$v])) { if($_POST[$v] == $r){ return " checked='checked'"; } } } お問い合わせ内容のカテゴリ<br> <select name="menu" id="menu"> <option value="未選択"'.MenuValue("menu","未選択").'>▼選択して下さい</option> <option value="野菜"'.MenuValue("menu","野菜").'>野菜</option> <option value="果物"'.MenuValue("menu","果物").'>果物</option> </select> <br> <br> <input name="reset" type="reset" id="reset" value="クリア"><input name="submit" type="submit" value="確認"> </form> ~後略~ となたかご指導宜しくお願い致します。 サンプルソース等添付頂ければ尚有難いです。

    • ベストアンサー
    • PHP
  • Perlで<select multiple>の複数データを取得する方法

    Perlで、<select multiple>のデータを取得する方法を教えてください。 以下のように複数選択できるselectタグがあります。これで送信したデータを Perlで受けると、ARRAY(0x9bf0d18)のようになってしまいます。 環境は、以下のとおりです。(必要な部分だけ記載しています) ■送信元のHTML <select name="test" size="3" multiple> <option value="a">a <option value="b">b <option value="c">c </select> ■受け側のPerl use CGI_Lite; my %in = $cgi->parse_form_data(); print"Content-type: text/html\n\n"; print"$in{'test'}\n"; ■結果 ARRAY(0x9bf0d18) 以上、よろしくお願いします。

    • ベストアンサー
    • Perl
  • セレクトボックスで指定した任意のCGIにPOSTしたい

    フォームでリクエストを送信する際、セレクトボックスで指定した任意のCGIにPOSTしたいのです JavaScriptで実現したいのですが...教えてくださいm(__)m 下記はフォームの中身です。 <form action="" method="post"> <input type="text" name="key_word"> <select name="S1"> <option selected value="error">CATEGORY <option value="search_1.cgi">SELECT_1 <option value="search_2.cgi">SELECT_2</option> </select> <input type="hidden" value="kw_search" name="mode"> <input type="submit" value="検索"></td> </form>

  • ショッピングカートによる値の受け渡し

    80種類の生地を選べるHTML(A.html)からその選んだ生地のnameを B.htmlに渡したいと考えております。 B.htmlというのは80種類共通の有料オプションがいろいろ選べるhtmlです。生地はそれぞれ値段が違うのでそのnameで区別していきたいと思うのですが、うまくデータを受け渡すことが出来ません。できたらCGIやPERLは使いたくありません。 追加:わけあって二つのHTMLはサーバーが違います。 どなたかお力をお貸しください宜しくお願いします。

  • JSONをperlで受け取る方法

    お世話になります。 jQueryを使用します。 Handsontableを使いたいと思います。 表に入力した内容をperlのCGIにデータ送信して、処理をしたいのですが どのようにすればいいのかがわからずにいます。 http://handsontable.com/demo/ajax.html こちらにサンプルがあるのですが、saveのときの処理がよくわかりません。 $.ajax の data にただの文字列を設定すれば、CGIでの受け取り方がわかるのですが、 表のデータ?(handsontable.getData()の部分)の場合、CGIではどのように 受け取れば良いのでしょうか? $.ajax({   url: "netaut2.cgi",   data: {"data": "abcde"},   dataType: 'json',   type: 'POST',    : } ↑こうであれば、CGI側は $form = new CGI; $val = $form->param('data'); このようにして$valに"abcde"とデータが取れますが、 var json_data = [ {"name" : "Taro", "age" : 19}, {"name" : "Hana", "age" : 25} ]; $.ajax({   url: "netaut2.cgi",   data: json_data,   dataType: 'json',   type: 'POST',    : } のようにした場合がわかりません。 宜しくお願い致します。

    • ベストアンサー
    • AJAX