• ベストアンサー

プルダウンのメニューを別ファイルに…

掲示板の投稿フォームにある print "<input type="text" name="name">"\n"; の部分を↓に変更 print "<select name=\"name1\">"; print "<option value=\"aaa\">aaa</option>"; print "<option value=\"bbb\">bbb</option>"; print "</select>"; print "<select name=\"name2\">"; print "<option value=\"aaa\">aaa</option>"; print "<option value=\"bbb\">bbb</option>"; print "</select>\n"; $name = $FORM{'name1'} . $FORM{'name2'}; このままですと、特に何の問題もなく使えるのですが、 print "<option value=\"aaa\">aaa</option>"; print "<option value=\"bbb\">bbb</option>"; の部分をname1 name2共に随時、追加や編集等を行いたい為、別ファイルで管理したいのです。 別で、name1.txt name2.txtを作って、そこに aaa bbb というように、一列に一項目を書いて管理をしたいのです 色々調べた結果、配列(Array)を使えばいい…という所まではいきついたのですが、そこから先が分からず、立ち往生しております どなたか、ご教授頂けませんでしょうか? よろしくお願い致します

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

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

  • ベストアンサー
回答No.2

配列を使うところだけでも・・・・。 # name1.txt の中身 aaa bbb ccc # 参考にしていただきたいスクリプト open IN,"name1.txt" or die $!; #ファイルを開く my @Array = <IN>; #一行づつ配列に格納する。 foreach $words ( @Array ){ #配列からひとつづつ要素を取り出す chomp $word; #行末の改行を取る print "<option value=\"", $words, "\">", $words, "</option>"; } # 参考にしていただきたいスクリプトはここまで 上記を実行すると <option value="aaa">aaa</option> <option value="bbb">bbb</option> <option value="ccc">ccc</option> が出力されます。 ファイルの大きさにもよりますが, 上記のforeachの部分は @array = map ("<option value=\"".$_. "\">".$_."</option>" , @array); print join "\n",@array; print "\n"; と書き換えることも可能です。

ttoottoorroo
質問者

お礼

$namefile1 = 'name1.txt'; $namefile2 = 'name2.txt'; print "<select name=\"name1\">"; open IN,"$namefile1" or die $!; #ファイルを開く my @Array = <IN>; #一行づつ配列に格納する。 foreach $name1 ( @Array ){ #配列からひとつづつ要素を取り出す chomp $word; #行末の改行を取る print "<option value=\"", $name1, "\">", $name1, "</option>"; } print "</select>\n"; print "<select name=\"name2\">"; open IN,"$namefile2" or die $!; #ファイルを開く my @Array = <IN>; #一行づつ配列に格納する。 foreach $name2 ( @Array ){ #配列からひとつづつ要素を取り出す chomp $word; #行末の改行を取る print "<option value=\"", $name2, "\">", $name2, "</option>"; } print "</select>\n"; $name = $FORM{'name1'} . $FORM{'name2'}; 教えて頂いた通り、上記のようにした所、全く持って理想的な形で利用できるようになりました! ありがとうございましたm(._.*)mペコッ

その他の回答 (1)

  • TagoSuck
  • ベストアンサー率72% (16/22)
回答No.1

name1.txtとname2.txtを読み込んで、それぞれのデータを配列に格納しておいて、必要個所でforeachで配列から取り出しながら、printで出力したらできそうですね。 ご健闘をお祈りいたします。

