■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■               CGI3分クッキング                                  Vol:036                          発行日: 1999年11月12日                        総発行部数:     1602部                            (1999年11月11日現在) ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ◆PR◆-------------------------------------------------------------------- ●おいしいお肉でお馴染の「いづつ屋」では、  只今100名様限定キャンペーン中。  牛タンのみそ漬けを1000円にてご奉仕中!  めちゃくちゃ美味しいお肉を、是非ご賞味下さいませ。  http://www.tanba-izutsuya.com/ --------------------------------------------------------------------◆PR◆ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ◆目次◆ ●Web新撰組ニュース ●今日の献立:検索CGIを作りましょ(その2) ●予告 ●はぎちゃん今日のひとこと ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ◆PR◆-------------------------------------------------------------------- ◆ いまからでも間に合う 「SE・プラグラマーを目指して頂ける方」大募集!◆ ◆ 11月16日(火) ◆ 専門・短大・大学・中途の方を対象にセミナー開催! ◆ click< http://a.clickincome.net/md/dk?mid=dacdd53a9b97756d3d0dffefe6f4f62b > --------------------------------------------------------------------◆PR◆ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ●Web新撰組ニュース   メールを使った新しい遊びを追及する「メールで遊ぼう!」。   出会いの広場「みんなの掲示板」も登場!   http://www.web-kyoto.com/vmail/   へGO!   Web新撰組メンバー執筆のCGI参考書。   「Perlで作る楽しいCGI」は、エーアイ出版のエーアイムックNo.237。   内容についての御質問は、新撰組ML(http://www.web-kyoto.com/ml/)へ。 ●今日の献立:検索CGIを作りましょ(その2)   今回は検索部分を作っていきます。 ◇前回の続き。。。 ----------------------------------------------- 1:#!/usr/local/bin/perl 2: 3:use Sprite; #Spriteの読み込み 4:$CgiName='hserch.cgi'; #このCGIのファイル名 5:$CgiTitle='熱血!検索君'; #このCGIの名前 6:$DBFile='book.db'; #データファイル名 7: 8:%FORM=&GetFormdata; #フォームの内容を%FORMに入れる 9: 10:if($FORM{'action'}){ #actionによって動作を変える 11: $action=$FORM{'action'}; 12:}else{ 13: $action="show_serch_form"; 14:} 15: 16:if($action eq 'show_serch_form'){ 17: &ShowSerchForm; 18:}elsif($action eq 'serch'){ 19: &SerchValues; 20:} -----------------------------------------------   16,17行目は検索フォーム表示です。   18,19行目は今回作る検索部分を呼びだします。   検索サブルーチンを作りましょう。 ----------------------------------------------- 1:sub SerchValues { 2: $title=$FORM{'title'} if($FORM{'title'}); #題名 3: $title_kana=$FORM{'title_kana'} if($FORM{'title_kana'}); #題名かな 4: $author=$FORM{'author'} if($FORM{'author'}); #作者 5: $author_kana=$FORM{'author_kana'} if($FORM{'author_kana'}); #作者かな 6: $group=$FORM{'group'} if($FORM{'group'}); #分類 7: $note=$FORM{'note'} if($FORM{'note'}); #備考 8: $sep1=$FORM{'sep1'}; #and/or 9: $sep2=$FORM{'sep2'}; 10: $sep3=$FORM{'sep3'}; 11: $sep4=$FORM{'sep4'}; 12: $sep5=$FORM{'sep5'}; 13: 14: 15: $query = 'select * from ' . $DBFile . ' '; 16: if($title){ 17: $query = $query . 'where (title =~ /' . $title . '/) '; 18: $query = $query . 'or (syuurokusaki =~ /' . $title . '/) or '; 19: $query = $query . '(syuuroku =~ /' . $title . '/) '; 20: $wherechk=1; 21: } 22: 23: if($title_kana){ 24: if($wherechk){ 25: $query = $query . $sep1 . ' (title_kana =~ /' . $title_kana . '/) '; 26: }else{ 27: $query = $query . 'where (title_kana =~ /' . $title_kana . '/) '; 28: } 29: $query = $query . 'or (syuurokusaki_kana =~ /' . $title_kana . '/) '; 30: $query = $query . 'or (syuuroku_kana =~ /' . $title_kana . '/) '; 31: $wherechk=1; 32: } 33: 34: if($author){ 35: if($wherechk){ 36: $query = $query . $sep2 . ' (author =~ /' . $author . '/) '; 37: }else{ 38: $query = $query . 'where (author =~ /' . $author . '/) '; 39: } 30: $wherechk=1; 31: } 32: 33: if($author_kana){ 34: if($wherechk){ 35: $query = $query . $sep3 . ' ($groupauthor_kana =~ /' . $author . '/) '; 36: }else{ 37: $query = $query . 'where (author_kana =~ /' . $author . '/) '; 38: } 39: $wherechk=1; 40: } 41: 42: if($group){ 43: if($wherechk){ 44: $query = $query . $sep4 . ' (group = "' . $group . '") '; 45: }else{ 46: $query = $query . 'where (group = "' . $group . '") '; 47: } 48: $wherechk=1; 49: } 50: 51: if($note){ 52: if($wherechk){ 53: $query = $query . $sep4 . ' (note =~ /' . $note . '/)'; 54: }else{ 55: $query = $query . 'where (note =~ /' . $note . '/)'; 56: } 57: } 58: 59: $rdb = new Sprite; 60: $rdb->set_os ('UNIX'); 61: $rdb->set_delimiter('Read',','); 62: 63: @data = $rdb->sql($query); 64: $status=shift(@data); 65: 66: print <<"EOL"; 67:Content-type: text/html 68: 69: 70: 71: 72:$CgiTitle 73: 74:
75: 76:[ データ検索 ] 77:[ データ入力 ] 78:[ データ変更 ] 79: 80:
81:検索結果 82: 83:
84: 85:
86:EOL 87: 88: if($status == 1){ 89: 90: if(@data <= 0){ 91: print "該当するデータはありません\n"; 92: }else{ 93: foreach $line (@data) { 94: ($db_title,$db_title_kana,$db_author,$db_author_kana,$db_honyaku, 95: $db_syuurokusaki,$db_syuurokusaki_kana,$db_syuuroku, 96: $db_syuuroku_kana,$db_country,$db_syuppan,$db_date,$db_price, 97: $db_ISBN,$db_group,$db_kounyu,$db_URL,$db_URL_ALT, 98: $db_note)=split(/\0/,$line); 99: 100: $db_author =~ s/,/
/g; 101: $db_author_kana =~ s/,/
/g; 102: $db_honyaku =~ s/,/
/g; 103: $db_syuurokusaki =~ s/,/
/g; 104: $db_syuurokusaki_kana =~ s/,/
/g; 105: $db_syuuroku =~ s/,/
/g; 106: $db_syuuroku_kana =~ s/,/
/g; 107: $db_country =~ s/,/
/g; 108: 109: print <<"EOL"; 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129:
題名$db_title
題名よみがな$db_title_kana
作者$db_author
作者よみがな$db_author_kana
訳者$db_honyaku
収録先$db_syuurokusaki
収録先よみがな$db_syuurokusaki_kana
収録作品$db_syuuroku
収録作品よみがな$db_syuuroku_kana
国名$db_country
出版社$db_syuppan
発行年月日$db_date
値段$db_price
ISBN$db_ISBN
分類$db_group
購入日$db_kounyu
関連URL$db_URL_ALT
備考$db_note
130:
131:EOL 132: } 133: } 134: 135: }else{ 136: print "検索に失敗しました\n"; 137: } 138: 139: print ""; 140: 141: $rdb->close(); 142: 143:} -----------------------------------------------   てな具合です。   これも、GetFormdataと同じように最後の方に書いておきます。   ちょっといい加減かも知れないけど、完成時にはきちんとしよう、、、   と思いつつ続く ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ◆予告◆------------------------------------------------------------------ ●次回は、データ入力部分を作りましょう。 ------------------------------------------------------------------◆予告◆ ◆PR◆-------------------------------------------------------------------- ■ 機能多彩&高速レンタルサーバー ■ 50MB+6POPで3,400円/月より。ドメイン登録は今すぐ! click< http://a.clickincome.net/md/dk?mid=8dc3438c53d606350e58104c33cef187 > ///////// やりたいって言ったら、今すぐやりたいんだい!! いや〜んえっちぃ〜〜、、、じゃないよ、ゲームのお話し。 欲しいソフトが発売日に手元に届きます。こりゃええわい。 てなわけで、こちらにどうぞ。 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 に、削除及び登録フォームを用意致しております。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ◆はぎちゃん今日のひとこと◆------------------------------------------  ●今から言ってたら鬼が大笑いだけど・・・   年末年始のお休みのお知らせです。   12月28日(火)、12月31日(金)   2000年1月4日(火)、1月7日(金)   のCGI3分クッキングはお休みします。   今から言ってても忘れるとおもうので、年末にまたお知らせします。   って・・・わたし自信が忘れて配信するかもしれないなぁ・・・ ------------------------------------------◆はぎちゃん今日のひとこと◆ ◆お願い◆ このマガジンについてのお問い合わせは、WEB新撰組メーリングリストで、 お願い致します。 はぎちゃんについての、麗しいお嬢様からのお問い合わせがないので寂しいです。 参加方法は、 http://www.web-kyoto.com/ml/ を参考にして下さい。 ◆担当者◆ 本文文責    :Web新撰組プログラマー萩原逸郎(はぎちゃん) Web新撰組  :http://www.web-kyoto.com/ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■