php實現(xiàn)網(wǎng)頁上下翻頁功能

這幾天做項目因為數(shù)據(jù)太多兽掰,需要對信息進行上下翻頁展示芭碍,就自己寫了翻頁的代碼
大致功能就是頁面只顯示幾條信息,按上一頁孽尽、下一頁切換內(nèi)容窖壕,當(dāng)顯示第一頁時上一頁和首頁選項不可選,當(dāng)頁面加載到最后一頁時下一頁和尾頁選項不可選
具體效果如下:




接下來是實現(xiàn)代碼
1)原生PHP方法
先說一下總思路吧,首先我們要查詢所有符合條件需要進行分頁的總數(shù)據(jù)瞻讽,計算展示的總頁數(shù)鸳吸。
然后獲取當(dāng)前顯示的是第幾頁信息,用當(dāng)前頁數(shù)*每頁數(shù)據(jù)條數(shù)表示為總數(shù)據(jù)的第幾條速勇,再根據(jù)限制條件查詢出當(dāng)前頁所需顯示出來的數(shù)據(jù)晌砾。將每一條數(shù)據(jù)echo替換HTML結(jié)構(gòu)內(nèi)容中,最后顯示出來
關(guān)于分頁的限制條件很簡單烦磁,只要查詢到當(dāng)前頁為第1頁時养匈,首頁和上一頁選項跳轉(zhuǎn)鏈接都固定在第一頁同時設(shè)置選項disabled不可選,尾頁也是相同的步驟都伪。
具體代碼如下:
當(dāng)前頁cPage需要傳過來乖寒,我的辦法是初始cPage=0
list.php

<a href="listmore.php?cPage=0" class="pull-right">更多&gt;&gt;</a>

row=table->fetch()每次讀取一條信息,得到的是一個索引數(shù)組院溺,代碼里的row['id']表示row里面名為id的值,也可表示為$row.id
connect.php(連接數(shù)據(jù)庫)

<?php
$link=new PDO("mysql:host=localhost;port=3306;dbname=db","root","");
$link->query("set names utf8");

listmore.php

 <ul id="list" class="media-list">
    <?php
       include_once('connect.php');
       $result = $link->query("select * from news");
       $total=$result->rowCount();//查詢出來符合條件的總數(shù)
       $pages=ceil($total/4);//分頁的總頁數(shù)
    
       $num = 4;//每頁顯示的數(shù)據(jù)條數(shù)
       $cPage = $_GET['cPage'];//獲取當(dāng)前是顯示的第幾頁
       $start = $cPage * $num;//第一條數(shù)據(jù)
       $table = $link->query("select * from news order by id desc limit {$start},$num");
       $link = null;//銷毀
       while ($row=$table->fetch()){//每次讀出一條數(shù)據(jù)磅轻,賦給$row
           //插入多行文本珍逸,把值替換掉
       echo <<<_
            <li class="media">
                <a href="detail.php?id={$row['id']}">
                <img class="pull-left" src="{$row['src']}">
                <figcaption>
                <h4><span class="title">{$row['title']}</span> <span class="news-date">{$row['time']}</span></h4>
                <p>{$row['content']}</p>
                </figcaption>
                </a>
            </li>
    _;
       }
   ?>
</ul>

上下翻頁:

<div class="page text-center">
  <ul class="pagination" id="page">
    <li data-i="0" id="index" class="<?php if ($cPage==0) echo 'disabled'; ?>"><a href="listmore.php?cPage=0">&laquo;首頁</a></li>
    <li data-i="1" class="<?php if ($cPage==0) echo 'disabled';?>"><a href="listmore.php?cPage=<?php echo $cPage>0?$cPage-1:0?>">&lt;上一頁</a></li>
    <li data-i="2" class="<?php if ($cPage==$pages-1) echo 'disabled'?>"><a href="listmore.php?cPage=<?php echo $cPage==($pages-1)?$pages-1:$cPage+1?>">下一頁&gt;</a></li>
    <li data-i="3" id="end" class="<?php if ($cPage==$pages-1) echo 'disabled'?>"><a href="listmore.php?cPage=<?php echo $pages-1?>">尾頁&raquo;</a></li>
    <li class="disabled">
        <a href="##" id="total"><?php echo ($cPage+1)?>/<?php echo "$pages"?></a>
    </li>
   </ul>
