1 <?php 2 /** 3 * PHP+Mysql实现分页 4 * **/ 5 ?> 6 <html> 7 <head> 8 <meta http-equiv="Content-type" content="text/html;charset=utf-8"> 9 </head> 10 11 <style> 12 /* <!-- 设置body体内的字体样式与大小--> */ 13 body{ 14 font-size:12px;FONT-FAMILY:verdana;100%; 15 } 16 /* <!-- 样式设计 page的div居中 --> */ 17 div.page{ 18 text-align:center; 19 } 20 /* <!-- 设置page的div下的a标签 --> */ 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 /* <!-- page的div中的form里的内容放在一行 --> */ 34 div.page form{ 35 display:inline; 36 } 37 /* <!-- 设置content块的高度 使内容与页码分离 --> */ 38 div.content{ 39 height:300px; 40 } 41 </style> 42 43 <body> 44 <?php 45 /* echo "<pre>"; 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 "<div class='content'>"; 75 echo "<table border = 1 cellspacing = 0 width = 40% align=center>"; 76 echo "<tr><td>ID</td><td>NAME</td></tr>"; 77 //通过循环将从数据库中的数据输出 78 while($row = mysql_fetch_assoc($result)){ 79 echo "<tr>"; 80 echo "<td>{$row['id']}</td>"; 81 echo "<td>{$row['name']}</td>"; 82 echo "</tr>"; 83 } 84 echo "</table>"; 85 echo "</div>"; 86 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 = "<div class='page'>"; 100 //计算偏移量 101 $pageOffset = ($showPage - 1)/2; //根据显示页码数计算偏移量 102 103 //如果在第一页则隐藏首页与上一页 104 if($page > 1){ 105 $page_banner .= "<a href='".$_SERVER['PHP_SELF']."?p=1'>首页</a>"; 106 $page_banner .= "<a href='".$_SERVER['PHP_SELF']."?p=".($page-1)."'><上一页</a>"; 107 }else{ 108 $page_banner .= "<span class='disable'>首页</a></span>"; 109 $page_banner .= "<span class='disable'><上一页</a></span>"; 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 .= "<span class='current'>{$i}</span>"; 141 }else{ 142 $page_banner .= "<a href='".$_SERVER['PHP_SELF']."?p=".$i."'>{$i}</a>"; 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 .= "<a href='".$_SERVER['PHP_SELF']."?p=".($page+1)."'>下一页></a>"; 153 $page_banner .= "<a href='".$_SERVER['PHP_SELF']."?p=".($total_pages)."'>尾页</a>"; 154 }else{ 155 $page_banner .= "<span class='disable'>下一页></a></span>"; 156 $page_banner .= "<span class='disable'>尾页</a></span>"; 157 } 158 159 //跳转页码的实现 160 $page_banner .= "共{$total_pages}页,"; 161 $page_banner .= "<form action='mypage.php' method='get'>"; 162 $page_banner .= "到<input type='text' size='2' name='p'>页"; 163 $page_banner .= "<input type='submit' value='确定'>"; 164 $page_banner .= "</form></div>"; 165 166 //将分页条输出 167 echo $page_banner; 168 169 170 171 172 173 174 175 176 177 178 179 ?> 180 </body> 181 </html>