码迷,mamicode.com
首页 > 其他好文 > 详细

pdo分页

时间:2015-06-30 23:21:03      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:

    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: liushengjiao@163.com/liushengjiao@gmail.com)
    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.        
    73.         /* 获取分页链接数据 begin */
    74.         public function get(){
    75.                 $page_data[0] = $this->records;                //表中记录的总数
    76.                 $page_data[1] = $this->page_count;        //总页数
    77.                 $page_data[2] = $this->page;                //当前页码
    78.                 $page_data[3] = $this->pagestring;        //‘首页‘、‘上一页‘、
    79.                                                         //‘下一页‘、//‘尾页‘
    80.                                                         //--链接样式

    81.                 $page_data[4] = $this->page_link;        //[1]、[2]、[3]
    82.                                                         //--链接样式

    83.                 $page_data[5] = $this->page_select;        //表单翻页样式
    84.                 $page_data[6] = $this->page_jump;        //跳转的指定页样式
    85.                 return $page_data;
    86.         }
    87.         /* 获取分页链接数据 end */

    88.         /* 连接数据库 begin */
    89.         private function db_conn(){
    90.                 try{
    91.                         $this->db = new pdo(
    92.                                 "$this->db_driver:dbname=$this->db_name;
    93.                                 host=$this->db_host;charset=$this->db_char",
    94.                                 "$this->db_user",
    95.                                 "$this->db_password"
    96.                         );
    97.                         return $this->db;
    98.                 } catch(pdoexception $e) {
    99.                         die($e->getmessage());
    100.                 }
    101.         }
    102.         /* 连接数据库 end */

    103.         /* 页码处理 begin */
    104.         private function set_page(){
    105.                 if (isset($_REQUEST[‘page‘])) {
    106.                         $this->page = intval($_REQUEST[‘page‘]);
    107.                 } else {
    108.                         $this->page = 1;
    109.                 }
    110.         }
    111.         /* 页码处理 end */

    112.         /* 获取db中记录的数目 begin */
    113.         private function get_records(){
    114.                 $sql = "select count(*) from $this->db_table";
    115.                 $stmt = $this->db->prepare($sql);
    116.                 $stmt->execute();
    117.                 while ($f = $stmt->fetch()) {
    118.                         $this->records = $f[0];
    119.                 }
    120.         }
    121.         /* 获取db中记录的数目 end */

    122.         /* 建立翻页链接字符串 begin */
    123.         private function page_link(){
    124.                 /* 前后页链接字符串 begin */
    125.                 if ($this->page == 1) {
    126.                         //首页,无链接
    127.                         $this->pagestring .=‘第一页|上一页‘;
    128.                 } else {
    129.                         //不为首页,有链接
    130.                         $this->pagestring .=‘<a href=?page=1>第一页</a>|
    131.                         <a href=?page=‘.($this->page-1).‘>上一页</a>‘;
    132.                        
    133.                 }
    134.                 if ($this->page==$this->page_count || $this->page_count==0) {
    135.                         //末页,无链接
    136.                         $this->pagestring .=‘下一页|尾页‘;
    137.                 } else {
    138.                         //非末页,有链接
    139.                         $this->pagestring .=‘<a href=?page=‘.($this->page+1).‘>
    140.                         下一页</a>|<a href=?page=‘.$this->page_count.‘>尾页</a>‘;
    141.                 }
    142.                 /* 前后页链接字符串 end */

    143.                 /* 页码链接字符串 begin */
    144.                 for ($i=$this->page;$i<=$this->page+$this->link_num-1;$i++) {
    145.                         if ($i<=$this->page_count) {
    146.                                 $this->page_link .= ‘<a href=?page=‘.$i.‘>
    147.                                 [‘.$i.‘]</a> ‘;
    148.                                 $last_page = $i;
    149.                         }
    150.                 }
    151.                 if ($i-$this->link_num-1 < 1) {
    152.                                 $front_page = 1;
    153.                 } else {
    154.                                 $front_page = $i - $this->link_num - 1;
    155.                 }
    156.                 if ($last_page == $this->page_count) {
    157.                                 $back_page = $last_page;
    158.                 } else {
    159.                                 $back_page = $last_page+1;
    160.                 }
    161.                 $this->page_link = ‘<a href=?page=‘.$front_page.‘><<</a>‘.‘ ‘.
    162.                         $this->page_link.‘ ‘.‘<a href=?page=‘.$back_page.‘>>>
    163.                         </a>‘;
    164.                 /* 页码链接字符串 end */

    165.                 /* select页码 begin */
    166.                 $this->page_select = "<form action=‘‘ method=post>
    167.                         <select name=page>";
    168.                 for ($i = 1;$i <= $this->page_count;$i++) {
    169.                         if ($i == $this->page) {
    170.                                 $this->page_select .= "<option selected>$i
    171.                                 </option>";
    172.                         } else {
    173.                                 $this->page_select .= "<option>$i</option>";
    174.                         }
    175.                 }
    176.                 $this->page_select .= "</select><input type=submit value=go>
    177.                         </form>";
    178.                 /* select页码 end */

    179.                 /* input跳转表单begin */
    180.                 $this->page_jump = "<form action=‘‘ method=post><input
    181.                         type=text size=1 name=page value=$this->page><input
    182.                         type=submit value=go>";
    183.                 /* input跳转表单end */

    184.         }
    185.         /* 建立翻页链接字符串 end */

    186.         /* 获取数据 begin */
    187.         function fetch_data(){
    188.                 if ($this->records) {
    189.                         $sql = "select * from $this->db_table limit ".($this->page-1)*$this->page_size.",$this->page_size";
    190.                         $stmt = $this->db->prepare($sql);
    191.                         $stmt->execute();
    192.                         echo "<center><table border=1 width=60%><tr>";
    193.                         /* 取字段名称 begin */
    194.                         $field_count = count($this->db_table_field);
    195.                         for($i = 0;$i < $field_count;$i++){
    196.                                 $field_name = $this->db_table_field[$i];
    197.                                 echo "<td><center><b>$field_name</b></center>
    198.                                         </td>";
    199.                         }
    200.                         echo "</tr>";
    201.                         /* 取字段名称 end */
    202.                         /* 获取数据 begin */
    203.                         while($f = $stmt->fetch()){
    204.                                 echo "<tr>";
    205.                                 for($i = 0;$i < $field_count;$i++){
    206.                                         $field_name = $this->db_table_field[$i];
    207.                                         $field_value = $f["$field_name"];
    208.                                         echo "<td><center>$field_value</center>
    209.                                                 </td>";
    210.                                 }
    211.                                 echo "</tr>";
    212.                         }
    213.                         /* 获取数据 end */
    214.                         echo "</table></center>";
    215.                 }
    216.         }
    217.         /* 获取数据 end */

    218.         /* 建立分页 begin */
    219.         public function create_page(){
    220.                 $this->db_conn();
    221.                 $this->set_page();
    222.                 $this->get_records();
    223.                 $this->page_count = ceil($this->records/$this->page_size);
    224.                 $this->page_link();
    225.                 $this->fetch_data();
    226.         }
    227.         /* 建立分页 end */

    228.         function __destruct(){

    229.         }
    230. /* 函数定义(类方法) end */
    231. }


    232. ///////////////////////////////////////////////////////////////////////////////
    233. /////////////////////////////////example///////////////////////////////////////
    234. /*step1: 建立分页对象
    235. *new pdo_page;
    236. */
    237. $page = new pdo_page;

    238. /*step2: 设置分页参数
    239. *
    240. *⑴设置数据库信息
    241. *pdo_page->set($db_driver,
    242. *                $db_host,
    243. *                $db_user,
    244. *                $db_password,
    245. *                $db_name,
    246. *                $db_table,
    247. *                $db_table_field,
    248. *                $page_size,
    249. *                $link_num);
    250. *参数说明:
    251. *$db_driver--db驱动
    252. *$db_host--dbms地址
    253. *$db_user--dbms帐户
    254. *$db_password--dbms密码
    255. *$db_name--db名称
    256. *$db_table--表名
    257. *$db_table_field--字段数组,将要显示的字段名称写入该数组
    258. *
    259. *⑵设置分页信息
    260. *$page_size--每页显示记录的数目
    261. *$link_num--显示翻页链接的数目
    262. */
    263. $page->set(‘mysql‘,
    264.         ‘localhost‘,
    265.         ‘root‘,
    266.         ‘goldfish‘,
    267.         ‘goldfish‘,
    268.         ‘goldfish‘,
    269.         array(‘id‘,‘name‘,‘age‘),
    270.         2,
    271.         3);

    272. /*step3: 生成分页
    273. *pdo_page->create_page();
    274. */
    275. $page->create_page();

    276. /*step4: 获取分页数据
    277. *pdo_page->get();
    278. *page_data[0]: 表中记录的总数
    279. *page_data[1]: 总页数
    280. *page_data[2]: 当前页码
    281. *page_data[3]: pagestring,‘首页‘、‘上一页‘、‘下一页‘、‘尾页‘--链接样式
    282. *page_data[4]: page_link,[1]、[2]、[3]--链接样式
    283. *page_data[5]: page_select,表单翻页样式
    284. *page_data[6]: page_jump,跳转的指定页
    285. */
    286. $page_data = $page->get();

    287. /*step5: 输出分页信息
    288. *翻页链接显示输出begin
    289. */
    290.         echo ‘<center>共有‘.$page_data[0].‘条记录‘;        //表中记录的总数
    291.         echo ‘&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;‘;
    292.         echo ‘第‘.$page_data[2].‘页/‘;
    293.         echo ‘共‘.$page_data[1].‘页</center>‘;                //总页数

    294.         echo ‘<center>‘.$page_data[3].‘</center>‘;        //‘首页‘、‘上一页‘、
    295.                                                         //‘下一页‘、‘尾页‘
    296.                                                         //--链接样式

    297.         echo ‘<center>‘.$page_data[4].‘</center>‘;        //[1]、[2]、[3]
    298.                                                         //--链接样式

    299.         echo ‘<center>‘.$page_data[5].‘</center>‘;        //表单翻页样式
    300.         echo ‘<center>‘.$page_data[6].‘</center>‘;        //跳转的指定页

    301. ?>

pdo分页

标签:

原文地址:http://www.cnblogs.com/q3114140374/p/4612043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!