php实现分页选择按钮的三种方式
2014-09-10 00:23
267 查看
<?php
//分页类
class Page{
const PAGE_ALL = 0;
//默认使用全部分页内容
const PAGE_STR = 1;
//
const PAGE_CLI = 2;
//
const PAGE_SEL = 3;
//
const PAGE_STR_CLI = 4;
//
const PAGE_STR_SEL = 5;
//
const PAGE_CLI_SEL = 6;
//
/*
* 分页方法
* @param1 string $basename,请求的脚本文件
* @param2 int $counts,总记录数
* @param3 int $page,当前页码
* @return string,具有分页点击a标签的字符串
*
* 示例:总共多少条记录,每页显示多少条记录,当前是第几页,<a>首页</a>,<a>前一页</a>,后一页,末页
*/
public static function show($basename,$counts,$page = 1,$chose = 0){
//计算出总页数
$pagesize = $GLOBALS['config']['admin_goods_pagecounts'];
$pageCounts = ceil($counts / $pagesize);
//计算上一页和下一页
$prev = ($page == 1) ? $page : ($page - 1);
$next = ($page == $pageCounts) ? $page : ($page + 1);
//使用定界符来平凑字符串
$str = <<<ENDF
<span id="str_page">
总共有{$counts}条记录,每页显示{$pagesize}条,当前是第{$page}页
<a href="{$basename}&page=1">首页</a>
<a href="{$basename}&page={$prev}">上一页</a>
<a href="{$basename}&page={$next}">下一页</a>
<a href="{$basename}&page={$pageCounts}">末页</a> </span>
ENDF;
//增加一个类似点击按钮,1,2,3,4,5
//需求:1,2,3...---->1 ... 3,4,5 ...------->1 ... 5,6,7 ...
$click = '<span id="click_page">';
for($i = 1;$i <= $pageCounts;$i++){
if($page > 2){
//1 ... $page,$page+1,$page+2
//当页数大于等于3的时候
//一定要保留第一页
if($i == 1)$click .= "<a href='{$basename}&page=1'>1</a> ...";
else{
//判断当前页是否为选中页
if($i == $page){
//从当前页开始,显示后三页
$click .= "<a href='{$basename}&page={$i}'>{$i}</a> ";//当前页
//后两页,因为可能当前点击的就是末页,那么就不应该再有后面的页数了
$temp = $i + 1;
//后一页
if($temp <= $pageCounts){
$click .= "<a href='{$basename}&page={$temp}'>{$temp}</a> ";
$temp = $i + 2;
//后两页
if($temp <= $pageCounts){
$click .= "<a href='{$basename}&page={$temp}'>{$temp}</a> ";
}
}
}
}
}else{
//1,2,3 ...
//点击是前2页
//判断$pageCounts是否有三页
$click .= "<a href='{$basename}&page=1'>1</a> ";
//判断是否有第二页
if($pageCounts >= 2){
$click .= "<a href='{$basename}&page=2'>2</a> ";
//判断是否有第三页
if($pageCounts >= 3){
$click .= "<a href='{$basename}&page=3'>3</a> ";
}
}
//中断执行
break;
}
}
//追加点
if($page <= $pageCounts - 3){
//如果当前点击的页是后三页中的任意一页,就不需要加上...
$click .= '...</span>';
}else{
$click .= '</span>';
}
//select下拉框分页
$select = "<span id='select_page'> <select onchange=\"location.href='{$basename}&page='+this.value\">";
//循环遍历
for($i = 1;$i <= $pageCounts;$i++){
if($page == $i){
//默认选中当前页
$select .= "<option value='{$i}' selected='selected'>{$i}</option>";
}else{
$select .= "<option value='{$i}'>{$i}</option>";
}
}
//完善select
$select .= "</select></span>";
//返回当前拼凑好的分页
//判断用户需求,来进行选择性返回
switch($chose){
case 0:
default:
return $str . $click . $select;
case 1:
return $str;
case 2:
return $click;
case 3:
return $select;
case 4:
return $str . $click;
case 5:
return $str . $select;
case 6:
return $click . $select;
}
}
}
//分页类
class Page{
const PAGE_ALL = 0;
//默认使用全部分页内容
const PAGE_STR = 1;
//
const PAGE_CLI = 2;
//
const PAGE_SEL = 3;
//
const PAGE_STR_CLI = 4;
//
const PAGE_STR_SEL = 5;
//
const PAGE_CLI_SEL = 6;
//
/*
* 分页方法
* @param1 string $basename,请求的脚本文件
* @param2 int $counts,总记录数
* @param3 int $page,当前页码
* @return string,具有分页点击a标签的字符串
*
* 示例:总共多少条记录,每页显示多少条记录,当前是第几页,<a>首页</a>,<a>前一页</a>,后一页,末页
*/
public static function show($basename,$counts,$page = 1,$chose = 0){
//计算出总页数
$pagesize = $GLOBALS['config']['admin_goods_pagecounts'];
$pageCounts = ceil($counts / $pagesize);
//计算上一页和下一页
$prev = ($page == 1) ? $page : ($page - 1);
$next = ($page == $pageCounts) ? $page : ($page + 1);
//使用定界符来平凑字符串
$str = <<<ENDF
<span id="str_page">
总共有{$counts}条记录,每页显示{$pagesize}条,当前是第{$page}页
<a href="{$basename}&page=1">首页</a>
<a href="{$basename}&page={$prev}">上一页</a>
<a href="{$basename}&page={$next}">下一页</a>
<a href="{$basename}&page={$pageCounts}">末页</a> </span>
ENDF;
//增加一个类似点击按钮,1,2,3,4,5
//需求:1,2,3...---->1 ... 3,4,5 ...------->1 ... 5,6,7 ...
$click = '<span id="click_page">';
for($i = 1;$i <= $pageCounts;$i++){
if($page > 2){
//1 ... $page,$page+1,$page+2
//当页数大于等于3的时候
//一定要保留第一页
if($i == 1)$click .= "<a href='{$basename}&page=1'>1</a> ...";
else{
//判断当前页是否为选中页
if($i == $page){
//从当前页开始,显示后三页
$click .= "<a href='{$basename}&page={$i}'>{$i}</a> ";//当前页
//后两页,因为可能当前点击的就是末页,那么就不应该再有后面的页数了
$temp = $i + 1;
//后一页
if($temp <= $pageCounts){
$click .= "<a href='{$basename}&page={$temp}'>{$temp}</a> ";
$temp = $i + 2;
//后两页
if($temp <= $pageCounts){
$click .= "<a href='{$basename}&page={$temp}'>{$temp}</a> ";
}
}
}
}
}else{
//1,2,3 ...
//点击是前2页
//判断$pageCounts是否有三页
$click .= "<a href='{$basename}&page=1'>1</a> ";
//判断是否有第二页
if($pageCounts >= 2){
$click .= "<a href='{$basename}&page=2'>2</a> ";
//判断是否有第三页
if($pageCounts >= 3){
$click .= "<a href='{$basename}&page=3'>3</a> ";
}
}
//中断执行
break;
}
}
//追加点
if($page <= $pageCounts - 3){
//如果当前点击的页是后三页中的任意一页,就不需要加上...
$click .= '...</span>';
}else{
$click .= '</span>';
}
//select下拉框分页
$select = "<span id='select_page'> <select onchange=\"location.href='{$basename}&page='+this.value\">";
//循环遍历
for($i = 1;$i <= $pageCounts;$i++){
if($page == $i){
//默认选中当前页
$select .= "<option value='{$i}' selected='selected'>{$i}</option>";
}else{
$select .= "<option value='{$i}'>{$i}</option>";
}
}
//完善select
$select .= "</select></span>";
//返回当前拼凑好的分页
//判断用户需求,来进行选择性返回
switch($chose){
case 0:
default:
return $str . $click . $select;
case 1:
return $str;
case 2:
return $click;
case 3:
return $select;
case 4:
return $str . $click;
case 5:
return $str . $select;
case 6:
return $click . $select;
}
}
}
相关文章推荐
- DataGridView单元按钮列和支持三种选择状态的复选框列的实现
- PHP三种方式实现URL重定向
- PHP生成word文档的三种实现方式
- php程序开发之实现网页跳转的三种方式
- 第50篇铅笔选择三种粗细(四)之样式及用按钮实现
- PHP分页方式的思想和实现
- PHP定时执行的三种方式实现
- PHP生成word文档的三种实现方式
- 三种方式实现按钮的点击事件
- PHP三种方式实现链式操作详解
- 三种分页的实现方式
- php实现递归的三种基本方式
- PHP定时执行的三种方式实现
- php实现递归的三种方式: 遍历文件夹实例
- C# WinForm下DataGridView单选按钮列和支持三种选择状态的复选框列的实现
- php 递归函数的三种实现方式
- PHP实现重定向的三种实现方式
- php实现递归的三种基本方式
- 第51篇铅笔选择三种粗细(五)之图片实现及定住其它按钮线条 周二
- php 递归函数的三种实现方式