#!/usr/bin/perl
#
# 浅海住建物件検索CGI
# Scripting by murayama@i-surf.co.jp
require '../jcode.pl';
############
# 変数設定 #
############
$file = 'syakuti.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,$data0,$data01,$data02,$data03,$data04,$data05,$data06,$data07,$data08,$data09,$data10,$data11,$data12,$data13,$data14,$data15,$thum01,$src01,$kukaku01) = 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". $data02 ."\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";
$bu_no:$data02
|
EOT
if ($num == 3 || ($num % 4) == 3) {
print <<"EOT";
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";
$pre = $FORM{'start'} - $page;
print "\n";
print " | \n";
}
if ($nextPage > 0) {
print "\n";
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