関連するQ&A

  • プルダウン選択によるボタンの表示/非表示に関して

    教えて下さい。 下のように、ONCHANGEイベントで、プルダウンにて選択された内容を、別のテキスト ('text')エリアに表示させる記述をしましたが、今度は選択された内容によって、 ボタンの表示/非表示をコントロールしたいと考えています。 実際には、下の記述で、'BBB'が選択された場合のみ、***よりしたの"日"ボタンを 表示させたいと考えています。 どのように記述すれば良いでしょうか。。。 教えて頂きたいと思います。 <SCRIPT LANGUAGE="JavaScript"> function ChangeSelection(form, selection,num) { v = selection.value; form.text.value = v; } <FORM NAME="fm_a" print("<TD><input name='text'></input>\n"); print("</TD>\n"); print("<TD><select name='am_note' ONCHANGE='ChangeSelection(this.form, this)'>\n"); print("<option value=''></option>\n"); print("<option value='AAA'>AAA</option>\n"); print("<option value='BBB'>BBB</option>\n"); print("<option value='CCC'>CCC</option>\n"); print("</select>\n"); print("</TD>\n"); ************************************************************** print("<TD>\n"); print("<input name='Cal' type='button' value='日'\n"); print("</TD>\n");

  • プルダウンメニューのリンクで別ウインドウを開く

    下記のようなプルダウンメニューを作成したのですが、同じウインドウ内でリンクするのではなく別ウインドウで開くようにするにはどこを変更すればよいのでしょうか? head内>>>>>>>>>>>>> <script language="JavaScript" type="text/JavaScript"> <!-- function gotoURL(formName){ var gotoUrl=document.forms[formName].elements[0].options[document.forms[formName].elements[0].selectedIndex].value document.location.href=gotoUrl } --> </script> body内>>>>>>>>>>>>>> <form name="fm0"> <select name="links"> <option selected><ここから選択してください></option> <option value="aaa.html">あああ</option> <option value="bbb.html">びびび</option> </select> <input name="BUTTON" TYPE=BUTTON onClick="gotoURL('fm0')" VALUE="GO!"></form>

  • php プルダウンメニュー

    メールフォームにて下記を作成しています。 <form action="confirm.php" method="post"> <select> <option>09:00</option> <option>09:30</option> <option>10:00</option> <option>10:30</option> </select> ~ <select> <option>11:00</option> <option>11:30</option> <option>12:00</option> <option>12:30</option> </select> </form> これを <?php //スタート時間の選択 print '<select name="start_time">' . "\n"; $start = date('Y') -0; $end = date('Y') +1; for ($i = $start; $i <= $end; $i++) { print '<option value="' . sprintf("%04d",$i) . '">' . sprintf("%04d",$i) . '</option>' . "\n"; } print '</select>~' . "\n"; //エンド時間の選択 print '<select name="end_time">' . "\n"; for ($i = 01; $i <= 31; $i++) { print '<option value="' . sprintf("%02d",$i) . '">' . sprintf("%02d",$i) . '</option>' . "\n"; } print '</select>' . "\n"; ?> の形のように記述できないでしょうか? 年月日の記述のためいろいろとおかしなとこがありますが、変更点等がございましたら、ご教授お願いします。

    • ベストアンサー
    • PHP
  • セレクトメニューが・・・

    CGIでHPをつくり、そのHPから入力HPへ飛びフォームの値をもとのHPに返すということをやっているのですが、ここで、セレクトメニューのvalueの値によってはそこのHPから入力のHPに飛べなくなるという現象がおきてます。 1部ですが、例を示すと・・・ print "<select name='place'>"; print "<option value='aaa:3821'>aaa</option>"; print "<option value='bbb3822'>bbb</option>"; print "<option value='ccc:3801'>ccc</option>"; print "<option value='ddd:3802'>ddd</option>"; print "</select>"; print "<br>"; となっていて、ここで小文字と数字の間に[\n]を1つでも入れるとエラーにはならずしっかり飛ぶことができますが、今のように全て文字と数字だけではなぜかエラーが起こってしまっています・・・ なぜなんでしょうか・・・・?

    • 締切済み
    • CGI
  • プルダウンのoptionの表示・非表示はできますか?

    JavaScriptを使ってプルダウン操作をしております。 一つ目のプルダウンで選択したあと2つ目のプルダウンのoptionの部分だけ表示・非表示をしたいのです。そんなことはできるのでしょうか? 下のソースで説明しますが、一つ目のリストで「あいうえお」を選択した時点で2つ目の選択リストの「ひらがな1」と「ひらがな2」だけを選択できるようにしたいのです。「カタカナ1」「カタカナ2」は非表示もしくは選択不可にできればいいのですが。 一つ目のプルダウンリスト <select name="formtype" onchange="form_indicate();"> <option value="AAA">あいうえお <option value="BBB">アイウエオ </select> 二つ目のプルダウンリスト <select name="formtype2"> <option value="aaa">ひらがな1 <option value="bbb">ひらがな2 <option value="ccc">カタカナ1 <option value="ddd">カタカナ2 </select>

  • php メールフォーム プルダウンメニュー

    プルダウンメニューを使用して、フォーム→確認→送信と順々に値を受け取りたいのですが、form.phpではプルダウンメニューは表示されますが、form.phpで選択したプルダウンメニューがconfirm.phpでは表示されません。 confirm.phpでも表示されてなおかつ送信をしたら受け取れるようにしたいのです。 初心者なので、いろいろと勉強をしながら、本を読んだり、調べたのですが、まったくわからずです。どなたかご教授お願いします。 form.php <form method="post" action="confirm.php"> <table cellpadding="0" cellspacing="0" border="0"><tr><td>項目</td><td>入力欄</td><td>記入例</td></tr> <tr><td><label for="name">名前</label></td><td><input type="text" size="50" name="name" id="name" value="<?php print h(@$_SESSION['name']); ?>" /></td><td>例:goo 太郎</td></tr> <tr><td><label for="mail">生年月日</label></td><td> <select name="year[]"><option value="1970">1970</option><option value="1971">1971</option><option value="1972">1972</option><option value="1973">1973</option><option value="1974">1974</option></select>年 <select name="month[]"><option value="01">01</option><option value="02">02</option><option value="03">03</option><option value="04">04</option><option value="05">05</option><option value="06">06</option></select>月 <select name="day[]"><option value="01">01</option><option value="02">02</option><option value="03">03</option><option value="04">04</option><option value="05">05</option><option value="06">06</option></select>日 </td><td>例:1990年01月01日</td></tr> <tr><td colspan="3" style="text-align:center;"><input type="hidden" name="aaa" value="<?php print h($aaa); ?>" /><input type="submit" value="確認" /></td></tr> </table></form> confirm.php session_start(); $_POST = checkInput($_POST); if (isset($_POST['aaa']) && isset($_SESSION['aaa'])) { $aaa = $_POST['aaa']; if (!in_array($aaa, $_SESSION['aaa'])) { die('不正アクセスの疑いがあります。'); } } else { die('不正アクセスの疑いがあります。'); } $name = isset($_POST['name']) ? $_POST['name'] : NULL; $kana = isset($_POST['kana']) ? $_POST['kana'] : NULL; $mail = isset($_POST['mail']) ? $_POST['mail'] : NULL; $comment = isset($_POST['comment']) ? $_POST['comment'] : NULL; $error = array(); ★★★各項目のチェック★★★ $_SESSION['name'] = $name; $_SESSION['kana'] = $kana; $_SESSION['mail'] = $mail; $_SESSION['comment'] = $comment; $_SESSION['error'] = $error; <table class="form" cellpadding="0" cellspacing="0" border="0"> <tr><td>項目</td><td>入力欄</td><td class="title_color" style="border-left:1px solid #ffffff;">記入例</td></tr> <tr><td>名前</td><td class="title_back2"><?php print h($name);?></td><td>例:goo 太郎</td></tr> <tr><td>生年月日</td><td>★★★★★ここにform.phpからのプルダウンメニューを受け取りたい★★★★★</td><td>例:1990年01月01日</td></tr> </table> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td><form action="form.php" method="post"><input type="submit" value="戻る" /></form></td> <td><form action="send.php" method="post"><input type="hidden" name="aaa" value="<?php print h($aaa);?>" /><input type="submit" value="送信" /></form></td> </tr></table>

    • ベストアンサー
    • PHP
  • 年月日のプルダウンメニューで教えてください。

    php初心者です。 セレクトメニューで悩んでいます。 以下のようなフォームを作っています。 プルダウンメニューで2007年1月1日を選んだ時 結果を20070101にし、SELECTDATEのaaaに持たせたいのですがどうすればいいのかわかりません。 どなたか教えてください。 <form name="etc" action="etc"> <?php echo "<select name=\"YEAR\">"; for ($i = 0; $i < 2; $i++) { echo "<option>".date("Y", strtotime("+$i year")); } echo "</select>年"; echo "<select name=\"MONTH\">"; (中略) echo "<select name=\"DAY\">"; (中略) ?> <input type="hidden" name="SELECTDATE" value="aaa" /> </form>

    • 締切済み
    • PHP
  • セレクトボックスの値を増やしたい

    お世話になります。 セレクトボックスのOPTION値を増やしたいのですが、何か良い方法はないでしょうか。 実現したいことは、ボタンを押したときにテキストボックスの値をセレクトボックスの最下部に表示したいということです。 <INPUT TYPE="text" NAME="add_txt" VALUE=""> <SELECT NAME="lst"> <OPTION VALUE="aaa">aaa <OPTION VALUE="bbb">bbb <OPTION VALUE="ccc">ccc </SELECT> <INPUT TYPE="button" NAME="ent" VALUE="実行"> ------------------ この状態からtextに"ddd"という値を入れて実行ボタンを押した後、 <SELECT NAME="lst"> <OPTION VALUE="aaa">aaa <OPTION VALUE="bbb">bbb <OPTION VALUE="ccc">ccc <OPTION VALUE="ddd">ddd </SELECT> このような状態にしたいのですが、なにか方法はありますか。 ご存知の方いましたら、回答お待ちしています。

  • JavaScript プルダウンメニュー選択時に同ウィンドウに表示できない。

    とあるサイトを参考にしながらJavaScriptでプルダウンメニューを作成しました。が、そのサイトは別ウィンドウで表示するプログラムが書かれていたので、同ウィンドウに表示したく、書き換えてみたのですが、できませんでした(ちなみに、別ウィンドウでは開けます)。下にタグを記します。 <head> <style type="text/css"><!-- .secondpulldown { display: none; }</style> <script type="text/javascript"><!-- function AllHide() { document.getElementById('aaa').style.display = 'none'; document.getElementById('bbb').style.display = 'none'; } function SetSubMenu( idname ) { AllHide(); if( idname != "" ) { document.getElementById(idname).style.display = 'block'; } } // --></script></head> <body> <form class="firstpulldown"> 分野選択: <select onchange="SetSubMenu(value);">   <option value="" selected>分野</option> <option value="aaa">●●</option> <option value="bbb">▼▼</option> </select> </form> <form id="aaa" class="secondpulldown" onsubmit="location.href=aaasites.value;"> <select id="aaasites"> <option value="../xx/xxxx.html">○○</option> <option value="../xx/xxxxx.html">××</option> </select> <input type="submit" value="GO!"> </form> <form id="bbb" class="secondpulldown" onsubmit="location.href=bbbsites.value;"> <select id="bbbsites"> <option value="../oo/oooo.html">▽▽</option> <option value="../oo/oooo.html">△△</option> </option> </select> </form> onsubmit="location.href=aaasites.value;" の部分が書き換えたもので、本来は"window.open(aaasites.value);" としてありました。上記に示したとおり、別ウィンドウで開きたくなかったので書き換えたのですが、作動しなくなってしまったので、つきましてはアドバイスをお待ちしております。 初めての投稿ですので、至らぬ点があるかもしれません。不足点などご指摘いただければわかる範囲で補足いたします。

  • プルダウンメニュー

     こんばんは。 日時をプルダウンメニューで選択するのですが、 月が変わると、内容も変わるようにしたいと思っています。JavaScriptで、出来ると聞いたのですが、 やり方が解りません。 このように書いてみたのですが、 画面には何も表示されません。 助けてください。 <SCRIPT LANGUAGE = "JavaScript"> <FORM NAME="form1" METHOD="post"> if (mm = 2){ document.write("<SELECT NAME="dd1" onChange="document.form1.dd.value=dd1.options[d d1.selectedIndex].value"> <OPTION VALUE="00"> <OPTION VALUE="16">16 <OPTION VALUE="17">17 <OPTION VALUE="18">18 <OPTION VALUE="19">19 <OPTION VALUE="20">20 <OPTION VALUE="21">21 <OPTION VALUE="22">22 <OPTION VALUE="23">23 <OPTION VALUE="24">24 <OPTION VALUE="25">25 <OPTION VALUE="26">26 <OPTION VALUE="27">27 <OPTION VALUE="28">28 </SELECT>日"); } if ((mm = 4) || (mm = 6) || (mm = 9) || (mm = 11)){ document.write("<SELECT NAME="dd1" onChange="document.form1.dd.value=dd1.options[d d1.selectedIndex].value"> <OPTION VALUE="00"> <OPTION VALUE="16">16 <OPTION VALUE="17">17 <OPTION VALUE="18">18 <OPTION VALUE="19">19 <OPTION VALUE="20">20 <OPTION VALUE="21">21 <OPTION VALUE="22">22 <OPTION VALUE="23">23 <OPTION VALUE="24">24 <OPTION VALUE="25">25 <OPTION VALUE="26">26 <OPTION VALUE="27">27 <OPTION VALUE="28">28 <OPTION VALUE="29">29 <OPTION VALUE="30">30 </SELECT>日"); } else{入らないので省きます。 </FORM> </SCRIPT>

専門家に質問してみよう