「CGI_掲示板2_宛先表示」の編集履歴(バックアップ)一覧はこちら
「CGI_掲示板2_宛先表示」(2008/07/12 (土) 14:33:10) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<p><br /><br /><br />
#!/usr/local/bin/perl</p>
<p># 掲示板2(左画面)</p>
<p># id=bbs2_l.cgi</p>
<p># update. 98.12.4</p>
<p># 使用上の注意・・・漢字コードの変換が不完全ですので文字化けするおそれがあります。<br />
# そのつもりでお使い下さい。</p>
<p># 日本語コード変換ライブラリ(v2.0)の指定<br />
# &ReadParse命令で、$in{ }の変数にフォーム入力データが格納される </p>
<p>require 'cgi-lib.pl';<br />
require 'jcode.pl';<br />
&ReadParse;</p>
<p># 設置するURLを設定<br />
$reload = 'http://www0.kumagaya.or.jp/cgi-bin/users/chichibu/bbs2_l.cgi';<br />
$call = 'http://www0.kumagaya.or.jp/cgi-bin/users/chichibu/bbs2.cgi';</p>
<p>$file = "/dialup/chichibu/cgi-bin/bbs2.dat";</p>
<p># データ確認デバッグモード(通常は$test=""、各画面で変数状態を見たいときは"on")<br />
$test="";</p>
<p># 消去日計算<br />
($byo,$fun,$ji,$dd,$mm,$yy,$yobi) = localtime(time);<br />
$mm++;<br />
# 2桁化<br />
$mm = sprintf("%.2d",$mm);<br />
$dd = sprintf("%.2d",$dd);<br />
# 西暦4桁処理<br />
if ($yy < 70) { $yy = $yy + 2000;}<br />
else { $yy = $yy + 1900;}<br />
# 本日<br />
$ymd=$yy.$mm.$dd;</p>
<p>####################################<br />
# #<br />
# メインルーチン(処理の分岐) #<br />
# #<br />
####################################<br />
# 全体の流れを決定する</p>
<p>if ($in{'action'} eq 'main') { &main; }</p>
<p>else { &first; }</p>
<p># なくても良いが最終出口を示す<br />
exit;</p>
<p>#############################################<br />
# #<br />
# データを読む # <br />
# #<br />
############################################# </p>
<p>sub read {</p>
<p># データを読み各連想配列に加算する<br />
# 1 2 3 4 5 6<br />
# 日付時刻、宛先、内容、差出人、消去日、訂正用パスワード<br />
open(DB,"$file");<br />
flock(DB,2);<br />
%data=();<br />
$cnt=0;</p>
<p>while (<DB>) {</p>
<p>($dt1,$dt2,$dt3,$dt4,$dt5,$dt6) = split(/\t/,$_);</p>
<p># 表示期限チェック<br />
if ($dt5 > 0 && $dt5 >= $ymd) {</p>
<p># 宛先毎にデータ登録件数を調べる<br />
$data{$dt2}++;<br />
$cnt++;</p>
<p># 右画面に漢字コードではデータを渡せないので該当するデータのキーを一つ記憶する<br />
if ($data{$dt2} == 1) {$key{$dt2} = $dt1 }</p>
<p>} # end of if</p>
<p>} # end of while</p>
<p>flock(DB,8);<br />
close(DB);</p>
<p>} # end of read</p>
<p> </p>
<p>#############################################<br />
# #<br />
# 最初に処理するルーチン # <br />
# #<br />
############################################# </p>
<p>sub first {</p>
<p>&main;</p>
<p>} # end of first</p>
<p>#############################################<br />
# #<br />
# メイン処理画面を表示する # <br />
# #<br />
############################################# </p>
<p>sub main {</p>
<p>&read;</p>
<p>@key=keys(%data);<br />
@new=sort sortsb @key;</p>
<p># 表示出力処理<br />
print "Content-type: text/html\n\n";<br />
print <<EOM;<br />
<HTML><br />
<HEAD><TITLE>掲示板2左</TITLE></HEAD><br />
<BODY BGCOLOR="#ffffff"><br />
EOM</p>
<p>print '<form method="post" action="' . $reload . '">' . "\n";<br />
print '<input type=hidden name="action" value="main">' . "\n";<br />
print '<input type=submit value="最新情報表示">' . "\n";<br />
print '</FORM>';<br />
print '<BR>'."\n";</p>
<p>print '<TABLE BORDER="1">';<br />
print '<TR>';<br />
print "<TH>宛先</TH><TH>件数</TH></TR>\n";<br />
# 全件<br />
print '<TR>';<br />
print '<TD>'."\n";<br />
print '<A HREF = "'.$call.'?action=main&syurui=all&page=1"
TARGET="main">全件表示</A>'."\n";;<br />
print '</FONT>'."\n";<br />
print '</TD>'."\n";<br />
print '<TD ALIGN="right"><FONT
COLOR='.$iro.'>'.$cnt.'</FONT></TD>'."\n";<br />
print '</TD>'."\n";<br />
print '</TR>'."\n";</p>
<p>foreach (@new) {</p>
<p>print '<TR>';<br />
print '<TD>'."\n";<br />
# ユニークとなるコード(半角)を渡す<br />
print '<A HREF = "'.$call.'?action=main&syurui='.$key{$_}.'&page=1"
TARGET="main">'.$_.'</A>'."\n";;<br />
print '</FONT>'."\n";<br />
print '</TD>'."\n";<br />
print '<TD ALIGN="right"><FONT
COLOR='.$iro.'>'.$data{$_}.'</FONT></TD>'."\n";<br />
print '</TD>'."\n";<br />
print '</TR>'."\n";<br />
} # end of foreach</p>
<p>print '</TABLE>';<br />
} # end of main</p>
<p>####################################<br />
# <br />
# 宛先を文字順にソートする(整理する) <br />
# <br />
####################################<br />
sub sortsb { $a <=> $b; }</p>
<p>################ end of script ###################</p>
<p> </p>