在网页要显示出的内容,就是客户能看到的东西

 <!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-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head> <body>
<?php 个人总结:
封装类 DBDA.class.php
count(*) 统计方法 统计函数
StrQuery 统计函数,或者我只求出一个值来,这个关键字它同样会给我统计出所有函数 include("DBDA.class.php"); //引入另一个网页代码
$db = new DBDA(); //造一个对象 DBDA /*$sql = "select * from info";
var_dump($db->Query($sql)); //返回查询语句
*/ /*$sql = "select * from info";
var_dump($db->GuanQuery($sql)); //返回关联数组
*/ /*$sql = "select * from info";
var_dump($db->GuanQuery($sql)); //返回拼接的字符串
*/ $sql = "select password from login where username='zhangsan'"; echo $db->StrQuery($sql); //统计函数 //$sql = "update info set name='杨宁波' where code='p001'"; // //var_dump($db->Query($sql,0)); //一个字符串里面包含所有查到的数据
//n001^汉族|n002^回族|n003^维吾尔族| //共10页 当前第5页 5/10 首页 上一页 1 2 3 4 5 6 7 8 9 10 下一页 尾页 跳转到 【】 页
/*
0 -- <div>共10页</div>
1 -- <div>当前第5页</div>
2 -- <input type='button' value='上一页' />
3 -- <span>1</span><span>1</span><span>1</span>
4 -- <input type='button' value='下一页' />
5 -- 跳转<input type='text' /> 页 $html = array();
fpage(4,2);
*/ //下面是设置分页的引用和运行方法 上面的一些内容都得要注释掉!/* */ include("DBDA.class.php"); //引入另一个网页代码
$db = new DBDA(); //造一个对象 DBDA
include("page.class.php"); //引入page.class.php这个网页代码 $sz = "select count(*) from chinastates"; //求总条数
$zts = $db->StrQuery($sz); //造分页类对象 每页显示20条数据
$page = new Page($zts,20); /*
81 include("page.class.php");
82 $page = new Page(数据总条数,每页显示几条);
83 */ $sql = "select * from chinastates ".$page->limit; //讲这两个关键字拼接在后面就能实现分页!! $attr = $db->Query($sql); //<table></table>输出表单型,
echo "<table width='100%' border='1' cellpadding='0' cellspacing='0'>"; foreach($attr as $v) //循环输出每一行
{
echo "<tr><td>{$v[0]}</td><td>{$v[1]}</td><td>{$v[2]}</td></tr>";
} echo "</table>"; //输出表单型 echo $page->fpage(); // page方法里面有个fpage将它输出。 //基本上就是显示出下面这样:
//共100条记录 本页10条 本页从 25—35 条 首页 上一页 1 2 3 4 5 6 7 8 9 10 下一页 末页 跳转到【】(页)GO
?>
</body>
</html>

封装类, 纯处理页面,客户是看不到的,在后台运行的

 <?php
