#!/usr/bin/perl # # 浅海住建物件検索CGI # Scripting by murayama@i-surf.co.jp require '../jcode.pl'; ############ # 変数設定 # ############ $file = 'chintai.txt'; #データファイル $page = 12; #表示件数 $request_method = $ENV{"REQUEST_METHOD"}; #リクエストメソッド $tax = 0.05; #税率 $stat = (stat($file))[9]; ($null,$null,$null,$s_day,$s_mon,$s_year,$null,$null,$null) = localtime $stat; $s_year = $s_year + 1900; $s_mon = $s_mon + 1; ########################## # 入力メソッドによる選択 # ########################## sub readData { local(*queryString) = @_ if @_; if ($request_method eq "GET") {&readGetData(*queryString);} if ($request_method eq "POST") {&readPostData(*queryString);} return 1; } ########################### # method=GET の場合の処理 # ########################### sub readGetData { local(*queryString) = @_ if @_; $queryString = $ENV{"QUERY_STRING"}; #if ($queryString eq "") { &error('Error','Data is Empty?'); } return 1; } ############################ # method=POST の場合の処理 # ############################ sub readPostData { local(*queryString) = @_ if @_; local($contentLength); # 環境変数の読みこみ $contentLength = $ENV{"CONTENT_LENGTH"}; if ($contentLength) { read(STDIN,$queryString,$contentLength); } return 1; } ######################## # フォームデータの分割 # ######################## sub parseData { local(*queryString) = @_ if @_; local($key,$value,$curString,@tmpArray,$aName); # 文字列の分割 @tmpArray = split(/&/,$queryString); # 文字列が無くなるまでループ foreach $curString (@tmpArray) { ($key,$value) = split(/=/,$curString); if ($key ne 'start') { $key2 = $key; $value2 = $value; $FORM2{$key} = $value; } &decodeData(*key); &decodeData(*value); $FORM{$key} = $value; } return 1; } ############################ # フォームデータのデコード # ############################ sub decodeData { local(*queryString) = @_ if @_; # 変換 $queryString =~ s/\+/ /g; $queryString =~ s/%(\w\w)/pack("c",hex($1))/ge; &jcode'convert(*value,'sjis'); return 1; } ########################## # 引継ぎデータのデコード # ########################## sub decodeBuffer { local(*pairs); local($name,$value,$name2,$value2); @pairs = split(/&/,$FORM{'buffer'}); foreach $pair (@pairs) { ($name,$value) = split(/=/, $pair); $name2 = $name; $value2 = $value; $FORM2{$name} = $value; $value =~ tr/+/ /; $value =~ s/%(\w\w)/pack("C", hex($1))/eg; &jcode'convert(*value,'sjis'); #フォーム変数へ $FORM{$name} = $value; } return 1; } ############## # エラー処理 # ############## sub error { print "Content-type: text/html\n\n"; print "$title\n"; print "\n"; print "

$_[0]

\n"; print "

$_[1]

\n"; print "ブラウザの[戻る]ボタンを押して前の画面に移動してください.

