リストメニューに反映させる方法を教えてください

このQ&Aのポイント
  • list.datファイルに含まれるデータをセレクトメニューに反映させる方法を教えてください。
  • list.datファイル内の$listと$nameのデータを対応させ、両方の変数にデータが入っている場合のみセレクトメニューに表示させます。
  • 具体的な例として、$listと$nameが対応しないデータが含まれている場合でも、対応しているデータのみをセレクトメニューに表示させる方法を教えてください。
回答を見る
  • ベストアンサー

リストメニューに反映させる内容

list.dat 内 $list1,$list2,$list3,$list4,$list5,$name1,$name2,$name3,$name4,$name5, print "<select name=list>\n"; print "<option value="0">未選択</option>\n"; print "<option value="1">$name1</option>\n"; print "<option value="2">$name2</option>\n"; print "<option value="3">$name3</option>\n"; print "<option value="2">$name4</option>\n"; print "<option value="3">$name5</option>\n"; print "</select>\n"; list.dat内のデータをselectメニューに反映させたいのですが、自分の頭ではかなり難しい事のようで、行き詰ってしまいました。 質問の仕方が下手で、どのように書いていいのかわからないのですが、やりたいことは、 $list1の名前が$name1 $list2の名前が$name2 というように、$listと$nameに付けられた数値番号が同一のものがセットになります。 この両方の変数にデーターが入っている場合のみ、セレクトメニューに反映させます。 例えばlist.dat内が $list1,,$list3,,$list5,$name1,$name2,$name3,$name4,, のような場合は、 print "<select name=list>\n"; print "<option value="0">未選択</option>\n"; print "<option value="1">$name1</option>\n"; print "<option value="3">$name3</option>\n"; print "</select>\n"; このようになります。 上のような作りは無理でしょうか? お力をおかし頂けると幸いです。

  • Perl
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

たぶんこういうことじゃないんでしょうけど。 #!/usr/bin/perl use strict; use warnings; use Fatal qw(:void open close); use feature ':5.10'; while (my $line = <DATA>) { chomp $line; my @fields = split q{,}, $line; my @lists = splice @fields, 0, (scalar @fields + 1)/2; my @names = @fields; print qq{<select name="list">\n}; print qq{<option value="0">未選択</option>\n}; foreach my $item (@lists) { next if $item eq ''; my ($no) = $item =~ /(\d)/; if (defined $names[$no] && $names[$no] ne '') { printf qq{<option value="$no">$item</option>\n}; } } print "</select>\n"; print "\n\n"; } __END__ $list1,$list2,$list3,$list4,$list5,$name1,$name2,$name3,$name4,$name5, $list1,,$list3,,$list5,$name1,$name2,$name3,$name4,, 実行結果: <select name="list"> <option value="0">未選択</option> <option value="1">$list1</option> <option value="2">$list2</option> <option value="3">$list3</option> <option value="4">$list4</option> <option value="5">$list5</option> </select> <select name="list"> <option value="0">未選択</option> <option value="1">$list1</option> <option value="3">$list3</option> </select> どういうことをしたいのかもうちょっと具体的に補足していただけますか。

MASTER-PPC
質問者

補足