//个人总结
reslut 意思:结果
字符长度关键字 strlen
截取字符串关键字 substr class DBDA //PHP链接MySQL先定义一个类
{
//分装下面这四个类名字可以随便取
public $host="localhost"; //pudlic 公众的,给IP地址一个接受的名 $host
public $uid="root"; //mysql软件名,给软件名一个接受的名 $uid
public $pwd="123"; //mysql软件密码,给密码一个接受的名 $pwd
public $dbname="mydb"; //要连的数据库名 /**
*给一个sql语句,返回执行的结果
*@param string $sql 用户指定的sql语句
*@param int $type 用户给的语句类型,0代表增删改,1代表查询
*@return 返回查询的结果,如果是查询返回二维数组,如果是增删改返回true或false
*/
//$type 代表是给的SQL语句是什么类型的数据
//一般网站上查询用的比较多,就给$type一个默认值 1
function Query($sql,$type=1) //上面有注释详解 要养成这个习惯“写注释”
{
//造连接对象
$db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname); //执行sql语句
$reslut = $db->query($sql); //从结果集对象里面取数据
if($type==1)
{
return $reslut->fetch_all(); //reslut调用fetch_all直接返回数组
}
else //如果
{
return $reslut; //上面有注释
}
} /**
*给一个sql语句,返回关联的二维数组
*@param string $sql 用户指定的sql语句
*@param int $type 用户给的语句类型,0代表增删改,1代表查询
*@return 返回查询的结果,如果是查询返回二维数组,如果是增删改返回true或false
*/
function GuanQuery($sql,$type=1)
{
//造连接对象
$db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname); //执行sql语句
$reslut = $db->query($sql); //取数据
if($type==1) //先判断type是不是等于一
{
$attr = array(); //给一个空的数组
while($a = $reslut->fetch_assoc()) //用while循环把所有的数据都取一遍。 $reslut->fetch_assoc()这句是取当前的数组,给a来接收一下
{
$attr[] = $a; //给把$a接收的值交个 $attr[] 它就存了一个关联数组了
} return $attr; //把attr输出 ,就返回了一个关联数组
}
else
{
return $reslut; //如果其他数据就输出 取当前的数组
}
}
/**
*给一个sql语句,返回字符串
*@param string $sql 用户指定的sql语句
*@param int $type 用户给的语句类型,0代表增删改,1代表查询
*@return 返回查询的结果,如果是查询返回字符串,如果是增删改返回true或false
*/
function StrQuery($sql,$type=1)
{
//造连接对象
$db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname); //执行sql语句
$reslut = $db->query($sql); //取数据
if($type==1) //先判断type是不是等于一
{
$attr = $reslut->fetch_all(); //取到所有数据,取到的是二维数组,需转换成字符串
$str=""; //让str默认为空 循环里面的$str. 让它加一 php里面的加法用 . 来代表
foreach($attr as $v) //先取出一维数组
{
$str .= implode("^",$v); //用implode关键字将$v取出的一维数组和"^"特殊符号拼接起来。 因为"^"符号在php里基本用不上,所以用它。
$str .="&nbsp;|&nbsp;"; //每一次循环结束之前加上一个分隔符
}
return substr($str,0,strlen($str)-1); //截取字符串关键字 substr $ste收到的值从零开始,字符长度关键字 strlen 讲$st取到的值再最后减一,最后那个多出来的分割符就去掉了!!
}
else
{
return $reslut;
}
}
}

纯处理页面    这个页面是别人设计好的,引用一下,此内容是显示分页的。  分页的设置

  1 <?php
