CGI-BBS > CGI > Perl > perlの改造で一覧表示をページ単位で区切って表示したい。


カレッヂ
カレッヂ


質問者 小野塚貴弘  投稿日 2004/8/24(火) 12:17:46
下記のスクリプトがあります。
これを、BBSのようにページ毎表示にしたいと考えています。
現在横4列に達したら次の行に移行し、無制限で表示してしまいます。
できれば縦5行X横4列=20個ずつデータを表示させたいのですが、
どのようにしたらよいかわかりません。

できれば将来的なことを見据えて、表示数を変更できるようにも
したいと思うのですが、どのようにするのがよいのでしょうか?
教えていただけませんでしょうか。


#!/usr/bin/perl
require  './jcode.pl';
require  './data/setup.ini';

use CGI qw(:standard);


#講師データ一覧表示
# 
# Version 1.2.1
# 
# Created by ZyForce inc. =Takahiro Onozuka=
# 2004/01


# データ読み込み
open IN,"./data/t-data.cgi";
@all = <IN>;
close IN;

@all = reverse(@all);

&header;

# データ読み込み終了まで繰り返し
$trcounter = 1;
foreach (@all){

# データ分割
$data = $_;
chop $data;
($id,$ph01nf,$ph02nf,$ph03nf,$ph04nf,
$data01_01,$data01_02,$data01_03,$data01_04,$data01_05,$data01_06,$data01_07,$data01_08,$data01_09) = split(/\,/,$data);



# HTML出力

if ( $trcounter == 1 ) { print '<tr>'; }
$HTML = <<"EOL";
<td valign=top>
<table border="0" cellpadding="10" cellspacing="2" height=100%>
<tr>
<td bgcolor="#DDEEFF" align=center><a href="t-view.cgi?id=$id"><img src="./t-pict/$ph01nf" width="90" border=0></a></td>
</TR>
<TR>
<td bgcolor="#DDEEFF"><b><a href="t-view.cgi?id=$id">$data01_01</a></td>
</tr>
</table>
</td>
EOL
&jcode'convert(*HTML,'sjis');
print $HTML;

$trcounter++;

if ( $trcounter == 5 ) {
	print '</tr>';
	$trcounter = 1;
	}
}

&footer;


# ヘッダ出力
sub header{

$HTML = <<"EOL";
Content-type: text/html

EOL
&jcode'convert(*HTML,'sjis');
print $HTML;
}


# フッタ出力
sub footer{
$HTML = <<"EOL";
 
EOL
&jcode'convert(*HTML,'sjis');
print $HTML;
}

プロバイダ参照:1-man.net
サーバのOS:UNIXサーバ
パソコンのOS:WinNT系
エディタ:メモ帳
FTPソフト:NextFTP
サーバ移転:していない
改造:している 改造前不動
CGI習熟度:middle

回答者 しあわせのツボ  [削除]  投稿日 2004/8/24(火) 14:45:21
・何ページ目を見たいのかのクエリを受け付ける。指定がなければ1ページ目と見做す。
・処理するデータを必要なだけに限定する。
 最初に全データを読み込んでいるようなので、foreach(@all)を
 foreach($all[($page-1)*$perpage .. $page*$perpage-1])とでもすればいいのかな?
・別のページに移るためのナビゲーションをつける。
 <a href="this.cgi?showpage=2">2ページ目</a>とか。
こんな感じで組めば、たぶん。
レスキューさんのBBSからページ処理をパクれば…もとい、参考にすると簡単かもです。
質問者 小野塚貴弘  [削除]  投稿日 2004/8/24(火) 16:53:49
だめもとでお願いです。
このスクリプト自体も、もともと私が作ったものでもなく、CGI(perl)自体も1から
作れるわけでもないので、お手数でなければどの場所をどのようにしたらいいのか
具体的におしえていただけると助かります。(つまり動作する状態のものを作って
いただけると)

一応チャレンジしてみます。今のところまったくわからず困っているのが状況です。
回答者 しあわせのツボ  [削除]  投稿日 2004/8/25(水) 13:45:04
http://www.debuchin.org/warehouse/cgisample.txt
とりあえずこんなで。まずいようだったら直してください。

返信(回答)する

 


Web裏技