pdo分页

    1. <?php              开源it
    2. /** 文件: pdo_page.class.php
    3. ** 版本: 2.0
    4. ** 功能: 使用php数据对象(pdo)实现数据的分页显示
    5. ** 运行环境:
    6. **                ① php版本--5.1以上(包括5.1)
    7. **                ② 打开pdo扩展(默认为关闭)
    8. **                ③ 打开与所使用db相应对应的pdo扩展(默认为关闭)
    9. **
    10. ** DISCLAIMER:
    11. ** Distributed "as is", fell free to modify any part of this code.
    12. ** You can use this for any projects you want, commercial or not.
    13. ** It would be very kind to email me any suggestions you have or bugs you
    14. ** might find.
    15. **
    16. ** 完成时间: 2006-10-15
    17. ** Power By 刘胜蛟 (Email: [email protected]/[email protected])
    18. **/
    19. class pdo_page{
    20. /* 变量定义部分 begin */
    21. /* pdo数据源 */
    22. private $db_driver = ‘‘;
    23. private $db_host = ‘‘;
    24. private $db_user = ‘‘;
    25. private $db_password = ‘‘;
    26. private $db_char = ‘‘;
    27. private $db_name = ‘‘;
    28. private $db_table = ‘‘;
    29. private $db_table_field = ‘‘;
    30. private $db = ‘‘;                //数据库连接句柄
    31. /* 分页显示参数设置 */
    32. private $page_size = 0;                //每页显示的记录数目
    33. private $link_num = 0;                //显示页码链接的数目
    34. private $page = 1;                //页码
    35. private $records = 0;                //表中记录总数
    36. private $page_count = 0;        //总页数
    37. private $pagestring = ‘‘;        //前后分页链接字符串
    38. private $page_link = ‘‘;        //页码链接字符串
    39. private $page_select = ‘‘;        //表单跳转页字符串
    40. private $page_jump = ‘‘;        //text筐输入页码跳转
    41. /* 变量定义部分 end */
    42. /* 函数定义(类方法) begin */
    43. function __construct(){
    44. }
    45. /* 设置分页信息 begin */
    46. public function set($db_driver,
    47. $db_host,
    48. $db_user,
    49. $db_password,
    50. $db_name,
    51. $db_table,
    52. $db_table_field,
    53. $page_size,
    54. $link_num){
    55. /* db参数设置 begin */
    56. $this->db_driver = $db_driver;                //db驱动
    57. $this->db_host = $db_host;                //dbms地址
    58. $this->db_user = $db_user;                //dbms帐户
    59. $this->db_password = $db_password;        //dbms密码
    60. $this->db_name = $db_name;                //db名称
    61. $this->db_table = $db_table;                //表名
    62. $this->db_table_field = $db_table_field;//字段数组,
    63. //将要显示的字段名称
    64. //写入该数组
    65. /* db参数设置 end */
    66. /* 分页参数设置 begin */
    67. $this->page_size = $page_size;                //每页显示记录的数目
    68. $this->link_num = $link_num;                //显示翻页链接的数目
    69. /* 分页参数设置 end */
    70. }
    71. /* 设置分页信息 end*/
    72. /* 获取分页链接数据 begin */
    73. public function get(){
    74. $page_data[0] = $this->records;                //表中记录的总数
    75. $page_data[1] = $this->page_count;        //总页数
    76. $page_data[2] = $this->page;                //当前页码
    77. $page_data[3] = $this->pagestring;        //‘首页‘、‘上一页‘、
    78. //‘下一页‘、//‘尾页‘
    79. //--链接样式
    80. $page_data[4] = $this->page_link;        //[1]、[2]、[3]
    81. //--链接样式
    82. $page_data[5] = $this->page_select;        //表单翻页样式
    83. $page_data[6] = $this->page_jump;        //跳转的指定页样式
    84. return $page_data;
    85. }
    86. /* 获取分页链接数据 end */
    87. /* 连接数据库 begin */
    88. private function db_conn(){
    89. try{
    90. $this->db = new pdo(
    91. "$this->db_driver:dbname=$this->db_name;
    92. host=$this->db_host;charset=$this->db_char",
    93. "$this->db_user",
    94. "$this->db_password"
    95. );
    96. return $this->db;
    97. } catch(pdoexception $e) {
    98. die($e->getmessage());
    99. }
    100. }
    101. /* 连接数据库 end */
    102. /* 页码处理 begin */
    103. private function set_page(){
    104. if (isset($_REQUEST[‘page‘])) {
    105. $this->page = intval($_REQUEST[‘page‘]);
    106. } else {
    107. $this->page = 1;
    108. }
    109. }
    110. /* 页码处理 end */
    111. /* 获取db中记录的数目 begin */
    112. private function get_records(){
    113. $sql = "select count(*) from $this->db_table";
    114. $stmt = $this->db->prepare($sql);
    115. $stmt->execute();
    116. while ($f = $stmt->fetch()) {
    117. $this->records = $f[0];
    118. }
    119. }
    120. /* 获取db中记录的数目 end */
    121. /* 建立翻页链接字符串 begin */
    122. private function page_link(){
    123. /* 前后页链接字符串 begin */
    124. if ($this->page == 1) {
    125. //首页,无链接
    126. $this->pagestring .=‘第一页|上一页‘;
    127. } else {
    128. //不为首页,有链接
    129. $this->pagestring .=‘<a href=?page=1>第一页</a>|
    130. <a href=?page=‘.($this->page-1).‘>上一页</a>‘;
    131. }
    132. if ($this->page==$this->page_count || $this->page_count==0) {
    133. //末页,无链接
    134. $this->pagestring .=‘下一页|尾页‘;
    135. } else {
    136. //非末页,有链接
    137. $this->pagestring .=‘<a href=?page=‘.($this->page+1).‘>
    138. 下一页</a>|<a href=?page=‘.$this->page_count.‘>尾页</a>‘;
    139. }
    140. /* 前后页链接字符串 end */
    141. /* 页码链接字符串 begin */
    142. for ($i=$this->page;$i<=$this->page+$this->link_num-1;$i++) {
    143. if ($i<=$this->page_count) {
    144. $this->page_link .= ‘<a href=?page=‘.$i.‘>
    145. [‘.$i.‘]</a> ‘;
    146. $last_page = $i;
    147. }
    148. }
    149. if ($i-$this->link_num-1 < 1) {
    150. $front_page = 1;
    151. } else {
    152. $front_page = $i - $this->link_num - 1;
    153. }
    154. if ($last_page == $this->page_count) {
    155. $back_page = $last_page;
    156. } else {
    157. $back_page = $last_page+1;
    158. }
    159. $this->page_link = ‘<a href=?page=‘.$front_page.‘><<</a>‘.‘ ‘.
    160. $this->page_link.‘ ‘.‘<a href=?page=‘.$back_page.‘>>>
    161. </a>‘;
    162. /* 页码链接字符串 end */
    163. /* select页码 begin */
    164. $this->page_select = "<form action=‘‘ method=post>
    165. <select name=page>";
    166. for ($i = 1;$i <= $this->page_count;$i++) {
    167. if ($i == $this->page) {
    168. $this->page_select .= "<option selected>$i
    169. </option>";
    170. } else {
    171. $this->page_select .= "<option>$i</option>";
    172. }
    173. }
    174. $this->page_select .= "</select><input type=submit value=go>
    175. </form>";
    176. /* select页码 end */
    177. /* input跳转表单begin */
    178. $this->page_jump = "<form action=‘‘ method=post><input
    179. type=text size=1 name=page value=$this->page><input
    180. type=submit value=go>";
    181. /* input跳转表单end */
    182. }
    183. /* 建立翻页链接字符串 end */
    184. /* 获取数据 begin */
    185. function fetch_data(){
    186. if ($this->records) {
    187. $sql = "select * from
      $this->db_table limit
      ".($this->page-1)*$this->page_size.",$this->page_size";
    188. $stmt = $this->db->prepare($sql);
    189. $stmt->execute();
    190. echo "<center><table border=1 width=60%><tr>";
    191. /* 取字段名称 begin */
    192. $field_count = count($this->db_table_field);
    193. for($i = 0;$i < $field_count;$i++){
    194. $field_name = $this->db_table_field[$i];
    195. echo "<td><center><b>$field_name</b></center>
    196. </td>";
    197. }
    198. echo "</tr>";
    199. /* 取字段名称 end */
    200. /* 获取数据 begin */
    201. while($f = $stmt->fetch()){
    202. echo "<tr>";
    203. for($i = 0;$i < $field_count;$i++){
    204. $field_name = $this->db_table_field[$i];
    205. $field_value = $f["$field_name"];
    206. echo "<td><center>$field_value</center>
    207. </td>";
    208. }
    209. echo "</tr>";
    210. }
    211. /* 获取数据 end */
    212. echo "</table></center>";
    213. }
    214. }
    215. /* 获取数据 end */
    216. /* 建立分页 begin */
    217. public function create_page(){
    218. $this->db_conn();
    219. $this->set_page();
    220. $this->get_records();
    221. $this->page_count = ceil($this->records/$this->page_size);
    222. $this->page_link();
    223. $this->fetch_data();
    224. }
    225. /* 建立分页 end */
    226. function __destruct(){
    227. }
    228. /* 函数定义(类方法) end */
    229. }
    230. ///////////////////////////////////////////////////////////////////////////////
    231. /////////////////////////////////example///////////////////////////////////////
    232. /*step1: 建立分页对象
    233. *new pdo_page;
    234. */
    235. $page = new pdo_page;
    236. /*step2: 设置分页参数
    237. *
    238. *⑴设置数据库信息
    239. *pdo_page->set($db_driver,
    240. *                $db_host,
    241. *                $db_user,
    242. *                $db_password,
    243. *                $db_name,
    244. *                $db_table,
    245. *                $db_table_field,
    246. *                $page_size,
    247. *                $link_num);
    248. *参数说明:
    249. *$db_driver--db驱动
    250. *$db_host--dbms地址
    251. *$db_user--dbms帐户
    252. *$db_password--dbms密码
    253. *$db_name--db名称
    254. *$db_table--表名
    255. *$db_table_field--字段数组,将要显示的字段名称写入该数组
    256. *
    257. *⑵设置分页信息
    258. *$page_size--每页显示记录的数目
    259. *$link_num--显示翻页链接的数目
    260. */
    261. $page->set(‘mysql‘,
    262. ‘localhost‘,
    263. ‘root‘,
    264. ‘goldfish‘,
    265. ‘goldfish‘,
    266. ‘goldfish‘,
    267. array(‘id‘,‘name‘,‘age‘),
    268. 2,
    269. 3);
    270. /*step3: 生成分页
    271. *pdo_page->create_page();
    272. */
    273. $page->create_page();
    274. /*step4: 获取分页数据
    275. *pdo_page->get();
    276. *page_data[0]: 表中记录的总数
    277. *page_data[1]: 总页数
    278. *page_data[2]: 当前页码
    279. *page_data[3]: pagestring,‘首页‘、‘上一页‘、‘下一页‘、‘尾页‘--链接样式
    280. *page_data[4]: page_link,[1]、[2]、[3]--链接样式
    281. *page_data[5]: page_select,表单翻页样式
    282. *page_data[6]: page_jump,跳转的指定页
    283. */
    284. $page_data = $page->get();
    285. /*step5: 输出分页信息
    286. *翻页链接显示输出begin
    287. */
    288. echo ‘<center>共有‘.$page_data[0].‘条记录‘;        //表中记录的总数
    289. echo ‘&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;‘;
    290. echo ‘第‘.$page_data[2].‘页/‘;
    291. echo ‘共‘.$page_data[1].‘页</center>‘;                //总页数
    292. echo ‘<center>‘.$page_data[3].‘</center>‘;        //‘首页‘、‘上一页‘、
    293. //‘下一页‘、‘尾页‘
    294. //--链接样式
    295. echo ‘<center>‘.$page_data[4].‘</center>‘;        //[1]、[2]、[3]
    296. //--链接样式
    297. echo ‘<center>‘.$page_data[5].‘</center>‘;        //表单翻页样式
    298. echo ‘<center>‘.$page_data[6].‘</center>‘;        //跳转的指定页
    299. ?>