ありがとうございます。 ($list1,$list2,$list3,$list4,$list5,$name1,$name2,$name3,$name4,$name5) = split(/,/, $file); @list = ($list1,$list2,$list3,$list4,$list5); @name = ($name1,$name2,$name3,$name4,$name5); my $n = 0; foreach $i (0 .. $#list) { if (($list[$i]) && ($name[$i])) { $n++; print "<option value=\"$n\">$name[$i]</option>\n"; } } 説明不足で申し訳ございません。やりたいことは大体上記のような感じです。 このような感じでやってみましたところ何とか出来たようなのですが、大丈夫でしょうか? 教えていただいた方法も早速使わせていただきます。

関連するQ&A

  • リストメニューで検索できるようにしたい。

    いつもお世話になります。どうか御指導をお願い致します。 PHPとMYSQLを利用してリストメニューで検索できるようにしたいのですが。。。 下記のように、データベースの参照結果をリストメニューに反映して使用したいのですが、このままではリストメニューのselectedで選択されるデータが一番最終行になってしまいます。これを一番最初のデータ、もしくはこちらの指定するデータを選択させるにはどのようにすればよいのでしょうか? <form name="form1" method="post" action=""> <select name="select"> <?php $con = MYSQL_CONNECT("localhost","datebasename","password"); mysql_select_db("datebase00001"); $res = mysql_query("SELECT area_id, area_name FROM area"); while ($row = mysql_fetch_assoc($res)) { ?> <option value="<? $row['area_id'] ?>" selected><? echo $row['area_name'] ?></option> <? } ?> </select> </form> データベースの結果が 東京 名古屋 大阪 福岡 となった場合、このままでは、selected で表示されるのは、 福岡なってしまいます。 これを東京というようにしたいのです。 どうぞよろしくお願い致します。

    • ベストアンサー
    • PHP
  • プルダウンメニューの選択肢の保持について

    こちらにはだいぶお世話になっています。 perlとpostgresを使用してcgiを作成しているのですが、 下記のコードでプルダウンメニューにDBの値を入れて、 DBにデータが追加されてもプルダウンにもデータが追加されているプルダウンメニューを作りました。 $sql="select * from testtable order by code"; $result = $conn -> prepare($sql1); $ref = $result -> execute; while(@ref = $result->fetchrow){ $options.="<option value='$ref[0]'>$ref[1]</option>\n"; } $select="<select name=''>\n<option value=''>選択してください</option>\n$options</select>\n"; print "$select"; データの検索時にこのプルダウンメニューを使っているのですが、選らんだ選択肢を例えばBとして 送信すると、一番上の「選択してください」に戻ってしまします。 これを送信してもその時選択した選択肢を残すやり方を教えて頂けますでしょうか? testtableの中身:      プルダウンメニュー化 |code|name|      |選択してください▼| | 1 | A |         |    A    | | 2 | B |        → |    B    | | 3 | C |         |    C    | | 4 | D |         |    D    |

  • 『リスト/メニュー』の項目

    恐れ入りますが、質問させて頂きます。 現在DreamWeaverというソフトを使用してHPを作成しています。 そこで、閲覧者にリスト/メニューボックスを使用して月を選択 する部分を作成したいと考えております。(現在は以下の通り) ここを、現在の日にちによって選べる項目を変える仕様にしたい のですが、このような事は可能でしょうか? 具体的には2月20日までは項目『2』を選択出来るが、2月21日以降は 選択が不可になる等。 何卒、宜しくお願い致します。 <SELECT NAME="select"> <option value=""></option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </SELECT>

    • ベストアンサー
    • HTML
  • 日記のスクリプトで日付の移動メニューを作りたい

    日記スクリプトを書いているのですが 何年何月の日記のページに移動するのに セレクトメニューで移動するようにしたいのですが 以下のスクリプトだとどうしても日付が表示されません どこが間違っているのでしょうか print"<select name=>\n"; foreach(0 .. $year) { if($year eq "$w_year[$_]"){print"<option value=\"$w_year[$_]/$month[$_]/1\" selected>$w_year[$_]/$month[$_]\n";} else{print"<option value=\"$w_year[$_]/$month[$_]/1\">$w_year[$_]/$month[$_]\n";} } print"</select>\n";

    • 締切済み
    • CGI
  • フォームのメニューリストを外部ファイルを読み込んで動的生成する方法

    お世話になっております。 下記のような処理を実現したいのですが、どうも良い方法が 見つかりません。できるならばHTMLページにJavascriptを 埋め込む形で実現したいのですが、可能でしょうか。また 可能であればその方法もご教授頂けないでしょうか。 ・HTML内、フォームエレメントのメニューリストの項目を  外部ファイルを読み込んで動的に生成したい <select name="select"> <option value="1">リスト1</option> <option value="2">リスト2</option> <option value="3">リスト3</option> </select> 上記のvalueの値とリスト1、リスト2、リスト3の 部分を外部ファイルを読み込んで生成したいのです。 外部ファイルの内容は、CGIによって別途更新されます。 以上不足部分は補足致します。 どうぞよろしくお願いします。

  • リストボックス 複数選択のデータ受け渡し

    教えてください。PHP初心者です。 リストボックスを下記のように設置し、そこから別ファイルにデータの受け渡しをしたいのですが、どうしても上手く行きません。 データを受け継いだのち、複数の項目(さんまetc)を分別させるようにしたいです。 ========form.html============ <FORM method="POST" action="./get_data.php"> <SELECT size="15" name="list" multiple> <OPTION value="1">さんま</OPTION> <OPTION value="2">あじ</OPTION> <OPTION value="3">いか</OPTION> <OPTION value="4">かつお</OPTION> </SELECT> <INPUT type="submit" value=" 送信する "> </FORM> =========================================== ===========get_data.php==================== $LIST = array($_POST['list']); この後が分かりません。一応 foreach($LIST as $renew_list){ print "$renew_list\n"; print "<BR>\n"; } =========================================== 上記でやると、複数選択で選んだもの(例えば、さんまとあじ)の場合、 あじだけが表示されて、さんまは消えてしまいます。 どなたか助けてください。

    • ベストアンサー
    • PHP
  • プルダウンメニューの内容の取得方法ってありますか?

    プルダウンメニューで、VALUE値 選択された項目の内容って取得できないんでしょうか。 <FORM NAME="sltTest"> <SELECT NAME="slt01"> <OPTION VALUE="01">内容1</OPTION> <OPTION VALUE="02">内容2</OPTION> </SELECT> </FORM> たとえば上記のようなメニューのとき、 選択された「内容1」もしくは「内容2」を取得したいとき どう記述すれば取得可能でしょうか。

  • リストボックスを使って検索フォームを作りたいのですが

    教えて!gooの質問フォームのようなものが作りたいのですが出来なくて困っています。 リストボックスを2つ設けて、最初のリストボックスから選んだ項目によって、次のリストボックスに表示させる項目を選択したいのですが。 例えば、下のlist1のリストボックスから「名前」を選んだ場合にはlist2のリストボックスに氏名を、「日付」を選んだ場合には日付をリストに表示したいですが... <SELECT name="list1"><OPTION value=default>検索項目</OPTION> <option value=name>名前</option>); <option value=date>日付</option>); <option value=team>チーム</option>); </SELECT> <SELECT name="list2"><OPTION value=default>氏名</OPTION> <option value=suzuki>鈴木</option>); <option value=sato>佐藤</option>); <option value=tanaka>田中</option>); </SELECT> <SELECT name="list2"><OPTION value=default>日付</OPTION> <option value=2004>2004年度</option>); <option value=2003>2003年度</option>); <option value=2002>2002年度</option>); </SELECT> 書き方や説明が分かりにくいかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • 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
  • プルダウンのメニューを別ファイルに…

    掲示板の投稿フォームにある 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

専門家に質問してみよう