1 <?php2 /**3 * PHP+Mysql实现分页4 * **/
5 ?>
6
7
8
9
10
11
12 /**/
13 body{14 font-size:12px;FONT-FAMILY:verdana;width:100%;15 }16 /**/
17 div.page{18 text-align:center;19 }20 /**/
21 div.page a{22 border :#aaaadd 1px solid;text-decoration:none;padding:2px 5px 2px 5px;margin:2px;
23 }24 /**/
25 div.page span.current{26 border:#000099 1px solid;background-color:#000099;padding:4px 6px 4px 6px;margin:2px;color:#fff;
27 font-weight:bold;28 }29 /**/
30 div.page span.disable{31 border:#eee 1px solid;padding:2px 5px 2px 5px;margin:2px;color:#ddd;
32 }33 /**/
34 div.page form{35 display:inline;36 }37 /**/
38 div.content{39 height:300px;40 }41
42
43
44 <?php45 /*echo "
";46 print_r($_SERVER);*/
47 /**1、传入页码**/
48 $page = $_GET['p'];//用GET方法得到页码
49 /**2、根据页码取出数据:php->mysql的处理**/
50 //配置项
51 $host = "localhost"; //数据库地址
52 $username = "root"; //登录用户名
53 $password = ""; //密码
54 $db = "test"; //所用数据库
55 $pageSize = 10; //每一页的内容数量
56 $showPage = 5; //能直接显示的页码数量57 //连接数据库
58 $conn = mysql_connect($host,$username,$password);59 if(!$conn){60 echo "数据库连接失败";61 }62 //选择数据库
63 mysql_select_db($db);64 //设置编码格式
65 mysql_query("SET NAMES UTF8");66 //编写sql获取分页数据select *from 表名 limit 起始位置,显示条数
67 $sql = "SELECT * FROM page LIMIT ".(($page - 1) * $pageSize).", $pageSize";68
69 //执行sql语句后得到资源句柄
70 $result = mysql_query($sql);71 //var_dump($result);72
73 //为一个div块,放置网页内容
74 echo "
ID | NAME |
78 while($row = mysql_fetch_assoc($result)){79 echo "
";80 echo "{$row['id']}";81 echo "{$row['name']}";82 echo "";83 }84 echo "";85 echo "87 //释放结果,关闭连接
88 mysql_free_result($result);89 //获取数据总数
90 $total_sql = "SELECT COUNT(*) FROM page";91 $total_result = mysql_fetch_array(mysql_query($total_sql));92 $total = $total_result[0];93 //计算出总的页码数
94 $total_pages = ceil($total/$pageSize);95
96 mysql_close($conn);97 /**3、显示数据 + 分页条 **/
98 //初始化分页条,并放入div块中
99 $page_banner = "
101 $pageOffset = ($showPage - 1)/2; //根据显示页码数计算偏移量102
103 //如果在第一页则隐藏首页与上一页
104 if($page > 1){105 $page_banner .= "首页";106 $page_banner .= "";107 }else{108 $page_banner .= "首页";109 $page_banner .= "";110 }111
112 //初始化数据
113 $start = 1; //能够直接选定的页码的首位
114 $end = $total_pages; //能够直接选定的页码的末位115 //如果总页数大于显示的页数,进行隐藏,分两种情况
116 if($total_pages > $showPage) {117 //头部省略
118 if($page > $pageOffset + 1){119 $page_banner .= "...";120 }121
122 //分别讨论首末位页码的大小
123 if($page > $pageOffset){124 $start = $page - $pageOffset;125 //末尾页码需要分情况讨论
126 $end = $page + $pageOffset < $total_pages ? $page + $pageOffset : $total_pages;127 }else{128 $start = 1;129 $end = $total_pages > $showPage ? $showPage : $total_pages;130 }131 //当前页加上偏移量大于总页码的情况
132 if($page + $pageOffset > $total_pages){133 $start = $start - ($page + $pageOffset - $end);134 }135 }136
137 //显示页码连接
138 for($i = $start;$i <= $end;$i ++){139 if($page == $i){140 $page_banner .= "{$i}";141 }else{142 $page_banner .= "{$i}";143 }144 }145
146 //尾部省略
147 if($total_pages > $showPage && $page + $pageOffset < $total_pages){148 $page_banner .= "...";149 }150 //如果在最后一页则隐藏尾页与下一页
151 if($page < $total_pages){152 $page_banner .= "下一页>";153 $page_banner .= "尾页";154 }else{155 $page_banner .= "下一页>";156 $page_banner .= "尾页";157 }158
159 //跳转页码的实现
160 $page_banner .= "共{$total_pages}页,";161 $page_banner .= "
";162 $page_banner .= "到页";163 $page_banner .= "";164 $page_banner .= "166 //将分页条输出
167 echo $page_banner;168
169
170
171
172
173
174
175
176
177
178
179 ?>
180
181