源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

php mysql数据库操作分页类

  • 时间:2020-03-13 08:13 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:php mysql数据库操作分页类
[url=]                $str.= "<a href='".$this->url.($this->page-1)."'>".$this->img_btn[1]."</a>";             }             return $str;         }         function show_next_last(){             if ($this->page>=$this->total_pages){                 $str =  "<strong>".$this->img_btn[2]."</strong> <strong>".$this->img_btn[3]."</strong>";             }else{                 $str = "<a href='".$this->url.($this->page+1)."'>".$this->img_btn[2]."</a> ";                 $str.= "<a href='".$this->url.$this->total_pages."'>".$this->img_btn[3]."</a>";             }             return $str;         }         function show_num_text(){             $str = " 转到第 <input id='go_num_text' type='text' value='".$this->page."' style='border:0;border-bottom:1px solid #CCC;text-align:center;width:20px;'/> 页 ";             $str.= "<a href='#' onClick=\"window.location='".$this->url."'+document.getElementById('go_num_text').value;\" style='font-family: Arial, Helvetica, sans-serif;font-weight:bold;font-size:14px;'>[Go]</a>";             return $str;         }         function show_num_select(){             if ($this->total_pages<50){                 $str = "<select onchange=\"if(this.options[this.selectedIndex].value!=''){location=this.options[this.selectedIndex].value;}\">";                 for ($i=1; $i<=$this->total_pages; $i++){                     $str.= "<option value='".$this->url.$i."' ".($this->page==$i ? " selected='selected'":"").">".$i."</option>";                 }                 $str.= "</select> ";             }else{                 $str = "";             }             return $str;         }         function show_num_btn(){             if ($this->page>=1 and $this->page<=$this->total_pages){                 $tmp_p    = ($this->num_btn-1)/2;                 if (($this->page - $tmp_p)<=0){                     $start_p    = 1;                 }else{                     if (($this->page-$tmp_p)>$this->num_btn and ($this->page-$tmp_p)>($this->total_pages - $this->num_btn+1)){                         $start_p    = $this->total_pages - $this->num_btn + 1;                     }else{                         $start_p    = $this->page - $tmp_p;                     }                 }                 if (($this->page+$tmp_p) < $this->total_pages){                     $end_p = ($this->page + $tmp_p)<$this->num_btn?$this->num_btn:($this->page + $tmp_p);                     if ($end_p>$this->total_pages){                         $end_p = $this->total_pages;                     }                 }else{                     $end_p = $this->total_pages;                 }             }             $str = "";             for ($i=$start_p; $i<=$end_p; $i++){                 if ($i==$this->page){                     $str.= " <strong>".$i."</strong> ";                 }else{                     $str.= " <a href='".$this->url.$i."'>".$i."</a> ";                 }             }             return $str;         }         function show_page_info(){             $str = " 共".$this->total_records."条/".$this->total_pages."页";             return $str;         }         function show_page(){             if ($this->total_records<1){                 $this->set_show_page();             }             $str = $this->total_pages>1 ? $this->show_first_prv().$this->show_num_btn().$this->show_next_last().$this->show_page_info().$this->show_num_text():"";             return $str;         }         //总页数         function set_total_pages(){             $this->total_pages = ceil($this->total_records/$this->page_size);         }         //总记录数         function set_total_records(){             if ($this->total_records==0 or !isset($this->total_records)){                 if (empty($this->count_sql) and !empty($this->table["tablename"])){                     $sql = "SELECT count(".$this->table["id"].") as count_id FROM `".$this->table["tablename"]."` ".($this->table["where"]!=""?" WHERE ".$this->table["where"]:"");                 }else{                     $sql = preg_replace("/SELECT(.*?)FROM(.*?)/i", "SELECT count(id) AS count_id FROM\\2", $this->sql);                 }                 $arr = $this->db->row_query_one($sql);                 $this->total_records = $arr["count_id"];             }         }         /*          * 根据sql返回查询数据          * 指定$sql时,不必指定limit          */         function get_rows_by_sql($sql){             $this->sql = $sql." LIMIT ".$this->page_size*($this->page-1).", ".$this->page_size;    //指定的SQL;             return $this->db->row_query($this->sql);         }         /*          * 最常用的分页方法,只需要传3个参数          * $tablename 表名, $where 查询条件, $orderby 排序字段(默认以id倒序排列)          */         function get_rows($tablename, $where="", $orderby=""){             $this->table["tablename"]    = $tablename;             $this->table["where"]        = $where;             $orderby ? $this->table["orderby"] = $orderby : "";             $arr = array(                 "page"    => $this->show_page(),            //分页代码                 "rows"    => $this->get_rows_by_sql(),    //记录数                 "sum"    => $this->total_records,        //总记录数             );             return $arr;         }         /*          * 特殊查询,$sql_query 查询sql语句, $row_count 统计总数          */         function get_rows_sql($sql_query, $row_count=0) {             $this->total_records = $row_count;             $arr["rows"]    = $this->get_rows_by_sql($sql_query);             $arr["page"]    = $this->show_page();             $arr["sum"]        = $this->total_records;             return $arr;         }         function get_sql(){             if ($this->total_records>10000) {                 $this->sql = "SELECT ".$this->table["fileds"]." FROM `".$this->table["tablename"]."` ".($this->table["where"]!=""?" WHERE ".$this->table["where"].' AND '.$this->table["id"].'>=':' WHERE '.$this->table["id"].'>=').'(SELECT '.$this->table["id"].' FROM `'.$this->table["tablename"].'` ORDER BY '.$this->table["id"].' LIMIT '.$this->page_size*($this->page-1).', 1)'." ORDER BY ".$this->table["orderby"]." ".$this->table["descasc"]." LIMIT ".$this->page_size;             }else{                 $this->sql = "SELECT ".$this->table["fileds"]." FROM `".$this->table["tablename"]."` ".($this->table["where"]!=""?" WHERE ".$this->table["where"]:"")." ORDER BY ".$this->table["orderby"]." ".$this->table["descasc"]." LIMIT ".$this->page_size*($this->page-1).", ".$this->page_size;             }             //SELECT * FROM articles ORDER BY id DESC LIMIT 0, 20             //SELECT * FROM articles WHERE category_id = 123 AND id >= (SELECT id FROM articles ORDER BY id LIMIT 10000, 1) LIMIT 10             return $this->sql;        //SQL语句         }         function set_url(){             $arr_url = array();             parse_str($_SERVER["QUERY_STRING"], $arr_url);             unset($arr_url["page"]);             if (empty($arr_url)){                 $str = "page=";             }else{                 $str = http_build_query($arr_url)."&page=";             }             $this->url = "http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"]."?".$str;         }     } ?>
当表中的记录总数在 10000条以上时,使用了 子查询分页,这样效率会更高一些,数据量小的时候,直接查询更快。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部