诚之和:PHP+MYSQL的分页是怎样操作的

本篇文章为大家展示了PHP+MYSQL的分页是怎样操作的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

寫php是簡單的事,但是分頁可困擾小弟好一陣子°
因為手邊的書好多本...本本看不懂說不清...°
這個技巧對行家,雖是簡易的事,但對於一位初學者可會困擾好一陣子°
如果您也是初學者,相信本篇可以給您一丁點的收穫°

開始
想要作出分頁的效果,得先想一下,閉上眼吧?
想分頁須要那些資料呢?
1您得先決定每頁要有多少筆資料($pagesize),以這個來除才能得到頁數°
2總資料筆數是多少?($total)如果沒有,相當於沒有被除數,一樣是白談了°
3當我們要換頁時,得告訴程式,我們要換到第幾頁去($p)°

mysql
有了上述三個,除了13是自行決定的外,2的部分則須從資料庫計算出來°
而重點訣竅在於sql的語法,sql的語法有一個limit
它的用法是
limit 開始位置,取資料數
因此我們直接利用其開始位置來得到我們該頁的資料,而取資料數則為我們自訂的每頁幾筆°
例子
假設資料量有8筆資料,我們要每3筆一頁,則sql語法如下:
第1頁==>取出0,1,2三筆
select * from 資料表 limit 0,3
第2頁==>取出3,4,5三筆
select * from 資料表 limit 3,3
第3頁==>取出6,7,8三筆,不過因為資料不足,實際只會取出6,7二筆
select * from 資料表 limit 6,3

觀察與計算
以上述例子,首先我們要先統計資料總數後再作頁數的計算 °
總計總數
這個部分自資料庫取得來算便知,所以可以利用下列方式

$result = mysql_query("select * from 資料表 "); //取全部資料的語法
$total=mysql_num_rows($result);//取得資料的總數

8÷3=2...2
在這裡我們可以用到一個php的函式ceil,
其作用可以算出比該數(浮點數,有小數位的)大的最小整數
所以總頁數為$totalpages= ceil($total/ $pagesize);

分頁開始
要先分頁之前,我們得先決定一個第幾頁的變數,在這邊預設為$p
另外小弟習慣頁數從0開始算,也就是
$p=0--&gt第1頁,從第0筆開始取,算法--&gt $p*$pagesize--&gt0*3=0
$p=1--&gt第2頁,從第3筆開始取,算法--&gt $p*$pagesize--&gt1*3=3
$p=2--&gt第3頁,從第6筆開始取,算法--&gt $p*$pagesize--&gt2*3=6

如果您要從1開始算也是可以的,不過使用上要再減1就是了
$p=1--&gt第1頁,從第0筆開始取,算法--&gt ($p-1)*$pagesize--&gt0*3=0
$p=2--&gt第2頁,從第3筆開始取,算法--&gt ($p-1)*$pagesize--&gt1*3=3
$p=3--&gt第3頁,從第6筆開始取,算法--&gt ($p-1)*$pagesize--&gt2*3=6

接下來,再看看語法

第1頁==>$p=0,取出0,1,2三筆
select * from 資料表 limit 0,3
select * from 資料表 limit $p *$pagesize ,$pagesize
第2頁==>$p=1,取出3,4,5三筆
select * from 資料表 limit $p* $pagesize, $pagesize
第3頁==>$p=2,取出6,7,8三筆
select * from 資料表 limit 6,3
select * from 資料表 limit $p* $pagesize, $pagesize

綜合上述得到的分頁語法則為
select * from 資料表 limit $p* $pagesize, $pagesize

跳到指定頁
另外我們要如何將分頁的頁數$p給程式呢?
一般而言都是靠連結的方式將$p的值傳入
第1頁
第2頁
第3頁
...........
......
當然您也可以利用其他的方式來作..不過在這邊不詳述了°

[@more@]

實作練習
接來秀出一個完整的程式碼的流程讓大家清楚整個流程:

