カレッヂ |
質問者 ぽんず
投稿日 11/17(月) 18:57:17
始めまして、ホンズといいます。よろしくお願いいたします。 MySQLと、Perlにて簡易データベースを作っています。 データベースの項目で、入力する値が限られているものについては、 Perlにてプルダンメニューを使って入力するようにしています。 そこで、質問なのですが、データベースを更新するページで、 今私が作っている更新ページでは、 <SELECT>文を使って、<OPTION VALUE="○">にて プルダウンメニューを作成しているため、毎回以前入力していた値を 再度入力し直す仕様になっています…(T△T) 理想としましては、更新ページを立ち上げたときにプルダウンメニューの 最初に選択されている値が、データベースの入力されている値になるような プルダウンメニューを作成したいのですが…
プロバイダ参照: |
回答者 しあわせのツボ
[削除]
投稿日 11/17(月) 19:52:16
既入力値とoption value値を見比べて、等しければoption selectedで出力するようにすれば解決します。 おそらく、selectタグの書き出し処理を大幅に変更することになるでしょうが…。 |
質問者 ぽんず
[削除]
投稿日 11/17(月) 21:48:43
しあわせのツボ様 早速の回答ありがとうございます。 私も少ない知識から、既入力値をoption selectedに割り当てればいいとは 思いましたが、いかんせん私には、うまくコードが記述できません。 すみませんが、少しヒントを頂けませんでしょうか…<(_ _)> |
回答者 しあわせのツボ
[削除]
投稿日 11/18(火) 00:29:52
SQLを使ったコードを書いたことがないので…。 泥臭い方法としては、SQLでselectを叩いて既入力値を得ておいてから、 print '<option value="foo"'; print ' selected' if $var eq "foo"; print '>'; のようにひたすら並べていけば、とりあえず目的は果たせます。 配列を使って $select1[$var] = ' selected'; print "<option value=\"foo\"$select1[foo]>"; のようにすれば少しはスマートかもしれません。 |
回答者 しあわせのツボ
[削除]
投稿日 11/18(火) 11:44:36
あ、寝ぼけてた…。ハッシュなので[]でなく{}ですね。 $select1{$var} = ' selected'; print "<option value=?"foo?"$select1{foo}>"; |
質問者 ぽんず
[削除]
投稿日 11/20(木) 00:13:34
しあわせのツボ様 早速の回答をありがとうございます。 書いて頂いたコードを参考にして、記述してみたのですが、どうも上手く 行きません。 大変お手数ですが、もう少し教えてください。 SQLからは、一応データは、読み込めていることは、確認しております。 <ここから自ら記述してみたコードです。> $genreにSQLから取得した値が代入されています。 print '<SELECT NAME="Genre">'; print '<OPTION VALUE="J-POP"'; print 'SELECTED' if $genre eq "J-POP"; print '>'J-POP</OPTION>'; print '<OPTION VALUE="クラシック"'; print 'SELECTED' if $genre eq "クラシック"; print '>'クラシック</OPTION>'; print '<OPTION VALUE="洋楽"'; print 'SELECTED' if $genre eq "洋楽"; print '</SELECT>'; |
質問者 ぽんず
[削除]
投稿日 11/20(木) 00:16:58
すみません。抜けていた行があったので、再度記述します。 print '<SELECT NAME="Genre">'; print '<OPTION VALUE="J-POP"'; print 'SELECTED' if $genre eq "J-POP"; print '>'J-POP</OPTION>'; print '<OPTION VALUE="クラシック"'; print 'SELECTED' if $genre eq "クラシック"; print '>'クラシック</OPTION>'; print '<OPTION VALUE="洋楽"'; print 'SELECTED' if $genre eq "洋楽"; print '>'洋楽</OPTION>'; print '</SELECT>'; よろしくお願いいたします。 |
回答者 しあわせのツボ
[削除]
投稿日 11/20(木) 12:10:00
2点。 optionタグを閉じた直後の ' は削除してください。 selectedの直前に半角スペースを入れてください。 |
質問者 ぽんず
[削除]
投稿日 11/21(金) 01:15:06
しあわせのツボ様 毎回の丁寧な回答ありがとうございます。 先程のアドバイスを元に下記のように書き換えますと、うまく動作いたしました。 print '<SELECT NAME="Genre">'; print '<OPTION VALUE="J-POP"'; print ' SELECTED' if $went eq "J-POP"; print '>J-POP</OPTION>'; print '<OPTION VALUE="クラシック"'; print ' SELECTED' if $went eq "クラシック"; print '>クラシック</OPTION>'; print '<OPTION VALUE="洋楽"'; print ' SELECTED' if $went eq "洋楽"; print '>洋楽</OPTION>'; print '</SELECT>'; ありがとうございました。<(_ _)> この際なので、もしよろしければ、以前教えて頂いた $select1{$var} = ' selected'; print "<option value=?"foo?"$select1{foo}>"; 上記のコードの場合も教えてください。 |
質問者 ぽんず
[削除]
投稿日 11/21(金) 01:24:21
すみません。 間違いました… print '<SELECT NAME="Genre">'; print '<OPTION VALUE="J-POP"'; print ' SELECTED' if $genre eq "J-POP"; print '>J-POP</OPTION>'; print '<OPTION VALUE="クラシック"'; print ' SELECTED' if $genre eq "クラシック"; print '>クラシック</OPTION>'; print '<OPTION VALUE="洋楽"'; print ' SELECTED' if $genre eq "洋楽"; print '>洋楽</OPTION>'; print '</SELECT>'; 先程のコードを $select1{$var} = ' selected'; print "<option value=?"foo?"$select1{foo}>"; の方法で記述してみました。 print '<SELECT NAME="Genre">'; $select1{$genre} = ' selected'; print "<option value=?"J-POP?"$select1{J-POP}>"; print "<option value=?"クラシック?"$select1{クラシック}>"; print "<option value=?"洋楽?"$select1{洋楽}>"; print '</SELECT>'; このようになると解釈しているのですが、どうでしょうか。 アドバイスをよろしくお願いいたします。 |
回答者 しあわせのツボ
[削除]
投稿日 11/21(金) 13:41:09
その通りです。(でもハッシュ名に日本語使えたっけかな…) 既定値を使いたいだけなら、ずるい方法もあります。 最初のoptionとして <option value="$genre" selected>変更しない($genre)</option> を出力してしまうだけ。 きれいではありませんが、処理は一番簡単です(笑) |
質問者 ぽんず
[削除]
投稿日 11/23(日) 01:08:44
しあわせのツボ様 毎回丁寧な回答ありがとうございます。 >既定値を使いたいだけなら、ずるい方法もあります。 >最初のoptionとして ><option value="$genre" selected>変更しない($genre)</option> >を出力してしまうだけ。 確かに、単純で明確な方法ですね!! プログラムは、単純な方がすばらしいと思います。 最後になりましたが、今回の私の問題は、無事解決いたしましたので、 この項目は、閉めさせていただきます。 しあわせのツボ様、本当にありがとうございまいた。<m(__)m> まだまだ、初心者なので、これからもここのお世話になると思いますが、 その時は、よろしくお願いいたします。 |
このページは終了したので返信(回答)は書きこめません
Web裏技 |