2 /**
3 file: page.class.php
4 完美分页类 Page
5 */
6 class Page {
7 private $total; //数据表中总记录数
8 private $listRows; //每页显示行数
9 private $limit; //SQL语句使用limit从句,限制获取记录个数
10 private $uri; //自动获取url的请求地址
11 private $pageNum; //总页数
12 private $page; //当前页
13 private $config = array(
14 'head' => "条记录",
15 'prev' => "上一页",
16 'next' => "下一页",
17 'first'=> "首页",
18 'last' => "末页"
19 );
20 //在分页信息中显示内容,可以自己通过set()方法设置
21 private $listNum = 10; //默认分页列表显示的个数
22
23 /**
24 构造方法,可以设置分页类的属性
25 @param int $total 计算分页的总记录数
26 @param int $listRows 可选的,设置每页需要显示的记录数,默认为25条
27 @param mixed $query 可选的,为向目标页面传递参数,可以是数组,也可以是查询字符串格式
28 @param bool $ord 可选的,默认值为true, 页面从第一页开始显示,false则为最后一页
29 */
30 public function __construct($total, $listRows=25, $query="", $ord=true){
31 $this->total = $total;
32 $this->listRows = $listRows;
33 $this->uri = $this->getUri($query);
34 $this->pageNum = ceil($this->total / $this->listRows);
35 /*以下判断用来设置当前面*/
36 if(!empty($_GET["page"])) {
37 $page = $_GET["page"];
38 }else{
39 if($ord)
40 $page = 1;
41 else
42 $page = $this->pageNum;
43 }
44
45 if($total > 0) {
46 if(preg_match('/\D/', $page) ){
47 $this->page = 1;
48 }else{
49 $this->page = $page;
50 }
51 }else{
52 $this->page = 0;
53 }
54
55 $this->limit = "LIMIT ".$this->setLimit();
56 }
57
58 /**
59 用于设置显示分页的信息,可以进行连贯操作
60 @param string $param 是成员属性数组config的下标
61 @param string $value 用于设置config下标对应的元素值
62 @return object 返回本对象自己$this, 用于连惯操作
63 */
64 function set($param, $value){
65 if(array_key_exists($param, $this->config)){
66 $this->config[$param] = $value;
67 }
68 return $this;
69 }
70
71 /* 不是直接去调用,通过该方法,可以使用在对象外部直接获取私有成员属性limit和page的值 */
72 function __get($args){
73 if($args == "limit" || $args == "page")
74 return $this->$args;
75 else
76 return null;
77 }
78
79 /**
80 按指定的格式输出分页
81 @param int 0-7的数字分别作为参数,用于自定义输出分页结构和调整结构的顺序,默认输出全部结构
82 @return string 分页信息内容
83 */
84 function fpage(){
85 $arr = func_get_args();
86
87 $html[0] = "<span class='p1'>&nbsp;共<b> {$this->total} </b>{$this->config["head"]}&nbsp;</span>";
88 $html[1] = "&nbsp;本页 <b>".$this->disnum()."</b> 条&nbsp;";
89 $html[2] = "&nbsp;本页从 <b>{$this->start()}-{$this->end()}</b> 条&nbsp;";
90 $html[3] = "&nbsp;<b>{$this->page}/{$this->pageNum}</b>页&nbsp;";
91 $html[4] = $this->firstprev();
92 $html[5] = $this->pageList();
93 $html[6] = $this->nextlast();
94 $html[7] = $this->goPage();
95
96 $fpage = '<div style="font:12px \'\5B8B\4F53\',san-serif;">';
97 if(count($arr) < 1)
98 $arr = array(0, 1,2,3,4,5,6,7);
99
100 for($i = 0; $i < count($arr); $i++)
101 $fpage .= $html[$arr[$i]];
102
103 $fpage .= '</div>';
104 return $fpage;
105 }
106
107 /* 在对象内部使用的私有方法,*/
108 private function setLimit(){
109 if($this->page > 0)
110 return ($this->page-1)*$this->listRows.", {$this->listRows}";
111 else
112 return 0;
113 }
114
115 /* 在对象内部使用的私有方法,用于自动获取访问的当前URL */
116 private function getUri($query){
117 $request_uri = $_SERVER["REQUEST_URI"];
118 $url = strstr($request_uri,'?') ? $request_uri : $request_uri.'?';
119
120 if(is_array($query))
121 $url .= http_build_query($query);
122 else if($query != "")
123 $url .= "&".trim($query, "?&");
124
125 $arr = parse_url($url);
126
127 if(isset($arr["query"])){
128 parse_str($arr["query"], $arrs);
129 unset($arrs["page"]);
130 $url = $arr["path"].'?'.http_build_query($arrs);
131 }
132
133 if(strstr($url, '?')) {
134 if(substr($url, -1)!='?')
135 $url = $url.'&';
136 }else{
137 $url = $url.'?';
138 }
139
140 return $url;
141 }
142
143 /* 在对象内部使用的私有方法,用于获取当前页开始的记录数 */
144 private function start(){
145 if($this->total == 0)
146 return 0;
147 else
148 return ($this->page-1) * $this->listRows+1;
149 }
150
151 /* 在对象内部使用的私有方法,用于获取当前页结束的记录数 */
152 private function end(){
153 return min($this->page * $this->listRows, $this->total);
154 }
155
156 /* 在对象内部使用的私有方法,用于获取上一页和首页的操作信息 */
157 private function firstprev(){
158 if($this->page > 1) {
159 $str = "&nbsp;<a href='{$this->uri}page=1'>{$this->config["first"]}</a>&nbsp;";
160 $str .= "<a href='{$this->uri}page=".($this->page-1)."'>{$this->config["prev"]}</a>&nbsp;";
161 return $str;
162 }
163
164 }
165
166 /* 在对象内部使用的私有方法,用于获取页数列表信息 */
167 private function pageList(){
168 $linkPage = "&nbsp;<b>";
169
170 $inum = floor($this->listNum/2);
171 /*当前页前面的列表 */
172 for($i = $inum; $i >= 1; $i--){
173 $page = $this->page-$i;
174
175 if($page >= 1)
176 $linkPage .= "<a href='{$this->uri}page={$page}'>{$page}</a>&nbsp;";
177 }
178 /*当前页的信息 */
179 if($this->pageNum > 1)
180 $linkPage .= "<span style='padding:1px 2px;background:#BBB;color:white'>{$this->page}</span>&nbsp;";
181
182 /*当前页后面的列表 */
183 for($i=1; $i <= $inum; $i++){
184 $page = $this->page+$i;
185 if($page <= $this->pageNum)
186 $linkPage .= "<a href='{$this->uri}page={$page}'>{$page}</a>&nbsp;";
187 else
188 break;
189 }
190 $linkPage .= '</b>';
191 return $linkPage;
192 }
193
194 /* 在对象内部使用的私有方法,获取下一页和尾页的操作信息 */
195 private function nextlast(){
196 if($this->page != $this->pageNum) {
197 $str = "&nbsp;<a href='{$this->uri}page=".($this->page+1)."'>{$this->config["next"]}</a>&nbsp;";
198 $str .= "&nbsp;<a href='{$this->uri}page=".($this->pageNum)."'>{$this->config["last"]}</a>&nbsp;";
199 return $str;
200 }
201 }
202
203 /* 在对象内部使用的私有方法,用于显示和处理表单跳转页面 */
204 private function goPage(){
205 if($this->pageNum > 1) {
206 return '&nbsp;<input style="width:20px;height:17px !important;height:18px;border:1px solid #CCCCCC;" type="text" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'page=\'+page+\'\'}" value="'.$this->page.'"><input style="cursor:pointer;width:25px;height:18px;border:1px solid #CCCCCC;" type="button" value="GO" onclick="javascript:var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'page=\'+page+\'\'">&nbsp;';
207 }
208 }
209
210 /* 在对象内部使用的私有方法,用于获取本页显示的记录条数 */
211 private function disnum(){
212 if($this->total > 0){
213 return $this->end()-$this->start()+1;
214 }else{
215 return 0;
216 }
217 }
218 }
219
220
221
222

