カレッヂ |
質問者 もぐもぐ
投稿日 2004/7/26(月) 18:47:22
続けての質問でスイマセン(汗) 簡易データベースを利用して、以下のようなリストがあると します。 $file ="item.list"; ---------------------------------- 1,01,りんご,200, 2,01,ばなな,100, 3,02,きゅうり,10, 4,01,みかん,50, 5,02,なす,100, ---------------------------------- これを条件を全てallで表示したとすると コード 区分 品名 金額 --------------------------------------- 1 01 りんご 200 2 01 ばなな 100 3 02 きゅうり 10 ・ ・ ・ となると思うんですけど、この区分を表示させるために 別の外部データ $Catefile ="Cate.list"; ---------------------------------- 01,果物 02,野菜 ---------------------------------- を読み込ませて コード 区分 品名 金額 --------------------------------------- 1 果物 りんご 200 2 果物 ばなな 100 3 野菜 きゅうり 10 ・ ・ ・ のようにしたいのです・・・。 自分なりに考えて open(IN,"Cate.list") || &error("Open Error: だめだめ"); while (<IN>) { ($code,$kubun) = split(/\,/); #たぶんここに何か書くのかなぁ・・; } close(IN); までは思いついたんですけど、ここから先がどーにもこーにも 一人では解決が付きませんでした。 数が少ないときは別ファイルにする必要もないと思うのですが、 10〜20になると、別ファイルにしておくと後々便利かなぁと思い、 勉強を始めました。 なにかヒントだけでもいただけると嬉しいです。 宜しくお願いいたします。
プロバイダ参照: |
回答者 しあわせのツボ
[削除]
投稿日 2004/7/26(月) 20:01:03
私なら連想配列を使います(区分記号が必ず数字なら普通の配列の方がいいかもしれませんが)。 何か書くのかなーの所に $cat_name{$code}=$kubun; のようにしておき($FORM{コントロール名}=$value; はよく見ますよね)、 表示の際に区分記号のかわりに$cat_name{区分記号}を出させれば。 |
質問者 もぐもぐ
[削除]
投稿日 2004/7/26(月) 21:12:19
しあわせのツボさん、前回に引き続き本当にありがとうござ います。m(._.)m 試してみたところ、希望通りに表現されました。感激です。 更に追加で申し訳ないのですか、このデータをセレクトボッ クスに埋め込む、といった方法はあるのでしょうか? 色々なソースを見て回って勉強しているのですが・・。 print"<select name=mogumogu>\n"; foreach(0 .. $#mog) { if($mogg eq "$mog[$_]"){ print"<option value=\"$mog[$_]\" selected>$mog[$_]\n";} else{ print"<option value=\"$mog[$_]\">$mog[$_]\n";} print"</select>\n"; タブンこんなものを使うのだろう、までは分かったのですが 「#mog」部分の意味が分からなくて詰まってしまいました。 現在はif〜elsif〜elseだけでずらずら書いてます。 この場合、セットする項目が10個もあると、10個分の記述が必 要になるのでソースがぜんぜん美しくないです。 今回、せっかく連想配列の使い方を教えていただいたので、 うまく foreachと組み合わせる方法をご指導いただけませんで しょうか? お手すきのときに回答頂けると嬉しいです。宜しくお願いい たします。 |
回答者 しあわせのツボ
[削除]
投稿日 2004/7/26(月) 23:45:20
$#変数名 は、@変数名 の最大添字です。 @変数の要素数が14なら、(添字は0から始まるので)$#変数は13。 で、今回は@配列でなく%連想配列なので、eachを使います。 セレクトボックス云々がちょっと判断しかねるのですが、提示された例に沿うならば while(($key,$val)=each %cat_name){print "<option value=$key>$val";} で、とりあえず期待する結果は得られると思います。 |
質問者 もぐもぐ
[削除]
投稿日 2004/7/27(火) 11:50:30
しあわせのツボさん!引き続き本当に本当にありがとう ございます。m(._.)m ご回答いただいた例を元にif文を加えたところ、望みど おりの動作を行わせることに成功しました。 ※セレクトボックス云々は、現在選択されているコードで selectedを加えたかったのです。(汗)例えば「03」のデ ータ表示中なら <select name=mogumogu> <option Value="01">ぱくぱく</option> <option Value="02">がつがつ</option> <option Value="03" selected>もぐもぐ</option> </select> と表現させたかったのです・・・。 日本語も勉強しなおさねば・・・(反省) これでごちゃごちゃしたソースにならず、スマートに 表現できそうです! 本当にありがとうございました。 |
このページは終了したので返信(回答)は書きこめません
Web裏技 |