<?
$pagesize=2;//決定好每頁筆數
$link = mysql_connect('服務器','帳號','密碼') or die("無法連線!請連絡管理者!");
//連線到資料庫主機
mysql_select_db('資料庫',$link) or die("無法連到資料庫!請連絡管理者!");
//選擇資料庫

$result = mysql_query("select * from 資料表 ");
/////////////先取全部資料,用於計算總數上
$total=mysql_num_rows($result);
/////////////////計算並取得資料的總數
echo "總筆數".$total;
$totalpages= ceil($total/ $pagesize);
echo "總頁數".$totalpages;
//計算並顯示總頁數
for ($i=0;$i<$totalpages;$i++) {
?>>第頁
<?
}
//////////////////以迴圈來跑頁數,利用$i+1讓顯示時是第1頁開始
$p = $_GET['p'];
if ($p==''){ $p=0; }
///////////////////若沒指定第幾頁就從第0頁開始
$sql="select * from 資料表 limit ".$p*$pagesize.",".$pagesize;

/////////////只取部分資料,用於顯示
$res = mysql_query($sql);
echo "
";
while ($row = mysql_fetch_array($res))
{
//顯示結果迴圈
echo $row["name"];

}

?>

(0)

相关推荐

  • 7 LIMIT分页

    LIMIT分页 为什么需要分页? 在对数据库进行大量数据查询时,往往需要使用分页进行查询,每次处理小部分数据,这样对数据库的压力在可控范围内. 使用LIMIT分页的常用语法 #数据库索引是从0开始SE ...

  • 诚之和:phpmyadmin配制连接mysql时出现错误怎么办

    本篇文章给大家分享的是有关phpmyadmin配制连接mysql时出现错误怎么办,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧. phpm ...

  • 诚之和:如何理解MySQL用户中的百分号%是否包含localhost

    这篇文章主要介绍"如何理解MySQL用户中的百分号%是否包含localhost",在日常操作中,相信很多人在如何理解MySQL用户中的百分号%是否包含localhost问题上存在疑 ...

  • 诚之和:MySQL中怎么实现修改密码及访问限制设置

    本篇文章为大家展示了MySQL中怎么实现修改密码及访问限制设置,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获. MySQL是一个真正的多用户.多线程SQL数据库 ...

  • 诚之和:MySQL数据库灾备的基础知识总结

    一.数据备份捷径 因为这个方法没有得到官方正式文档的验证,我们暂称为试验吧. 目的:备份hostA主机中一个MySQL数据库备份TestA,并恢复到到hostB机中 试验环境: 操作系统:WinNT4 ...

  • 诚之和:如何解决linux php连不上mysql数据库问题

    本篇内容主要讲解"如何解决linux php连不上mysql数据库问题",感兴趣的朋友不妨来看看.本文介绍的方法操作简单快捷,实用性强.下面就让小编来带大家学习"如何解决 ...

  • 诚之和:使用Java的数组和链表模拟栈的实现

    栈属于数据结构的一种,也是比较常用的一种数据结构.下面文章,将通过Java的数组和链表的形式模拟栈结构的实现,来帮助大家对于栈的理解. 一.何为栈? 栈(stack)又名堆栈,它是一种运算受限的线性表 ...

  • 诚之和:使用IDEA创建Web项目 详细步骤解析

    随着现在技术的进展,很多的东西都可以直接在线在网站.网页上直接进行操作,所以很多项目都是基于Web进行开发的.下面,为大家分享一篇关于使用IDEA创建一个JavaWeb的项目创建流程的文章. 一.Fi ...

  • 诚之和:教你使用Java实现树形菜单对象 实例代码解析

    本文实例为大家分享了java实现树形菜单对象的具体代码,供大家参考,具体内容如下 1.SysMenu package com.zy.shiro.domain;import com.baomidou.m ...

  • mysql中分页查询(LIMIT和OFFSET关键字讲解)一语道破天机

    mysql中分页查询(LIMIT和OFFSET关键字) 大家看图和看案例,图文并茂,比较好理解! /* 注意:mysql数据库中LIMIT分页查询时,索引是从0开始的(即表中第一条数 据的索引是0,第 ...