PHP封装类 【 设置分页 】 !!! 可以直接引用 !!! 都有自己理解的注释,挺详细的,有搜到的朋友可以能帮到你们 【 新手一看练两遍就懂 】的更多相关文章

  1. PHP 设置分页 可以直接引用 最下面有自己引用的方法和注释

    1 <?php 2 /** 3 file: page.class.php 4 完美分页类 Page 5 */ 6 class Page { 7 private $total; //数据表中总记录 ...

  2. 以太网,IP,TCP,UDP数据包分析(此文言简意赅,一遍看不懂的话,耐心的看个10遍就懂了,感谢作者无私奉献)

    1.ISO开放系统有以下几层: 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 2.TCP/IP 网络协议栈分为应用层(Application).传输层(Tra ...

  3. NPOI导出EXCEL 打印设置分页及打印标题

    在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方法,但一直都没有起到作用.经过研究是要设置  sheet1.FitToPage = false; 而 ...

  4. [转]NPOI导出EXCEL 打印设置分页及打印标题

    本文转自:http://www.cnblogs.com/Gyoung/p/4483475.html 在用NPOI导出EXCEL的时候设置分页,在网上有查到用sheet1.SetRowBreak(i)方 ...

  5. php+Mysql分页 类和引用详解

    一下内容为专用于分页的类以及具体的方法和解析.<?php class Page { private $total; //数据表中总记录数 private $listRows; //每页显示行数 ...

  6. SpringBoot基础学习(三) 自定义配置、随机数设置及参数间引用

    自定义配置 SpringBoot免除了项目中大部分手动配置,可以说,几乎所有的配置都可以写在全局配置文件application.peroperties中,SpringBoot会自动加载全局配置文件从而 ...

  7. CentOS 6.5静态IP的设置(NAT和桥接都适用)

    CentOS 6.5静态IP的设置(NAT和桥接都适用) 为了方便,用Xshell来.并将IP设置为静态的.因为,在CentOS里,若不对其IP进行静态设置的话,则每次开机,其IP都是动态变化的,这样 ...

  8. 分页。php 引用代码

    <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 private $lis ...

  9. 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Application Data 中的媒体

    [源码下载] 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Ap ...

随机推荐

  1. MySql之修改操作与进阶

    一:更新特定行 UPDATE tableName SET 列名 = 值,列名 = 值... WHERE 条件; 二:使用子查询更新数据 UPDATE tableName SET 列名 = SELECT ...

  2. UAC 实现原理及绕过方法-打洞专用

    首页 新随笔 订阅 管理 随笔 - 7  文章 - 0  评论 - 0 UAC 实现原理及绕过方法   目录 0x01 UAC 实现方法(用户登陆过程)0x02 UAC 架构0x03 触发UAC0x0 ...

  3. phpbbchina恢复上线

    上个月已经把ICP备案重新办过了, 但是一直在忙着应付工作上的事. 从上周末开始经过数天的努力, 将 phpbbchina 恢复上线了. 时间一晃, 正好十年. 目前能找到的最新的数据是2008-10 ...

  4. tmux手册中文翻译

    man tmux可以看到最详细的tmux介绍,本文翻译自tmux手册. tmux全名叫"terminal multiplexer",终端多路复用器. tmux的命令格式为: tmu ...

  5. mysql数据库分区功能及实例详解

    分区听起来怎么感觉是硬盘呀,对没错除了硬盘可以分区数据库现在也支持分区了,分区可以解决大数据量的处理问题,下面一起来看一个mysql数据库分区功能及实例详解   一,什么是数据库分区 前段时间写过一篇 ...

  6. ceph 底层代码分享

    一.底层工作队列 二.对象操作 三.上下文(Context)代码分析:

  7. [Aaronyang] 写给自己的WPF4.5 笔记7[三巴掌-ItemsControl数据绑定详解与binding二次处理 3/3]

    我要做回自己--Aaronyang的博客(www.ayjs.net) 博客摘要: 全方位的讲解了转换器的使用,单值,多值转换器,条件转换器,StringFormat等方式 详细的实践地讲解了Items ...

  8. 使用Docker-Docker for Web Developers(2)

    1. 使用镜像 1.1 在Docker Hub上查找镜像 我们查找一下之前博客里面,推送到Docker Hub里面的bage88/docker-demo,能看到有2个仓库,第一个就是我们上次上传的镜像 ...

  9. iOS开发:一个无限滚动自动播放图片的Demo(Swift语言编码)

    很久以前就想写这么一个无限滚动的Demo了,最近学习了下Swift,手中没有可以用来练手的Demo,所以才将它实现了. Github地址(由于使用了UIView+AutoLayout第三方进行布局,所 ...

  10. Go Revel - Cache(缓存)

    revel在服务器端提供了`cache`库用以低延迟的存储临时数据.它缓存那些需要经常访问数据库但是变化不频繁的数据,也可以实现用户会话的存储. ##有效期 一下三种方法为缓存元素设置过期时间: 1. ...