- 締切済み
ページ処理
毎度お世話になってます 同じような質問を数回させていただいたのですが 自分の技量不足のため上手く行きませんでした なので再度質問の形を変えてお聞きさせていただきます 今以下のようなコーティングでデータベースを 作成しています その際のページ処理が上手くいきません どのように上手くいかないかというと マッチしたサイト全てが検索結果に表示されてしまいます このコーティングをベースに構成したいのですが 何とかなりますでしょうか? $view=2; sub subtwo {open(fp,"log.txt"); @lines = <op>; close(op); $bigin = $in{"page"} * $view; $end = $bigin + $view; if($i !~ /\d+/){$i = 0}; if($open eq "") {foreach $line (@li) {($abc,$def,$ghi,$jkl,) = split(/,/,$line); $chk = 1; foreach $k (@key) {if(index($line,$k,)<0) {$c = 0; last}} if($c>0) {print "<A HREF=\"$abc\">$def</A><br>\n";<br>\n";}}}} ############################################ sub subthree {$bigin = $in{"page"} * $view; $end = $bigin + $view; if($end<$マッチした総数の変数) {$nextpage=$in{"page"}+1; print qq(<FORM method="get" action="kensaku.cgi"> <INPUT TYPE=HIDDEN NAME="page" VALUE="$nextpage"> <INPUT TYPE="SUBMIT" VALUE="next"> </FORM>\n);} if($bigin>0) {$backpage=$in{"page"}-1; print qq(FORM method="get" action="kensaku.cgi"> <INPUT TYPE="HIDDEN" NAME="page" VALUE="$backpage"> <INPUT TYPE="SUBMIT" VALUE="back">\n);} if($page<0) {$page=0} }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
ちょっと前に作っていたので、それを抜粋してみました(けっこうやっつけですけど) ・・人の書いたコードを読むのはにがてで、変数名とかはぜんぜん違いますが、参考になればと思います #------------ これは既存として # 表示件数 $view_max = ? # 指定ページ $this_page = ? # 全データ数 $data_max = ? #------------ ここからがキモ # 全ページ数 $page_max = $data_max ? ceil($data_max/$view_max) : 1; my ($page_high); # 指定ページの最大データ番号 my ($page_low); # 指定ページの最小データ番号(1番からです) &error('アクセスエラーです') if ($page_max < $this_page); if($this_page == 1) { $page_high = $data_max; $page_low = ($data_max > $view_max) ? $data_max-$view_max+1 : 1; } else { $page_high = $data_max - ($view_max * ($this_page-1)); $page_low = (($page_high - $view_max) >0) ? $page_high - $view_max+1 : 1; } #すると、どこからどこまでのデータを表示すればいいのかがわかると思います(&errorは自作で) #------------ ページナビゲーション my($this_cgi); # CGIの名前 (とりあえず page=ページ数,maxview=表示件数 として渡してます) if($this_page>1) { print qq(<a href="$this_cgi?page=) .($this_page - 1). qq(&maxview=$view_max">«</a> ); } for(my $i=1;$i<=$page_max;$i++) { if($i == $this_page) { print qq(<b>$i</b> ); } else { print qq(<b><a href="$this_cgi?page=$i&maxview=$view_max">$i</a></b> ); } } if($page_max>=$this_page+1) { print qq( <a href="$this_cgi?page=) .($this_page + 1). qq(&maxview=$view_max">»</a>); } うまくいかないときは、本番同様のデータを入れて 一つ一つの変数をテスト用に任意の箇所でprintして確かめるのが一番だと思いますよ
お礼
ありがとうございます 参考にさせていただきます