时间: 2024-10-15 10:14:28

pdo分页的相关文章

php pdo分页

<table width="95%" border="1" cellspacing="0" cellpadding="0" align="center"> <tr align="center" height="30px"> <td>文章标题</td> <td>文章内容</td> <td>

php必须知道的300个问题-目录

php必须知道的300个问题 第1章 PHP开发规范与入门要点 问题1 如何在Windows下配置PHP开发环境? 答案 问题2 如何在Linux下配置PHP开发环境? 问题3 如何搭建IIS+PHP+MySQL环境? 问题4 PHP集成开发环境的特点有哪些? 问题5 如何应用AppServ搭建PHP开发环境? 问题6 如何通过XAMPP配置PHP开发环境? 问题7 XAMPP——Linux版PHP集成化安装包 问题8 Apache配置文件全解 问题9 PHP.INI配置文件全解 问题10 Ap

php大力力 [046节] 兄弟连高洛峰 PHP教程 2014年[数据库、PDO教程]

第14章 数据库252.[2014]兄弟连高洛峰 PHP教程14.1.1 复习数据库[已发布,点击下载]253.[2014]兄弟连高洛峰 PHP教程14.1.2 phpMyAdmin的使用[已发布,点击下载]254.[2014]兄弟连高洛峰 PHP教程14.1.3 php访问MySQL[已发布,点击下载]255.[2014]兄弟连高洛峰 PHP教程14.1.4 在PHP脚本中操作MySQL数据库1[已发布,点击下载]256.[2014]兄弟连高洛峰 PHP教程14.1.5 在PHP脚本中操作My

