■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■               CGI3分クッキング                                  Vol:033                          発行日: 1999年11月02日                        総発行部数:     1552部                            (1999年11月03日現在) ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ◆PR◆-------------------------------------------------------------------- ●おいしいお肉でお馴染の「いづつ屋」では、  只今100名様限定キャンペーン中。  牛タンのみそ漬けを1000円にてご奉仕中!  めちゃくちゃ美味しいお肉を、是非ご賞味下さいませ。  http://www.tanba-izutsuya.com/ --------------------------------------------------------------------◆PR◆ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ◆目次◆ ●Web新撰組ニュース ●今日の献立:「熱血!検索君」にちょっと近づいてきた ●予告 ●はぎちゃん今日のひとこと ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ◆PR◆-------------------------------------------------------------------- 朗報!「働きたいけど家庭も大切にしたい」「資格取得し転職したい」あなたに! (^o^)  《医療事務》ならピッタリ☆  ◆全国で11・12月生募集中!◆ click< http://a.clickincome.net/md/dk?mid=7554b0fbf99f5ba5ff4c833735dac9db > --------------------------------------------------------------------◆PR◆ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ●Web新撰組ニュース   メールを使った新しい遊びを追及する「メールで遊ぼう!」。   出会いの広場「みんなの掲示板」も登場!   http://www.web-kyoto.com/vmail/   へGO!   Web新撰組メンバー執筆のCGI参考書。   「Perlで作る楽しいCGI」は、エーアイ出版のエーアイムックNo.237。   内容についての御質問は、新撰組ML(http://www.web-kyoto.com/ml/)へ。 ●今日の献立:「熱血!検索君」にちょっと近づいてきた   前々回に作ったスクリプトをCGIとして動かしてみます。   ファイル名test2.cgi -------------------------------------------------- 1:#!/usr/local/bin/perl 2: 3:use Sprite; 4: 5:$CgiName='./test2.cgi'; 6:$action="ShowHtmlForm"; 7: 8:%FORM=&GetFormdata; 9: 10:$action=$FORM{'action'} if($FORM{'action'}); 11: 12:if($action eq 'SerchDB'){ 13: $name=$FORM{'name'} if($FORM{'name'}); 14: $age=$FORM{'age'} if($FORM{'age'}); 15: $phone=$FORM{'phone'} if($FORM{'phone'}); 16: $note=$FORM{'note'} if($FORM{'note'}); 17: 18: $sep1=$FORM{'sep1'}; 19: $sep2=$FORM{'sep2'}; 20: $sep3=$FORM{'sep3'}; 21: 22: $agesep=$FORM{'agesep'}; 23: 24: $query = 'select * from phone.db '; 25: if($name){ 26: $query = $query . 'where (name =~ /' . $name . '/) '; 27: $wherechk=1; 28: } 29: 30: if($age){ 31: if($wherechk){ 32: $query = $query . $sep1 . ' (age ' . $agesep . ' ' . $age . ') '; 33: }else{ 34: $query = $query . 'where (age ' . $agesep . ' ' . $age . ') '; 35: } 36: $wherechk=1; 37: } 38: 39: if($phone){ 40: if($wherechk){ 41: $query = $query . $sep2 . ' ( phone = ' . $phone . ') '; 42: }else{ 43: $query = $query . 'where ( phone = ' . $phone . ') '; 44: } 45: $wherechk=1; 46: } 47: 48: if($note){ 49: if($wherechk){ 50: $query = $query . $sep3 . ' ( note =~ /' . $note . '/) '; 51: }else{ 52: $query = $query . 'where ( note =~ /' . $note . '/) '; 53: } 54: $wherechk=1; 55: } 56: 57: 58: $rdb = new Sprite; 59: $rdb->set_os ('UNIX'); 60: $rdb->set_delimiter('Read',','); 61: 62: @data = $rdb->sql($query); 63: 64: $status=shift(@data); 65: 66: print <<"EOL"; 67:Content-type: text/html 68: 69: 70: 71: 72:Test of Sprite 73:
74:$queryによる検索結果です 75:EOL 76: 77: if($status == 1){ 78: print <<"EOL"; 79: 80: 81: 82: 83:EOL 84: foreach $line (@data) { 85: ($db_name,$db_age,$db_phone,$db_note)=split(/\0/,$line); 86: print <<"EOL"; 87: 88: 89: 90:EOL 91: } 92: 93: print "
なまえ年齢電話番号備考
$db_name$db_age$db_phone$db_note
\n"; 94:}else{ 95: 96: print "検索に失敗しました\n"; 97: 98:} 99:$rdb->close(); 100: 101: &ShowForm; 102: 103:}else{ 104: print <<"EOL"; 105:Content-type: text/html 106: 107: 108: 109: 110:Test of Sprite 111:
112:検索項目を記入して、検索ボタンを押して下さい。
113:何も記入しないと、全てのデータが表示されます。 114:EOL 115: 116: &ShowForm; 117: 118:} 119: 120: print "\n"; 121:exit; 122: 123:sub ShowForm { 124: 125: print <<"EOL"; 126:
127: 128: 129: 130: 131: 132: 133: 135: 136: 137: 138: 141: 142: 143: 145: 146: 147: 148: 149: 150: 152: 153: 154: 155: 156: 157: 158: 159:
名前にを含む
しかも
134: または
年齢が以下
139: 以上
140: ぴったし
しかも
144: または
電話番号が
しかも
151: または
てな感じの人
160:EOL 161:} 162: 163:sub GetFormdata { 164: local($buffer,$name,$value,@pairs,%FORM); 165: 166: require 'jcode.pl'; 167: 168: if ($ENV{'REQUEST_METHOD'} eq "POST"){ 169: read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); 170: }else{ 171: $buffer = $ENV{'QUERY_STRING'}; 172: } 173: 174: @pairs = split(/&/,$buffer); 175: foreach (@pairs) { 176: ($name, $value) = split(/=/, $_); 177: $value =~ tr/+/ /; 178: $value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg; 179: $value =~ s/[\r\n]//g; 180: &jcode'convert(*value,'euc'); 181: $FORM{$name} = $value; 182: } 183: 184: return(%FORM); 185:} -------------------------------------------------- データファイル(ファイル名はphone.db) -------------------------------------------------- 1:name,age,phone,note 2:はぎちゃん,36,0901111111111,かっちょいい 3:鷹,36,090222222222222,かっちょわるい --------------------------------------------------   前についてる数字は、行番号ですので、実際のスクリプトには不要です。   これを、データファイル(phone.db)とjcode.plと一緒にサーバーに転送し、 パーミッションを755にしてブラウザでアクセスしてみて下さい。   phone.dbには2つしかデータがないので、適当にデータを追加すると動きが よく分かると思います。   年齢36才ぴったし、で検索すると、「はぎちゃん、鷹」が表示されます。 「しかも」「かっちょわるい」って感じの人、を追加すれば、「鷹」だけ表示され ます。   (注意:test2.cgiもphone.dbもEUCで書いて下さいね)   長くなったので、解説は次回にまわしまする。   おお!なんだか「熱血・検索くん」っぽくなって来たぞ、、、と思いつつ続く ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ◆予告◆------------------------------------------------------------------ ●次回は、「熱血・検索くん」です。  (いつごろ完成するかは不明です) ------------------------------------------------------------------◆予告◆ ◆PR◆-------------------------------------------------------------------- ▽御社ホームページのディスク容量、全て必要? コスト、高すぎませんか?▽ ▼リムネットならではのナットク価格、月5,000円の独自ドメインサーバー!▼ click< http://a.clickincome.net/md/dk?mid=66a99a1b67d3e8d39297bda26e0d5db4 > ///////// やりたいって言ったら、今すぐやりたいんだい!! いや〜んえっちぃ〜〜、、、じゃないよ、ゲームのお話し。 欲しいソフトが発売日に手元に届きます。こりゃええわい。 てなわけで、こちらにどうぞ。 http://takafumi.grabit.net/powersoft/ --------------------------------------------------------------------◆PR◆ このメールマガジンは、 Subject部が、CGI3分クッキング【Vol.番号】は、まぐまぐ様にて、 ( http://www.mag2.com/ ) Subject部が、CGI3分クッキング Vol.【番号】は、Macky様にて、 ( http://macky.nifty.ne.jp/ ) Subject部が、CGI3分クッキング番号 は、Pubzine様にて、 配布致しています。 メールマガジンの解除について まぐまぐ様の解除は、 http://www.web-kyoto.com/dp/3min/ に、削除及び登録フォームを用意致しております。 Macky様の解除は、 http://macky.nifty.ne.jp/ を参考して下さい。 Pubzine様の解除は、 http://www.pubzine.com/srchid.asp?keyword=1379 に、削除及び登録フォームを用意致しております。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ◆はぎちゃん今日のひとこと◆------------------------------------------  ●組長が今日から犬の躾教室に行くそうです。   面白そうなのでついて行こうかと思いましたが、犬にしつけを教わってい   る組長を想像してしまい、やっぱり行くのをやめました。   飼い犬には気をつけましょうね。 ------------------------------------------◆はぎちゃん今日のひとこと◆ ◆お願い◆ このマガジンについてのお問い合わせは、WEB新撰組メーリングリストで、 お願い致します。 はぎちゃんについての、麗しいお嬢様からのお問い合わせがないので寂しいです。 参加方法は、 http://www.web-kyoto.com/ml/ を参考にして下さい。 ◆担当者◆ 本文文責    :Web新撰組プログラマー萩原逸郎(はぎちゃん) Web新撰組  :http://www.web-kyoto.com/ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■