1 | <?php |
---|
2 | /* |
---|
3 | * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved. |
---|
4 | * |
---|
5 | * http://www.lockon.co.jp/ |
---|
6 | */ |
---|
7 | |
---|
8 | /* ※使用条件※ |
---|
9 | ・formタグに以下を追加する。 |
---|
10 | <input type="hidden" name="pageno" value="<!--{$tpl_pageno}-->"> |
---|
11 | ・ソースの最初に以下を記述する。 |
---|
12 | $objPage->tpl_pageno = $_POST['pageno']; |
---|
13 | ・$func_nameに指定するJavaScriptの例 |
---|
14 | // ページナビで使用する |
---|
15 | function fnNaviPage(pageno) { |
---|
16 | document.form1['pageno'].value = pageno; |
---|
17 | document.form1.submit(); |
---|
18 | } |
---|
19 | */ |
---|
20 | class SC_PageNavi { |
---|
21 | var $now_page; // 現在のページ番号 |
---|
22 | var $max_page; // 最終のページ番号 |
---|
23 | var $start_row; // 開始レコード |
---|
24 | var $strnavi; // ページ送り文字列 |
---|
25 | var $arrPagenavi = array(); // ページ |
---|
26 | |
---|
27 | // コンストラクタ |
---|
28 | function SC_PageNavi($now_page, $all_row, $page_row, $func_name, $navi_max = NAVI_PMAX) { |
---|
29 | $this->arrPagenavi['mode'] = 'search'; |
---|
30 | |
---|
31 | //現在ページ($now_page)が正しい数値でない場合 |
---|
32 | if (!eregi("^[[:digit:]]+$", $now_page) || $now_page < 1 || $now_page == "") { |
---|
33 | $this->now_page = 1; |
---|
34 | } else { |
---|
35 | $this->now_page = $now_page; |
---|
36 | } |
---|
37 | $this->arrPagenavi['now_page'] = $this->now_page; |
---|
38 | |
---|
39 | // 最終ページの計算 |
---|
40 | $this->max_page = ceil($all_row/$page_row); |
---|
41 | |
---|
42 | // 最終ページよりも現在ページが大きい場合は、最初に戻す。 |
---|
43 | if($this->max_page < $this->now_page) { |
---|
44 | $this->now_page = 1; |
---|
45 | } |
---|
46 | |
---|
47 | $this->start_row = ($this->now_page - 1) * $page_row; |
---|
48 | |
---|
49 | // 開始行が不正な場合 |
---|
50 | if (!($this->start_row < $all_row && $this->start_row >= 0)) { |
---|
51 | $this->start_row = 0; |
---|
52 | } |
---|
53 | |
---|
54 | if($all_row > 1) { |
---|
55 | |
---|
56 | //「前へ」「次へ」の設定 |
---|
57 | $before = ""; |
---|
58 | $next = ""; |
---|
59 | // FIXME ちゃんとサニタイズしよう |
---|
60 | if ($this->now_page > 1) { |
---|
61 | $before="<a href=\"". $_SERVER['PHP_SELF']. "\" onclick=\"$func_name('" . (($this->now_page) - 1) . "'); return false;\"><<前へ</a> "; |
---|
62 | $this->arrPagenavi['before'] = ($this->now_page) - 1; |
---|
63 | }else{ |
---|
64 | $this->arrPagenavi['before'] = $this->now_page; |
---|
65 | } |
---|
66 | |
---|
67 | if ($this->now_page < $this->max_page) { |
---|
68 | $next="<a href=\"". $_SERVER['PHP_SELF']. "\" onclick=\"$func_name('" . (($this->now_page) + 1) ."'); return false;\">次へ>></a> "; |
---|
69 | $this->arrPagenavi['next'] = ($this->now_page) + 1; |
---|
70 | }else{ |
---|
71 | $this->arrPagenavi['next'] = $this->now_page; |
---|
72 | } |
---|
73 | |
---|
74 | // 表示する最大ナビ数を決める。 |
---|
75 | if($navi_max == "" || $navi_max > $this->max_page) { |
---|
76 | // 制限ナビ数の指定がない。ページ最大数が制限ナビ数より少ない。 |
---|
77 | $disp_max = $this->max_page; |
---|
78 | } else { |
---|
79 | // 現在のページ+制限ナビ数が表示される。 |
---|
80 | $disp_max = $this->now_page + $navi_max - 1; |
---|
81 | // ページ最大数を超えている場合は、ページ最大数に合わせる。 |
---|
82 | if($disp_max > $this->max_page) { |
---|
83 | $disp_max = $this->max_page; |
---|
84 | } |
---|
85 | } |
---|
86 | |
---|
87 | // 表示する最小ナビ数を決める。 |
---|
88 | if($navi_max == "" || $navi_max > $this->now_page) { |
---|
89 | // 制限ナビ数の指定がない。現在ページ番号が制限ナビ数より少ない。 |
---|
90 | $disp_min = 1; |
---|
91 | } else { |
---|
92 | // 現在のページ-制限ナビ数が表示される。 |
---|
93 | $disp_min = $this->now_page - $navi_max + 1; |
---|
94 | } |
---|
95 | |
---|
96 | $this->arrPagenavi['arrPageno'] = array(); |
---|
97 | for ($i=$disp_min; $i <= $disp_max; $i++) { |
---|
98 | if($i != $disp_max) { |
---|
99 | $sep = " | "; |
---|
100 | } else { |
---|
101 | $sep = ""; |
---|
102 | } |
---|
103 | |
---|
104 | $page_number = ""; |
---|
105 | if ($i == $this->now_page) { |
---|
106 | $page_number .= "<strong>$i</strong> "; |
---|
107 | } else { |
---|
108 | $page_number.="<a href=\"". $_SERVER['PHP_SELF']. "\" onclick=\"$func_name('$i'); return false;\">$i</a> "; |
---|
109 | } |
---|
110 | |
---|
111 | $page_number.=$sep; |
---|
112 | |
---|
113 | $this->arrPagenavi['arrPageno'][$i] = $i; |
---|
114 | } |
---|
115 | |
---|
116 | if ($before || $next) { |
---|
117 | $this->strnavi = $before .$page_number .$next; |
---|
118 | } |
---|
119 | }else{ |
---|
120 | $this->arrPagenavi['arrPageno'][0] = 1; |
---|
121 | $this->arrPagenavi['before'] = 1; |
---|
122 | $this->arrPagenavi['next'] = 1; |
---|
123 | } |
---|
124 | } |
---|
125 | } |
---|
126 | |
---|
127 | ?> |
---|