CGI_掲示板2_宛先表示




#!/usr/local/bin/perl

# 掲示板2(左画面)

# id=bbs2_l.cgi

# update.  98.12.4

# 使用上の注意・・・漢字コードの変換が不完全ですので文字化けするおそれがあります。
#          そのつもりでお使い下さい。

# 日本語コード変換ライブラリ(v2.0)の指定
# &ReadParse命令で、$in{ }の変数にフォーム入力データが格納される  

require 'cgi-lib.pl';
require 'jcode.pl';
&ReadParse;

# 設置するURLを設定
$reload = 'http://www0.kumagaya.or.jp/cgi-bin/users/chichibu/bbs2_l.cgi';
$call = 'http://www0.kumagaya.or.jp/cgi-bin/users/chichibu/bbs2.cgi';

$file = "/dialup/chichibu/cgi-bin/bbs2.dat";

# データ確認デバッグモード(通常は$test=""、各画面で変数状態を見たいときは"on")
$test="";

# 消去日計算
($byo,$fun,$ji,$dd,$mm,$yy,$yobi) = localtime(time);
$mm++;
# 2桁化
$mm = sprintf("%.2d",$mm);
$dd = sprintf("%.2d",$dd);
# 西暦4桁処理
if ($yy < 70) { $yy = $yy + 2000;}
else          { $yy = $yy + 1900;}
# 本日
$ymd=$yy.$mm.$dd;

####################################
#                                  #
#   メインルーチン(処理の分岐)     #
#                                  #
####################################
#  全体の流れを決定する

if ($in{'action'} eq 'main') { &main; }

else { &first; }

# なくても良いが最終出口を示す
exit;

#############################################
#                                           #
#    データを読む             # 
#                                           #
#############################################          

sub read {

# データを読み各連想配列に加算する
#   1       2       3     4    5     6
# 日付時刻、宛先、内容、差出人、消去日、訂正用パスワード
open(DB,"$file");
flock(DB,2);
%data=();
$cnt=0;

while (<DB>)  {

($dt1,$dt2,$dt3,$dt4,$dt5,$dt6) = split(/\t/,$_);

# 表示期限チェック
if ($dt5 > 0 && $dt5 >= $ymd) {

# 宛先毎にデータ登録件数を調べる
$data{$dt2}++;
$cnt++;

# 右画面に漢字コードではデータを渡せないので該当するデータのキーを一つ記憶する
if ($data{$dt2} == 1)  {$key{$dt2} = $dt1 }

} # end of if

} # end of while

flock(DB,8);
close(DB);

} # end of read

 

#############################################
#                                           #
#    最初に処理するルーチン          # 
#                                           #
#############################################          

sub first {

&main;

} # end of first

#############################################
#                                           #
#    メイン処理画面を表示する            # 
#                                           #
#############################################          

sub main {

&read;

@key=keys(%data);
@new=sort sortsb @key;

# 表示出力処理
print "Content-type: text/html\n\n";
print <<EOM;
<HTML>
<HEAD><TITLE>掲示板2左</TITLE></HEAD>
<BODY BGCOLOR="#ffffff">
EOM

print '<form method="post" action="' . $reload . '">' . "\n";
print '<input type=hidden name="action" value="main">' . "\n";
print '<input type=submit value="最新情報表示">' . "\n";
print '</FORM>';
print '<BR>'."\n";

print '<TABLE BORDER="1">';
print '<TR>';
print "<TH>宛先</TH><TH>件数</TH></TR>\n";
# 全件
print '<TR>';
print '<TD>'."\n";
print '<A HREF = "'.$call.'?action=main&syurui=all&page=1" TARGET="main">全件表示</A>'."\n";;
print '</FONT>'."\n";
print '</TD>'."\n";
print '<TD ALIGN="right"><FONT COLOR='.$iro.'>'.$cnt.'</FONT></TD>'."\n";
print '</TD>'."\n";
print '</TR>'."\n";

foreach (@new) {

print '<TR>';
print '<TD>'."\n";
# ユニークとなるコード(半角)を渡す
print '<A HREF = "'.$call.'?action=main&syurui='.$key{$_}.'&page=1" TARGET="main">'.$_.'</A>'."\n";;
print '</FONT>'."\n";
print '</TD>'."\n";
print '<TD ALIGN="right"><FONT COLOR='.$iro.'>'.$data{$_}.'</FONT></TD>'."\n";
print '</TD>'."\n";
print '</TR>'."\n";
} # end of foreach

print '</TABLE>';
} # end of main

####################################
#                                 
#   宛先を文字順にソートする(整理する) 
#                                 
####################################
sub sortsb { $a <=> $b; }

################ end of script ###################

 

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2008年07月12日 14:33
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。