![]() |
| カレッヂ |
質問者 もぐもぐ
投稿日 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裏技 |