效果图:(未做CSS处理)

php页面:

<?php
require_once '../../../inc/smarty.inc.php';
require_once '../../../inc/common.inc.php';
require_once '../../../common/lib/page.class.php';
$smarty = new SmartyMistake;

$where = '1=1';
$table = 'mistake';
page($table,10,10,$where,true,false,'');

$dbh->setAttribute(PDO::ATTR_CASE,PDO::CASE_UPPER);
$aoptions = $dbh->query("SELECT * FROM {$table} WHERE {$where} LIMIT $start,10");
$aoptions->setFetchMode(PDO::FETCH_ASSOC);
$resultMistake = $aoptions->fetchAll();

$smarty->assign("result",$resultMistake);
$smarty->display('templates/mistake_list.html');

smarty模板页面:
 <SPAN style="margin-left:250px;">共[{ff:$_page_var.total/}]条&nbsp;&nbsp;
  第[{ff:$_page_var.currentPage/}]/[{ff:$_page_var.totalPage/}]页&nbsp;&nbsp;
  {ff:if {ff:$_page_var.first/}/}{ff:$_page_var.first/}{ff:/if/}
  {ff:if {ff:$_page_var.back/}/}{ff:$_page_var.back/}{ff:/if/}
  {ff:if {ff:$_page_var.midPages/}/}{ff:$_page_var.midPages/}{ff:/if/}
  {ff:if {ff:$_page_var.next/}/}{ff:$_page_var.next/}{ff:/if/}
  {ff:if {ff:$_page_var.last/}/}{ff:$_page_var.last/}{ff:/if/}</SPAN>

PHP分页类:

<?php
/**
 * 函数:内容列表分页
 * 功能:支持PHP分页 Smarty分页 静态导航分页
 * 已通过Mysql、Oracle 测试
 * 时间:2011/01/07
 * 原作者:欣然随风(在原版本的基础上进行了部分修改)
 *
 * 参数:
 * @table -- 表名
 * @pageSize -- 每页信息数
 * @midPage -- 导航链接数量
 * @where -- 查询条件
 * @is_tpl -- 是否生成Smarty模板变量
 * @is_htm -- 是否为静态地址
 * @css -- 链接样式
 *
 * 全局变量:
 * @dbh -- PDO对象
 * @conn -- ADODB对象
 * @smarty -- SMARTY对象
 * @start -- 返回的LIMIT的开始下标
 */
function page($table,$pageSize,$midPage,$where,$is_tpl,$is_htm,$css=''){
    global $dbh,$start;
    // 分页开始
    //PDO对象操作方式
    $dbh->setAttribute(PDO::ATTR_CASE,PDO::CASE_UPPER);
    $total = $dbh->query("SELECT COUNT(*) FROM {$table} WHERE {$where}");
    $total->setFetchMode(PDO::FETCH_ASSOC);
 $total2 = $total->fetch();
    $totalRecord = $total2['COUNT(*)'];
    $totalPage = ceil($totalRecord/$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 ? "<a href='{$url}".($currentPage-1).".html' class='{$css}'><u>上页</u></a>&nbsp;&nbsp;|&nbsp;":"";
        $next = $currentPage < $totalPage ? "|&nbsp;&nbsp;<a href='{$url}".($currentPage+1).".html' class='{$css}'><u>下页</u></a>&nbsp;&nbsp;":"";
        $first = $currentPage > 1 ? "<a href='{$url}1.html' class='{$css}'><u>首页</u></a>&nbsp;&nbsp;":"";
        $last = $currentPage < $totalPage ? "<a href='{$url}{$totalPage}.html' class='{$css}'><u>尾页</u></a>":"";
    }else{
        $url = preg_replace(
                            array("!(([&]|^)(page)[=]?([^&]+)?)|((([&]){2,})|(^[&])|([&]$))!",),
                            array(""),
                            $_SERVER["QUERY_STRING"]
                            );
        $url.=($url != '' ? '&' : '').'page';
   
        $start = ($currentPage-1)*$pageSize;
        $back = $currentPage > 1?"<a href='?{$url}=".($currentPage-1)."' class='{$css}'><u>上页</u></a>&nbsp;&nbsp;|&nbsp;":"";
        $next = $currentPage < $totalPage ?"|&nbsp;&nbsp;<a href='?{$url}=".($currentPage+1)."' class='{$css}'><u>下页</u></a>&nbsp;&nbsp;":"";
        $first = $currentPage > 1?"<a href='?{$url}=1' class='{$css}'><u>首页</u></a>&nbsp;&nbsp;":"";
        $last = $currentPage < $totalPage?"<a href='?{$url}={$totalPage}' class='{$css}'><u>尾页</u></a>\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) ? "<span class='word_b'>{$num}</span>&nbsp;&nbsp;": "<a href='{$url}{$num}.html' class='{$css}'><u>{$num}</u></a>&nbsp;&nbsp;";
        }
        else{
            $midPages .= ($num == $currentPage) ? "<span class='word_b'>{$num}</span>&nbsp;&nbsp;": "<a href='?{$url}={$num}' class='{$css}'><u>{$num}</u></a>&nbsp;&nbsp;";
        }
    }
    global $_page_var;
    $_page_var['total']            = $totalRecord;            // 总计
    $_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 $smarty;
        $smarty->assign('_page_var',$_page_var);
    }
}
?>