</div>

2)ajax方法
HTML代碼,展示信息裝在panel-body里面

  <div class="panel-body" id="content">
        <ul id="list" class="media-list">
    
          </ul>
    </div>
    <div class="page text-center">
          <ul class="pagination" id="page">
              <li data-i="0" id="index" class="disabled"><a href="##">&laquo;首頁</a></li>
              <li data-i="1" class="disabled"><a href="##">&lt;上一頁</a></li>
              <li data-i="2"><a href="##">下一頁&gt;</a></li>
              <li data-i="3" id="end"><a href="##">尾頁&raquo;</a></li>
              <li class="disabled">
                  <a href="##" id="total"></a>
              </li>
          </ul>
      </div>
      <template id="temp">          //引用模板
        <li class="media">
            <a href="detail.html?id={id}">
                <img class="pull-left" src="{src}">
                <figcaption>
                    <h4><span class="title">{title}</span> <span class="news-date">{date}</span></h4>
    
                    <p>{content}</p>
                 </figcaption>
                </a>
            </li>
        </template>

JS代碼:

 var html=$('#temp').html();
    var curPage=0,pages=0;
    $.getJSON('php/pages.php',function (res) {
        pages=Math.ceil(res/4);/*獲取信息的總頁數(shù)*/
    });

    function show(cPage){//替換每一頁的內(nèi)容
        $.getJSON('php/listmore.php',{cPage:cPage},function (json) {
            var str='';
            $('#list').empty();
            json.forEach(function (el) {
                str+=html.replace('{id}',el.id).replace('{title}',el.title).replace('{src}',el.src)
                    .replace('{content}',el.content).replace('{date}',el.time);
            });
            $('#list').html(str);
        });
        $('#total').html((curPage+1)+'/'+pages);
    }
    setTimeout(function () {
        show(0);
    },100);

    $('#page').on('click','li',function () {//上下翻頁聋溜,翻遍當(dāng)前頁的值
        var i=$(this).data('i');//jquery里特有的獲取data-*屬性的方法
        switch (i){
            case 0:curPage=0;break;
            case 1:curPage>0?curPage--:0;break;
            case 2:curPage<(pages-1)?curPage++:pages-1;break;
            case 3:curPage=pages-1;break;
        }
        show(curPage);
        disabled(curPage);
    })
    function disabled(curPage) {//關(guān)于臨界值禁止選擇
        if (curPage==0){/*當(dāng)前頁為第一頁谆膳,首頁和上一頁選項禁止點擊*/
            $('#index').addClass('disabled').next().addClass('disabled');
            $('#end').removeClass('disabled').prev().removeClass('disabled');
        } else if (curPage==pages-1){
            $('#index').removeClass('disabled').next().removeClass('disabled');
            $('#end').addClass('disabled').prev().addClass('disabled');
        } else {/*當(dāng)前頁為最后一頁,尾頁和下一頁選項禁止點擊*/
            $('#index').removeClass('disabled').next().removeClass('disabled');
            $('#end').removeClass('disabled').prev().removeClass('disabled');
        }
    }

connect.php(連接數(shù)據(jù)庫)

<?php
$link=new PDO("mysql:host=localhost;port=3306;dbname=db","root","");
$link->query("set names utf8");

pages.php(獲取總頁數(shù))

<?php
include_once('connect.php');//連接數(shù)據(jù)庫
$result = $link->query("select * from news");
$row=$result->rowCount();
echo $row;

listmore.php(獲取數(shù)據(jù)庫里的數(shù)據(jù))

