新闻列表的显示,分页html
转自互联网~
Pager.php
1 <?php 2 function page($page, $total, $phpfile, $pagesize=3, $pagelen=3) { 3 $pagecode = ''; //定义变量,存放分页生成的HTML 4 $page = intval($page); //避免非数字页码 5 $total = intval($total); //保证总记录数值类型正确 6 if (!$total) 7 return array(); //总记录数为零返回空数组 8 $pages = ceil($total / $pagesize); //计算总分页 9 //处理页码合法性 10 if ($page < 1) 11 $page = 1; 12 if ($page > $pages) 13 $page = $pages; 14 ////计算查询偏移量 15 $offset = $pagesize * ($page - 1); 16 //页码范围计算 17 $init = 1; //起始页码数 18 $max = $pages; //结束页码数 19 $pagelen = ($pagelen % 2) ? $pagelen : $pagelen + 1; //页码个数 20 $pageoffset = ($pagelen - 1) / 2; //页码个数左右偏移量 21 //生成html 22 $pagecode = '<div class="page">'; 23 $pagecode.="<span>第{$page}页/共{$pages}页</span>"; //第几页,共几页 24 //如果是第一页,则不显示第一页和上一页的连接 25 if ($page != 1) { 26 $pagecode.='<a href="' . $phpfile . '?page=1/">首页</a>'; //第一页 27 $pagecode.='<a href="' . $phpfile . '?page=' . ($page - 1) . '>上一页</a>'; //上一页 28 } 29 //分页数大于页码个数时可以偏移 30 if ($pages > $pagelen) { 31 //如果当前页小于等于左偏移 32 if ($page <= $pageoffset) { 33 $init = 1; 34 $max = $pagelen; 35 } else {//如果当前页大于左偏移 36 //如果当前页码右偏移超出最大分页数 37 if ($page + $pageoffset >= $pages + 1) { 38 $init = $pages - $pagelen + 1; 39 } else { 40 //左右偏移都存在时的计算 41 $init = $page - $pageoffset; 42 $max = $page + $pageoffset; 43 } 44 } 45 } 46 //生成html 47 for ($i = $init; $i <= $max; $i++) { 48 if ($i == $page) { 49 $pagecode.='<span> ' . $i . ' </span>'; 50 } else { 51 $pagecode.='<a href="' . $phpfile . '?page=' . $i . '/">' . $i . '</a>'; 52 } 53 } 54 if ($page != $pages) { 55 $pagecode.='<a href="' . $phpfile . '?page=' . ($page + 1) . '">下一页</a> '; //下一页 56 $pagecode.='<a href="' . $phpfile . '?page=' . $pages . '">尾页</a>'; //最后一页 57 } 58 echo '<form name=/"selform/">'; 59 $pagecode.='<select name=/"page/" onchange=/"document.selform.submit()/">'; 60 for ($i = 1; $i <= $pages; $i++) { 61 if ($i == $page) { 62 $pagecode .= "<option selected>" . $i . "</option>"; 63 } else { 64 $pagecode .= "<option>" . $i . "</option>"; 65 } 66 } 67 $pagecode.="</select></form>"; 68 /* End*************我添加的部分**** */ 69 $pagecode.='</div>'; 70 return array('pagecode' => $pagecode, 'sqllimit' => ' limit ' . $offset . ',' . $pagesize); 71 } 72 73 ?>
news_all.php
1 <?php 2 header("content-type:text/html; charset=utf-8"); 3 include "Pager.php"; 4 $phpfile = 'news_all.php'; //页面文件名 5 $page = isset($_GET['page']) ? $_GET['page'] : 1; //默认页码 6 include 'conn.php'; 7 mysql_query("set names utf8"); 8 $counts = mysql_num_rows(mysql_query('select * from news')); //获取需要的数据总条数 9 $sql = 'select * from news'; //定义查询语句SQL 10 $getpageinfo = page($page, $counts, $phpfile); //调用函数,生成分页HTML 和 SQL LIMIT 子句 11 $sql.=$getpageinfo['sqllimit']; //组合完整的SQL语句 12 $data = $row = array(); //初始化数组 13 $result = mysql_query($sql); //获取结果集 14 //将数据装入$data数组 15 echo "<table border='1'>"; 16 while ($row = mysql_fetch_array($result)) { 17 echo "<tr>"; 18 // echo "<td>".$row['n_date']."</td>"; 19 echo "<td>" . $row['n_title'] . "</td>"; 20 echo "</tr>"; 21 } 22 echo "</table>"; 23 ?> 24 <?php 25 26 echo $getpageinfo['pagecode']; //显示分页的html代码 27 ?>