PDO学习笔记

1. 何为PDO? PDO(PHP数据对象) 是一个轻量级的.具有兼容接口的PHP数据连接拓展,是一个PHP官方的PECL库,随PHP 5.1发布,需要PHP 5的面向对象支持,因而在更早的版本上无法使用.它所提供的数据接入抽象层,具有与具体数据库类型无关的优势,为它所支持的数据库提供统一的操作接口.目前支持的数据库有Cubrid.FreeTDS / Microsoft SQL Server / Sybase.Firebird/Interbase 6.IBM DB2.IBM Informix D

php分页原理

一.php分页流程 新手最好在设计先画流程图 二.代码实现 <meta http-equiv="Content-Type" content="text/html;charset=utf8"/> <?php if (isset($_GET['page'])) //获取url里的page { $page = intval($_GET['page']); } else { $page = 1; //其他情况,都指向第一页 } function _PAGE

ajax做分页

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

Yii2数据库分页操作方法介绍

本章节将介绍如何如何创建一个从数据表 country 中获取国家数据并显示出来的页面.为了实现这个目标,你将会配置一个数据库连接,创建一个活动记录类,并且创建一个操作及一个视图. 贯穿整个章节,你将会学到: 配置一个数据库连接 定义一个活动记录类 使用活动记录从数据库中查询数据 以分页方式在视图中显示数据 请注意,为了掌握本章你应该具备最基本的数据库知识和使用经验.尤其是应该知道如何创建数据库,如何通过数据库终端执行 SQL 语句. 准备数据库 首先创建一个名为 yii2basic 的数据库,应

2016/4/10 新闻页 注意点 ①摘要显示 ②点击详情显示全部 ③添加分页 ④时间戳转正常年月日 ⑤遇到空格 替换为回车换行

完成效果图: 共五个页面 ①news.php  主页 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <script src="jquery-1.11.2.min.js"></script> 7 <

PHP – PDO简单概述

1. 何为PDO? PDO(PHP数据对象) 是一个轻量级的.具有兼容接口的PHP数据连接拓展,是一个PHP官方的PECL库,随PHP 5.1发布,需要PHP 5的面向对象支持,因而在更早的版本上无法使用.它所提供的数据接入抽象层,具有与具体数据库类型无关的优势,为它所支持的数据库提供统一的操作接口.目前支持的数据库有Cubrid.FreeTDS / Microsoft SQL Server / Sybase.Firebird/Interbase 6.IBM DB2.IBM Informix D