\n"; print "\n"; exit; } # sub error end ############## # カンマ消去 # ############## sub comma_out { my($price) = @_ if @_; $price = s/,//g; return ($price); } ############## # カンマ挿入 # ############## sub comma_in { local $_ = shift; 1 while s/^([-+]?\d+)(\d{3})/$1,$2/; return $_; } ################ # 検索処理 Do1 # ################ sub search_do1 { if (!open(IN,"$file")) { &error('DB File can not Open.','Please Wait.'); } while () { chomp; push(@in_file,$_); } close(IN); # 商品分類検索(一覧) foreach $in_file (@in_file) { ($bu_no,$data00,$data01,$data02,$data03,$data04,$data05,$data06,$data07,$data08,$data09,$data10,$data11,$data12,$data13,$data14,$data15,$thum01,$src01,$map01) = split(/\t/,$in_file); &jcode::tr(\$w_size_f,'0123456789','0-9'); #bbb: foreach $inch (@inch) { # if ($inch ne "") { # if ($w_size_f =~ /^(\s*|..)$inch\d+/ && $thmb ne "") { # # 検索結果追加 # &jcode::tr(\$in_file,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','ABCDEFGHIJKLMNOPQRSTUVWXYZ'); # &jcode::tr(\$in_file,'abcdefghijklmnopqrstuvwxyz','abcdefghijklmnopqrstuvwxyz'); # &jcode::tr(\$in_file,'0123456789','0-9'); # &jcode::tr(\$in_file,' !?<>/,.',' !?<>/、.'); # push(@NEW,$in_file); # } # else { next; } # } # else { next bbb; } #} $search_data = $bu_no ."\t". $data01 ."\t". $thum01; push(@NEW,$search_data); } shift @NEW; return 1; } # sub search_do1 end #################### # 検索結果表示 Do1 # #################### sub printResult_do1 { &html_head; print <<"EOF"; 最終更新日 $s_year年 $s_mon 月 $s_day 日
※写真または所在地をクリックすると、詳細情報をご覧いただけます。 EOF # ヒット件数確認 $NEW = @NEW; if (!@NEW) { print "●検索結果 $NEW 件です。

\n";} else { if ($FORM{'start'} eq '') { $start = 0; } else { $start = $FORM{'start'}; } $end = $start + $page - 1; if ($end > $NEW) { $end = $NEW - 1; } $hit = 0; if ($FORM{'buffer'} eq "") { while (($key2,$val) = each %FORM2) { if ($key2 ne 'start') { if ($key2 ne 'do') { $buf = "$buf&$key2=$val"; } } } } else { $buf = $FORM{'buffer'}; } $start2 = $start + 1; $to2 = $end + 1; print <<"EOT"; ●検索結果 $NEW 件です。現在 $start2 件 〜 $to2 件までを表\示しています。

EOT foreach $num ($start .. $end) { if ($hit == $page) { last; } else { $hit++; } $data = $NEW[$num]; ($bu_no,$data02,$thum01) = split(/\t/,$data); if ($num == 0 || ($num % 4) == 0) { print <<"EOT"; EOT } print <<"EOT"; EOT if ($num == 3 || ($num % 4) == 3) { print <<"EOT";
$bu_no:$data02
EOT } } if (($NEW - $end) > $page) { $nextPage = $page; } else { $nextPage = $NEW - $end - 1; } $next = $end + 1; print "

"; print "\n"; print "\n"; if ($next > $page + 1) { print "\n"; } if ($nextPage > 0) { print "\n"; } print "\n"; print "
\n"; $pre = $FORM{'start'} - $page; print "
\n"; print ""; print ""; print "\n"; print "\n"; print "
\n"; print "
\n"; print "
\n"; print ""; print ""; print "\n"; print "\n"; print "
\n"; print "
\n"; print "
"; } &html_foot; } # sub printResult_do1 end ################ # HTMLヘッダー # ################ sub html_head { print "Content-type: text/html\n\n"; print <<'EOT'; 浅海住建 - 物件情報・賃貸物件 -
浅海建設
物件情報
物件情報>  別荘物件> 中古物件> 売地・借地物件> 賃貸情報

EOT } ################ # HTMLフッター # ################ sub html_foot { print <<"EOT";
Copyright(C)2001 Asaumi Jyuken. All Rights Reserved.
EOT } ################ # メインループ # ################ &readData(*data); # include "readGetData" "readPostData" &parseData(*data,*dataDict); # include "decodeData" &decodeBuffer; #if ($FORM{'do'} eq "") { # &error('Error.','エラーが発生しました。
戻るボタンで戻りましょう'); #} #if ($FORM{'do'} eq "search") { &search_do1; &printResult_do1; #} exit; # end of script