- ベストアンサー
プルダウンのメニューを別ファイルに…
掲示板の投稿フォームにある 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)を使えばいい…という所まではいきついたのですが、そこから先が分からず、立ち往生しております どなたか、ご教授頂けませんでしょうか? よろしくお願い致します
- みんなの回答 (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"; と書き換えることも可能です。
その他の回答 (1)
- TagoSuck
- ベストアンサー率72% (16/22)
name1.txtとname2.txtを読み込んで、それぞれのデータを配列に格納しておいて、必要個所でforeachで配列から取り出しながら、printで出力したらできそうですね。 ご健闘をお祈りいたします。
お礼
$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ペコッ