Chinaunix首页 | 论坛 | 博客
  • 博客访问: 317863
  • 博文数量: 52
  • 博客积分: 6130
  • 博客等级: 准将
  • 技术积分: 470
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-16 16:44
文章分类

全部博文(52)

文章存档

2012年(4)

2011年(2)

2010年(1)

2009年(5)

2008年(2)

2007年(2)

2006年(14)

2005年(22)

我的朋友

分类:

2006-03-11 04:55:15

<?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);
    }
}
?>

 

普通分页测试:

$where = '1=1';
page($table,15,10,$where,false,false,'');
$sql = "SELECT * FROM {$table} WHERE {$where} ORDER BY xxx DESC";
if($data = &$conn->SelectLimit($sql,15,$start))
{
    $data = &$data->GetArray();
}

模版:


<div class="black3 word_size_12 dq_3" style="margin:10px;">
<form name="page1" method="post" action="" onSubmit="val=document.getElementById('page').value;if(val>0&&val!=&&val<=){location.href='?='+val}else{return false}">
<?=$_page_var['total']?>&nbsp;&nbsp;
<?=$_page_var['currentPage']?>/<?=$_page_var['totalPage']?>&nbsp;&nbsp;
<?=$_page_var['first']?>
<?=$_page_var['back']?>
<?=$_page_var['midPages']?>
<?=$_page_var['next']?>
<?=$_page_var['last']?>
转到:<input name="page" type="text" size="1" class="input2" value="" id='page'>
<input type="submit" value="GO">
</form>
</div>

Smarty分页测试:

$where = '1=1';
page($table,15,10,$where,true,false,'');
$sql = "SELECT * FROM {$table} WHERE {$where} ORDER BY xxx DESC";
if($data = &$conn->SelectLimit($sql,15,$start))
{
    $data = &$data->GetArray();
}

模版:


<div class="black3 word_size_12" style="margin:10px;">
<form name="page1" method="post" action="" onSubmit="val=document.getElementById('page').value;if(val>0&&val!=<{$_page_var.currentPage}>&&val<=<{$_page_var.totalPage}>){location.href='?<{$_page_var.url}>='+val}else{return false}">
<{$_page_var.total}>&nbsp;&nbsp;
<{$_page_var.currentPage}>/<{$_page_var.totalPage}>&nbsp;&nbsp;
<{$_page_var.first}>
<{$_page_var.back}>
<{$_page_var.midPages}>
<{$_page_var.next}>
<{$_page_var.last}>
转到:<input name="page" type="text" size="1" class="input2" value="<{$_page_var.currentPage}>" id='page'>
<input type="submit" value="GO">
</form>
</div>

Smarty + 静态导航分页测试:

$where = '1=1';
page($table,15,10,$where,true,true,'');
$sql = "SELECT * FROM {$table} WHERE {$where} ORDER BY xxx DESC";
if($data = &$conn->SelectLimit($sql,15,$start))
{
    $data = &$data->GetArray();
}

模版:


<div class="black3 word_size_12" style="margin:10px;">
<div style="float:right;">
<{$_page_var.first}>
<{$_page_var.back}>
<{$_page_var.midPages}>
<{$_page_var.next}>
<{$_page_var.last}>
</div>
<{$_page_var.currentPage}>/<{$_page_var.totalPage}>页 
<{$_page_var.total}>
</div>

阅读(4169) | 评论(16) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-03-26 20:20:46

$total = $conn->getOne("SELECT COUNT(*) FROM $table WHERE $where"); 这里的这个getOne在那里啊?

chinaunix网友2009-03-26 20:20:46

$total = $conn->getOne("SELECT COUNT(*) FROM $table WHERE $where"); 这里的这个getOne在那里啊?