Changeset 15345 for branches/feature-module-update
- Timestamp:
- 2007/08/24 13:12:19 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-module-update/data/class/SC_PageNavi.php
r15080 r15345 7 7 8 8 /* ※使用条件※ 9 10 11 12 13 14 15 16 17 18 } 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 19 */ 20 20 class SC_PageNavi { 21 22 23 24 25 21 var $now_page; // 現在のページ番号 22 var $max_page; // 最終のページ番号 23 var $start_row; // 開始レコード 24 var $strnavi; // ページ送り文字列 25 var $arrPagenavi = array(); // ページ 26 26 27 28 29 27 // コンストラクタ 28 function SC_PageNavi($now_page, $all_row, $page_row, $func_name, $navi_max = NAVI_PMAX) { 29 $this->arrPagenavi['mode'] = 'search'; 30 30 31 32 33 34 35 36 37 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 38 39 40 39 // 最終ページの計算 40 $this->max_page = ceil($all_row/$page_row); 41 41 42 43 44 45 42 // 最終ページよりも現在ページが大きい場合は、最初に戻す。 43 if($this->max_page < $this->now_page) { 44 $this->now_page = 1; 45 } 46 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 } 47 $this->start_row = ($this->now_page - 1) * $page_row; 53 48 54 if($all_row > 1) { 49 // 開始行が不正な場合 50 if (!($this->start_row < $all_row && $this->start_row >= 0)) { 51 $this->start_row = 0; 52 } 55 53 56 //「前へ」「次へ」の設定 57 if ($this->now_page > 1) { 58 $before="<a href=\"". $_SERVER['PHP_SELF']. "\" onclick=\"$func_name('" . (($this->now_page) - 1) . "'); return false;\"><<前へ</a> "; 59 $this->arrPagenavi['before'] = ($this->now_page) - 1; 60 }else{ 61 $this->arrPagenavi['before'] = $this->now_page; 62 } 63 64 if ($this->now_page < $this->max_page) { 65 $next="<a href=\"". $_SERVER['PHP_SELF']. "\" onclick=\"$func_name('" . (($this->now_page) + 1) ."'); return false;\">次へ>></a> "; 66 $this->arrPagenavi['next'] = ($this->now_page) + 1; 67 }else{ 68 $this->arrPagenavi['next'] = $this->now_page; 69 } 70 71 // 表示する最大ナビ数を決める。 72 if($navi_max == "" || $navi_max > $this->max_page) { 73 // 制限ナビ数の指定がない。ページ最大数が制限ナビ数より少ない。 74 $disp_max = $this->max_page; 75 } else { 76 // 現在のページ+制限ナビ数が表示される。 77 $disp_max = $this->now_page + $navi_max - 1; 78 // ページ最大数を超えている場合は、ページ最大数に合わせる。 79 if($disp_max > $this->max_page) { 80 $disp_max = $this->max_page; 81 } 82 } 54 if($all_row > 1) { 83 55 84 // 表示する最小ナビ数を決める。 85 if($navi_max == "" || $navi_max > $this->now_page) { 86 // 制限ナビ数の指定がない。現在ページ番号が制限ナビ数より少ない。 87 $disp_min = 1; 88 } else { 89 // 現在のページ-制限ナビ数が表示される。 90 $disp_min = $this->now_page - $navi_max + 1; 91 } 92 93 $this->arrPagenavi['arrPageno'] = array(); 94 for ($i=$disp_min; $i <= $disp_max; $i++) { 95 if($i != $disp_max) { 96 $sep = " | "; 97 } else { 98 $sep = ""; 99 } 100 101 if ($i == $this->now_page) { 102 $page_number .= "<strong>$i</strong> "; 103 } else { 104 $page_number.="<a href=\"". $_SERVER['PHP_SELF']. "\" onclick=\"$func_name('$i'); return false;\">$i</a> "; 105 } 106 107 $page_number.=$sep; 108 109 $this->arrPagenavi['arrPageno'][$i] = $i; 110 } 111 112 if ($before || $next) { 113 $this->strnavi = $before .$page_number .$next; 114 } 115 }else{ 116 $this->arrPagenavi['arrPageno'][0] = 1; 117 $this->arrPagenavi['before'] = 1; 118 $this->arrPagenavi['next'] = 1; 119 } 120 } 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 } 121 125 } 122 126
Note: See TracChangeset
for help on using the changeset viewer.