国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

頁(yè)碼自動(dòng)適應(yīng)范圍的分頁(yè)代碼

2024-05-04 23:05:36
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
效果圖:

記得以前看到過(guò)一個(gè)頁(yè)碼方式的分頁(yè)效果,頁(yè)碼數(shù)多了折行繼續(xù)顯示一直到60多頁(yè),呵呵!有點(diǎn)影響美觀!

于是寫(xiě)了一個(gè),可以自動(dòng)適應(yīng)范圍的頁(yè)碼分頁(yè)程序
也就是說(shuō),頁(yè)碼格式如下
<< < 1 2 3 4 5 6 7 > >>
<< < 6 7 8 9 10 11 12 > >>
下劃線(xiàn)為當(dāng)前頁(yè),這樣就可以固定顯示一個(gè)相近的頁(yè)碼,避免太長(zhǎng)影響美觀
代碼加了注釋?zhuān)饕切率挚纯矗呛?,寫(xiě)這個(gè)函數(shù),沒(méi)有考慮表現(xiàn)結(jié)構(gòu)分離問(wèn)題,高手就不要追究了!
復(fù)制內(nèi)容到剪貼板
代碼:
<?php
function page($page,$total,$phpfile,$pagesize=10,$pagelen=7){
    $pagecode = '';//定義變量,存放分頁(yè)生成的html
    $page = intval($page);//避免非數(shù)字頁(yè)碼
    $total = intval($total);//保證總記錄數(shù)值類(lèi)型正確
    if(!$total) return array();//總記錄數(shù)為零返回空數(shù)組
    $pages = ceil($total/$pagesize);//計(jì)算總分頁(yè)
    //處理頁(yè)碼合法性
    if($page<1) $page = 1;
    if($page>$pages) $page = $pages;
    //計(jì)算查詢(xún)偏移量
    $offset = $pagesize*($page-1);
    //頁(yè)碼范圍計(jì)算
    $init = 1;//起始頁(yè)碼數(shù)
    $max = $pages;//結(jié)束頁(yè)碼數(shù)
    $pagelen = ($pagelen%2)?$pagelen:$pagelen+1;//頁(yè)碼個(gè)數(shù)
    $pageoffset = ($pagelen-1)/2;//頁(yè)碼個(gè)數(shù)左右偏移量
    
    //生成html
    $pagecode='<div class="page">';
    $pagecode.="<span>$page/$pages</span>";//第幾頁(yè),共幾頁(yè)
    //如果是第一頁(yè),則不顯示第一頁(yè)和上一頁(yè)的連接
    if($page!=1){
        $pagecode.="<a href=/"{$phpfile}?page=1/">&lt;&lt;</a>";//第一頁(yè)
        $pagecode.="<a href=/"{$phpfile}?page=".($page-1)."/">&lt;</a>";//上一頁(yè)
    }
    //分頁(yè)數(shù)大于頁(yè)碼個(gè)數(shù)時(shí)可以偏移
    if($pages>$pagelen){
        //如果當(dāng)前頁(yè)小于等于左偏移
        if($page<=$pageoffset){
            $init=1;
            $max = $pagelen;
        }else{//如果當(dāng)前頁(yè)大于左偏移
            //如果當(dāng)前頁(yè)碼右偏移超出最大分頁(yè)數(shù)
            if($page+$pageoffset>=$pages+1){
                $init = $pages-$pagelen+1;
            }else{
                //左右偏移都存在時(shí)的計(jì)算
                $init = $page-$pageoffset;
                $max = $page+$pageoffset;
            }
        }
    }
    //生成html
    for($i=$init;$i<=$max;$i++){
        if($i==$page){
            $pagecode.='<span>'.$i.'</span>';
        } else {
            $pagecode.="<a href=/"{$phpfile}?page={$i}/">$i</a>";
        }
    }
    if($page!=$pages){
        $pagecode.="<a href=/"{$phpfile}?page=".($page+1)."/">&gt;</a>";//下一頁(yè)
        $pagecode.="<a href=/"{$phpfile}?page={$pages}/">&gt;&gt;</a>";//最后一頁(yè)
    }
    $pagecode.='</div>';
    return array('pagecode'=>$pagecode,'sqllimit'=>' limit '.$offset.','.$pagesize);
}
?>
函數(shù)參數(shù):
$page 當(dāng)前$_get獲得的頁(yè)碼
$total 總記錄數(shù)
$phpfile 頁(yè)碼連接文件名
$pagesize 不用解釋了吧 呵呵
$pagelen 最多顯示幾個(gè)頁(yè)碼 注意(奇數(shù)),對(duì)稱(chēng)嘛!
函數(shù)返回一個(gè)數(shù)組:
pagecode 索引對(duì)應(yīng)的內(nèi)容是 生成的html 代碼
sqllimit 索引對(duì)應(yīng)的是sql limit 后綴

使用方法:
復(fù)制內(nèi)容到剪貼板
代碼:
<?php
$phpfile = 'index.php';
$page= isset($_get['page'])?$_get['page']:1;
$db = new mysql();
$counts = $db->counts('select `id` from `test`');
$sql='select `id`,`title` from `test`';
$getpageinfo = page($page,$counts,$phpfile);
$sql.=$getpageinfo['sqllimit'];
$data = $db->getrows($sql);
?>
<?php
echo $getpageinfo['pagecode'];//顯示分頁(yè)的html代碼
?>
補(bǔ)貼css
復(fù)制內(nèi)容到剪貼板
代碼:
<style type="text/css">
body{font-family:tahoma;}
.page{padding:2px;font-weight:bolder;font-size:12px;}
.page a{border:1px solid #ccc;padding:0 5px 0 5px;margin:2px;text-decoration:none;color:#333;}
.page span{padding:0 5px 0 5px;margin:2px;background:#09f;color:#fff;border:1px solid #09c;}
</style>
 
以下是html網(wǎng)頁(yè)特效代碼,點(diǎn)擊運(yùn)行按鈕可查看效果:

[提示:可先修改代碼再按運(yùn)行]
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 永川市| 辽中县| 建水县| 体育| 萍乡市| 保定市| 乌苏市| 武穴市| 玉门市| 沐川县| 阿勒泰市| 九龙坡区| 陆川县| 琼海市| 甘孜县| 隆昌县| 武乡县| 都兰县| 冕宁县| 寿宁县| 汽车| 麻城市| 当雄县| 赣榆县| 泸定县| 普格县| 博白县| 长岛县| 扶风县| 惠安县| 大埔县| 富源县| 华亭县| 文山县| 武城县| 西昌市| 遂川县| 百色市| 塔城市| 东城区| 洮南市|