/* * ********************************************* * @类名: page * @参数: $myde_total - 总记录数 * $myde_size - 一页显示的记录数 * $myde_page - 当前页 * $myde_url - 获取当前的url * @功能: 分页实现 */ class page { private $myde_total; //总记录数 private $myde_size; //一页显示的记录数 private $myde_page; //当前页 private $myde_page_count; //总页数 private $myde_i; //起头页数 private $myde_en; //结尾页数 private $myde_url; //获取当前的url /* * $show_pages * 页面显示的格式,显示链接的页数为2*$show_pages+1。 * 如$show_pages=2那么页面上显示就是[首页] [上页] 1 2 3 4 5 [下页] [尾页] */ private $show_pages; public function __construct($myde_total = 1, $myde_size = 1, $myde_page = 1, $myde_url, $show_pages = 2) { $this->myde_total = $this->numeric($myde_total); $this->myde_size = $this->numeric($myde_size); $this->myde_page = $this->numeric($myde_page); $this->myde_page_count = ceil($this->myde_total / $this->myde_size); $this->myde_url = $myde_url; if ($this->myde_total $this->myde_total = 0; if ($this->myde_page $this->myde_page = 1; if ($this->myde_page_count $this->myde_page_count = 1; if ($this->myde_page > $this->myde_page_count) $this->myde_page = $this->myde_page_count; $this->limit = ($this->myde_page - 1) * $this->myde_size; $this->myde_i = $this->myde_page - $show_pages; $this->myde_en = $this->myde_page + $show_pages; if ($this->myde_i $this->myde_en = $this->myde_en + (1 - $this->myde_i); $this->myde_i = 1; } if ($this->myde_en > $this->myde_page_count) { $this->myde_i = $this->myde_i - ($this->myde_en - $this->myde_page_count); $this->myde_en = $this->myde_page_count; } if ($this->myde_i $this->myde_i = 1; } //检测是否为数字 private function numeric($num) { if (strlen($num)) { if (!preg_match("/^[0-9]+$/", $num)) { $num = 1; } else { $num = substr($num, 0, 11); } } else { $num = 1; } return $num; } //地址替换 private function page_replace($page) { return str_replace("{page}", $page, $this->myde_url); } //首页 private function myde_home() { if ($this->myde_page != 1) { return "首页 "; } else { return "首页
"; } } //上一页 private function myde_prev() { if ($this->myde_page != 1) { return "上一页 "; } else { return "上一页
"; } } //下一页 private function myde_next() { if ($this->myde_page != $this->myde_page_count) { return "下一页 "; } else { return"下一页
"; } } //尾页 private function myde_last() { if ($this->myde_page != $this->myde_page_count) { return "尾页 "; } else { return "尾页
"; } } //输出 public function myde_write($id = 'page') { $str = "";
$str.=$this->myde_home();
$str.=$this->myde_prev();
if ($this->myde_i > 1) {
$str.="
...
";
}
for ($i = $this->myde_i; $i myde_en; $i++) {
if ($i == $this->myde_page) {
$str.="
$i ";
} else {
$str.="
$i ";
}
}
if ($this->myde_en myde_page_count) {
$str.="
...
";
}
$str.=$this->myde_next();
$str.=$this->myde_last();
$str.="
共" . $this->myde_page_count . " 页" . $this->myde_total . " 条数据
";
$str.="
"; return $str; } } ?>
include_once("config.php"); require_once('page.class.php'); //分页类 $showrow = 3; //一页显示的行数 $curpage = empty($_GET['page']) ? 1 : $_GET['page']; //当前的页,还应该处理非数字的情况 $url = "?page={page}"; //分页地址,如果有检索条件 ="?page={page}&q=".$_GET['q'] //省略了链接mysql的代码,测试时自行添加 $sql = "SELECT id,content,lastdate FROM message"; $total = mysql_num_rows(mysql_query($sql)); //记录总条数 if (!empty($_GET['page']) && $total != 0 && $curpage > ceil($total / $showrow)) $curpage = ceil($total_rows / $showrow); //当前页数大于最后页数,取最后一页 //获取数据 $sql .= " LIMIT " . ($curpage - 1) * $showrow . ",$showrow;"; $query = mysql_query($sql); ?>
演示:PHP简单漂亮的分页类
if ($total > $showrow) {//总记录数大于每页显示数,显示分页 $page = new page($total, $showrow, $curpage, $url, 2); echo $page->myde_write(); } ?>
$host="localhost"; $db_user="root"; $db_pass=""; $db_name="test"; $timez/Shanghai"; $link=mysql_connect($host,$db_user,$db_pass); mysql_select_db($db_name,$link); mysql_query("SET names UTF8"); header("Content-Type: text/html; charset=utf-8"); ?>
以上就介绍了PHP通用分页组件,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。