アットウィキロゴ
#!c:/perl/bin/perl

$CHARSET='Shift_JIS';
$CsvCity='./city.csv';
$CsvItem='./item.csv';
$CsvCulture='./culture.csv';
$CsvMain='./main.csv';
$CssDesign='./design.css';
$CgiMain='./main.cgi';

loadFormdata();
loadCsvfile();
if($FORM{'from'} eq 'item'){
    processPI();
    printInput();
}else{
    writeData();
    printBackpage();
}
exit;

sub loadFormdata
{
    my ($query, $pair, @pairs);
    if($ENV{'REQUEST_METHOD'} eq 'POST') {
        read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
    }
    else {
        $query = $ENV{'QUERY_STRING'};
    }

    @pairs = split(/&/, $query);
    foreach $pair (@pairs) {
        my ($key, $value) = split(/=/, $pair);
        $value =~ tr/+/ /;
        $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;
        $FORM{$key} = $value;
    }
}

sub loadCsvfile
{
    open(FileCity,"<$CsvCity") or printErrorpage("Cityデータファイルが開けません");
    eval{flock(FileCity,1)};
    @DataCity=<FileCity>;
    close FileCity;

    open(FileItem,"<$CsvItem") or printErrorpage("Itemデータファイルが開けません");
    eval{flock(FileItem,1)};
    @DataItem=<FileItem>;
    close FileItem;

    open(FileCulture,"<$CsvCulture") or printErrorpage("Cultureデータファイルが開けません");
    eval{flock(FileCulture,1)};
    @DataCulture=<FileCulture>;
    close FileCulture;

    open(FileMain,"<$CsvMain") or printErrorpage("Mainデータファイルが開けません");
    eval{flock(FileMain,1)};
    @DataMain=<FileMain>;
    close FileMain;
}

sub processPI
{
    my($i);
    LOOPPPIITEM:for($i=0;$i<@DataItem;++$i){
        my($diNumber,$diName,$diCategory,$diClass,$diCulture,$diPrice)=split(/,/,$DataItem[$i]);
        if($diNumber==$FORM{'item'}){
            $GlItem{'name'}=$diName;
            last LOOPPPIITEM;
        }
    }
    
    LOOPPPICITY:for($i=0;$i<@DataCity;++$i){
        my($dcNumber,$dcName,$dcCulture,$dcAlliance)=split(/,/,$DataCity[$i]);
        if($dcNumber==$FORM{'city'}){
            $GlCity{'name'}=$dcName;
            last LOOPPPICITY;
        }
    }
        
}

sub printInput
{
    print qq(Content-type: text/plain; charset=$CHARSET\n\n);
    print qq(<HTML><HEAD>\n);
    print qq(<TITLE>NFT:INPUT</TITLE>\n);
    print qq(<LINK REL="stylesheet" HREF="$CssDesign" TYPE="text/css">);
    print qq(</HEAD><BODY>\n);
    
    print qq(<FORM ACTION="./input.cgi" METHOD="POST">\n);
    print qq(<INPUT TYPE="hidden" name="from" value="input">\n);

    print qq(<INPUT TYPE="radio" name="direct" value="0" CHECKED>売/);
    print qq(<INPUT TYPE="radio" name="direct" value="1">買<BR>\n);
    print qq(都市:$GlCity{'name'}<INPUT TYPE="hidden" name="city" value="$FORM{'city'}"><BR>\n);
    print qq(交易品:$GlItem{'name'}<INPUT TYPE="hidden" name="item" value="$FORM{'item'}"><BR>\n);
    print qq(価格<INPUT TYPE="text" name="price" value="." size="10"><BR>\n);
    print qq(仕入価格<INPUT TYPE="text" name="purchase" value="." size="10"><BR>\n);
    print qq(相場<INPUT TYPE="text" name="market" value="." size="10">%<BR>\n);
    print qq(税率<INPUT TYPE="text" name="tax" value="." size="10">%<BR>\n);
    
    print qq(<INPUT TYPE="submit" VALUE="データ登録"></FORM>\n);
    
    print qq(</BODY></HTML>);
}

sub pickupTime
{
    my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
    my $yyyy=$year+1900;
    my $mm=$mon+1;
    my $dd=$mday;
    
    if($mm<10){$mm='0'.$mm;}
    if($dd<10){$dd='0'.$dd;}
    
    $FORM{'update'}=($yyyy.'-'.$mm.'-'.$dd);
}

sub writeData
{
    pickupTime();
    
    my($dmNumber,$dmUpdate,$dmCity,$dmItem,$dmDirect,$dmPrice,$dmMarket,$dmPurchase,$dmTax)=split(/,/,$DataMain[$#DataMain]);
    $FORM{'number'}=$dmNumber+1;
    
//ロレンソ修正箇所スタート
    $kaigyou="",
    $kaigyou =~ s/\n//;
    push(@DataMain,($FORM{'number'}.','.$FORM{'update'}.','.$FORM{'city'}.','.$FORM{'item'}.','.$FORM{'direct'}.','.$FORM{'price'}.','.$FORM{'market'}.','.$FORM{'purchase'}.','.$FORM{'tax'}.','.$kaigyou));
//ロレンソ修正箇所終わり
    
    open(FileMain,">$CsvMain") or printErrorpage("Mainデータファイルが開けません");
    eval{flock(FileMain,2)};
    print FileMain @DataMain;
    close FileMain;
}

sub printBackpage
{
    print qq(Content-type: text/html; charset=$CHARSET\n\n);
    print qq(<HTML><HEAD>\n);
    print qq(<META HTTP-EQUIV="refresh" CONTENT="1;URL=$CgiMain?item=$FORM{'item'}">);
    print qq(<TITLE>NFT:データ入力終了</TITLE></HEAD><BODY>\n);
    print qq(1秒後に戻ります。<BR>\n);
    print qq(<A HREF="$CgiMain?item=$FORM{'item'}">戻る</A></BODY></HTML>)
}

sub printErrorpage
{
    print qq(Content-type: text/html; charset=$CHARSET\n\n);
    print qq(<HTML><HEAD><TITLE>NFT:Error</TITLE></HEAD>);
    print qq(<BODY>エラー:$_[0]</BODY></HTML>);
    
    exit;
}
最終更新:2007年08月05日 18:04