<?php /** * 函数:内容列表分页 * 功能:支持PHP分页 Smarty分页 静态导航分页 * 已通过Mysql、Oracle 测试 * 时间:2006/9/29 * 作者:欣然随风 * * 参数: * @table -- 表名 * @pageSize -- 每页信息数 * @midPage -- 导航链接数量 * @where -- 查询条件 * @is_tpl -- 是否生成Smarty模板变量 * @is_htm -- 是否为静态地址 * @css -- 链接样式 * * 全局变量: * @conn -- ADODB对象 * @tpl -- SMARTY对象 * @start -- 返回的LIMIT的开始下标 */ function page($table,$pageSize,$midPage,$where,$is_tpl,$is_htm,$css='') { global $conn,$start;
// 分页开始 $total = $conn->getOne("SELECT COUNT(*) FROM {$table} WHERE {$where}"); $totalPage = ceil($total/$pageSize); $currentPage=@$_REQUEST['page']+0;
if(!is_numeric($currentPage) || $currentPage < 1 || empty($currentPage) || $currentPage > $totalPage) $currentPage=1;
// 设置地址 if($is_htm) { parse_str($_SERVER["QUERY_STRING"],$url); unset($url['page']); $url = urlencode(implode('-',$url)); $url = basename($_SERVER['SCRIPT_NAME'],'.php').'-'.$url.'-'; $start = ($currentPage-1)*$pageSize; $back = $currentPage > 1 ? "上页 | ":""; $next = $currentPage < $totalPage ? "| 下页 ":""; $first = $currentPage > 1 ? "首页 ":""; $last = $currentPage < $totalPage ? "尾页":""; } else { $url = preg_replace( array("!(([&]|^)(page)[=]?([^&]+)?)|((([&]){2,})|(^[&])|([&]$))!",), array(""), $_SERVER["QUERY_STRING"] ); $url.=($url != '' ? '&' : '').'page'; $start = ($currentPage-1)*$pageSize; $back = $currentPage > 1?"上页 | ":""; $next = $currentPage < $totalPage ?"| 下页 ":""; $first = $currentPage > 1?"首页 ":""; $last = $currentPage < $totalPage?"尾页\n":""; }
// 导航链接 $midPages = ''; $num = $currentPage-floor($midPage/2); if($num > 0) { if(($totalPage-$num) < $midPage) { $tmp = $totalPage - $midPage; $num = $tmp< 0 ? 1 : ++$tmp; } }else $num = 1; for($i=1; $i<=$midPage;$i++,$num++) { if($num > $totalPage) break; if($is_htm) { $midPages .= ($num == $currentPage) ? "{$num} " : "{$num} "; } else { $midPages .= ($num == $currentPage) ? "{$num} " : "{$num} "; } }
global $_page_var; $_page_var['total'] = $total; // 总计 $_page_var['currentPage'] = $currentPage; // 当前页码 $_page_var['totalPage'] = $totalPage; // 总页数 $_page_var['back'] = $back; // 上一页 $_page_var['next'] = $next; // 下一页 $_page_var['first'] = $first; // 首页 $_page_var['last'] = $last; // 尾页 $_page_var['midPages'] = $midPages; // 中间页 $_page_var['url'] = $url; // 当前页地址
if($is_tpl) { global $tpl; $tpl->assign('_page_var',$_page_var); } } ?>
|