<?php
include_once ('connect.php');
$num = 4;//每一頁顯示的數(shù)據(jù)條數(shù)
$cPage = $_GET['cPage'];//獲取當(dāng)前頁
$start = $cPage * $num;//計算當(dāng)前頁顯示的第一條數(shù)據(jù)的數(shù)目
/*從表中查詢從開始$start的一共$num條數(shù)據(jù)*/
$result = $link->query("select * from news order by id desc limit {$start},$num");
$link = null;
while ($row=$result->fetch()){/*每一次讀取一條數(shù)據(jù)*/
    $json[]=$row;/*把數(shù)據(jù)賦給json數(shù)組*/
}
echo json_encode($json);/*把json數(shù)組以json格式返回給HTML*/
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撮躁,一起剝皮案震驚了整個濱河市漱病,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌把曼,老刑警劉巖杨帽,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嗤军,居然都是意外死亡注盈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門叙赚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來老客,“玉大人,你說我怎么就攤上這事震叮‰逝椋” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵苇瓣,是天一觀的道長尉间。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么乌妒? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任汹想,我火速辦了婚禮,結(jié)果婚禮上撤蚊,老公的妹妹穿的比我還像新娘古掏。我一直安慰自己,他們只是感情好侦啸,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布槽唾。 她就那樣靜靜地躺著,像睡著了一般光涂。 火紅的嫁衣襯著肌膚如雪庞萍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天忘闻,我揣著相機與錄音钝计,去河邊找鬼。 笑死齐佳,一個胖子當(dāng)著我的面吹牛私恬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播炼吴,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼本鸣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了硅蹦?” 一聲冷哼從身側(cè)響起荣德,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎童芹,沒想到半個月后涮瞻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體威兜,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡佛嬉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年话侧,在試婚紗的時候發(fā)現(xiàn)自己被綠了陌粹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片京景。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸭廷,死狀恐怖妒御,靈堂內(nèi)的尸體忽然破棺而出讯榕,到底是詐尸還是另有隱情久锥,我是刑警寧澤家淤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站瑟由,受9級特大地震影響絮重,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一青伤、第九天 我趴在偏房一處隱蔽的房頂上張望督怜。 院中可真熱鬧,春花似錦狠角、人聲如沸号杠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姨蟋。三九已至,卻和暖如春立帖,著一層夾襖步出監(jiān)牢的瞬間眼溶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工晓勇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留堂飞,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓绑咱,卻偏偏與公主長得像绰筛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子羡玛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 一、文本框為字符型 必填項非空校驗: 1宗苍、必填項未輸入--程序應(yīng)提示錯誤稼稿; 2、必填項只輸入若干個空格讳窟,未輸入其它...
    許小小晴閱讀 4,626評論 0 2
  • 測試最重要的是測試思路让歼、測試策略和測試計劃,只有這些前期工作做足丽啡,后面的測試執(zhí)行才能針對整體的產(chǎn)品測試起到事半功倍...
    雷哥說閱讀 1,454評論 0 8
  • 測試點: 翻頁功能常見功能點 1.首頁谋右、上一頁、下一頁补箍、尾頁 2.總頁數(shù)改执,當(dāng)前頁數(shù) 3.指定跳轉(zhuǎn)頁 4.指定每頁顯...
    詩意濤濤閱讀 1,344評論 0 0
  • 分頁簡介 分頁功能在網(wǎng)頁中是非常常見的一個功能,其作用也就是將數(shù)據(jù)分割成多個頁面來進行顯示坑雅。 使用場景: 當(dāng)取到的...
    我沒有三顆心臟閱讀 32,884評論 1 26
  • 春天正是吃菠菜的季節(jié)辈挂,記得我媽給我講過,她們小時候即使是北京也是物資匱乏的裹粤,由于瓜果蔬菜種類很少终蒂,所以飯菜的季節(jié)性...
    mialiubeijing閱讀 154評論 0 0