php分页
<无详细内容>
分页类
<?php
define("FRONT_AND_BEHIND_LINK_CNT", 10);
class PageUtil{
var $data_cnt = 0;
var $now_page = 0;
var $total_page = 0;
var $next_link = FALSE;
var $prev_link = FALSE;
var $disp_begin = 0;
var $disp_end = 0;
var $link_array = NULL;
/**
* constructor
*
* @param int data_cnt データ件数
* @param int disp_cnt 1ページ当り表示件数
* @param int now_page 現ページ
*/
function PageUtil($data_cnt, $disp_cnt, $now_page = NULL){
$this->data_cnt = $data_cnt;
$this->setPageInfo($disp_cnt, $now_page);
}
/**
* ページに関する設定を行います
*
* @param int disp_cnt 1ページ当り表示件数
* @param int now_page 現ページ
*
* @access public
*/
function setPageInfo($disp_cnt, $now_page = NULL){
// now page
$this->now_page = (NULL == $now_page) ? 1 : $now_page;
// total page
$this->total_page = ceil($this->data_cnt / $disp_cnt);
// link array
if(($this->now_page - FRONT_AND_BEHIND_LINK_CNT) > 0){
$start = $this->now_page - FRONT_AND_BEHIND_LINK_CNT;
}else{
$start = 1;
}
if(($this->now_page + FRONT_AND_BEHIND_LINK_CNT) > $this->total_page){
$end = $this->total_page;
}else{
$end = $this->now_page + (FRONT_AND_BEHIND_LINK_CNT - 1);
}
$i = 0;
for($i = $start; $i <= $end; $i++){
$this->link_array[] = $i;
}
// next link
if($disp_cnt < $this->data_cnt){
if($now_page < $this->total_page){
$this->next_link = TRUE;
}
}
// prev link
if(1 < $now_page){
$this->prev_link = TRUE;
}
// begin disp number
$this->disp_begin = ($this->now_page - 1) * $disp_cnt;
// end disp number
$tmp_cnt = $this->now_page * $disp_cnt;
$this->disp_end = ($this->data_cnt < $tmp_cnt) ? $this->data_cnt : $tmp_cnt;
/**********************************************
debug("データ数 :" . (string)$this->data_cnt);
debug("表示件数 :" . (string)$disp_cnt);
debug("現在ページ:" . (string)$now_page);
debug("次へリンク:" . (string)$this->next_link);
debug("前へリンク:" . (string)$this->prev_link);
debug("開始INDEX :" . (string)$this->disp_begin);
debug("終了INDEX :" . (string)$this->disp_end);
***********************************************/
}
}
?>
*************************;list页面
//ページの処理
$total_num = $db->getTotalNum($sql,$param_data);
$now_page = $_GET['now_page'];
$page_num = 20;
$finish_page = ceil($total_num/$page_num);
if ($now_page == "") {
$page = new PageUtil($total_num, $page_num, 1);
}else {
$page = new PageUtil($total_num, $page_num, $now_page);
}
//データの取得
$list_data = $db->getListData($page->disp_begin, $page->disp_end,$param_data);
传参:
$smarty->assign('page', $page);
$smarty->assign('finish_page', $finish_page);
$smarty->assign('now_page', $now_page);
$smarty->assign('list_data', $list_data);
$smarty->assign('total_num', $total_num);
smarty中文件包含:
样式一:
{if $page->prev_link}| <a href="JavaScript:goPage('{math equation="x - 1" x=$page->now_page}');">前へ</a> |{/if}
{section name=cnt loop=$page->total_page}
{if $page->now_page==$smarty.section.cnt.iteration}
<font color=red><b>{$page->now_page}</b></font>
{else}
{if $smarty.section.cnt.iteration <= $page->now_page + 4 && $smarty.section.cnt.iteration >= $page->now_page - 4}
<a href="javascript:goPage('{$smarty.section.cnt.iteration}');">{$smarty.section.cnt.iteration}</a>
{/if}
{/if}
{/section}
{if $page->next_link}
| <a href="JavaScript:goPage('{math equation="x + 1" x=$page->now_page}');">次へ</a> |
{/if}
样式二:
<ul class="pagenate">
{if $page->prev_link}
<li class="nextback"><a href="JavaScript:goPage('{math equation="x - 1" x=$page->now_page}');">< 前のページへ</a></li>
{/if}
{section name=cnt loop=$page->total_page}
{if $page->now_page==$smarty.section.cnt.iteration}
<li><font color=red><b>{$page->now_page}</b></font></li>
{else}
{if $smarty.section.cnt.iteration <= $page->now_page + 4 && $smarty.section.cnt.iteration >= $page->now_page - 4}
<li><a href="javascript:goPage('{$smarty.section.cnt.iteration}');">{$smarty.section.cnt.iteration}</a></li>
{/if}
{/if}
{/section}
{if $page->next_link}
<li class="nextback"><a href="JavaScript:goPage('{math equation="x + 1" x=$page->now_page}');">次のページへ ></a></li>
{/if}
</ul>
- 上一篇:身份证号验证(兼容15,18位)
- 下一篇:复选框操作
精彩图集
精彩文章






