Conn.php<?php
header("Content-Type:text/html;charset=utf-8"); 
$conn  = "";
$mysql_localhost = "localhost";
$mysql_user    = "root";
$mysql_pws       = "sa";
$mysql_data  = "page";
/**
* 连接数据库
*/
 function OpenDatabase()
 {
global $mysql_localhost,$mysql_user,$mysql_pws,$mysql_data; //设置全局变量,但退出函数后值无效
$conn = @mysql_connect($mysql_localhost,$mysql_user,$mysql_pws) or die("提示:数据库连接失败!");
$GLOBALS["conn"] = $conn;  //全局变量值,退出函数后值有效
mysql_query("set names 'utf-8'");  //设置编码
$db_selected = mysql_select_db($mysql_data,$conn);
 }
 /**
  * 关闭数据库
  */
  function CloseDatabase()
  {
   mysql_close($GLOBALS["conn"]);
  }
?>
Page.php
<?php
header("Content-Type:text/html;charset=utf-8");
include("Conn.php");
OpenDatabase(); //打开数据库
//-------调用分页函数-------
$pagenav = _page_list("test",3);
//------------------------
echo $pagenav;  //打印出分页返回的字符串
//------------------------显示列表-------------------
$sql = "SELECT * from test limit $firstcount,$pagesize";
$result = mysql_query($sql,$conn); //查询语句
while($row = mysql_fetch_array($result,MYSQL_NUM))
{
 echo "<hr>".$row[0]." | ".$row[1]." | ".$row[2];
}
echo "<hr>";
mysql_free_result($result); //释放内存空间
//----------------------------------------------------
echo $pagenav;  //打印出分页返回的字符串
//================================================================================
/**
 * 函数名:_page_list
 * 参数:$table       ---- 所要查询的表名
 *      $page_size  ---- 每页的记录数,默认一页显示20条
 * 作用:分布显示所有记录
 * 使用方法:$pagenav = _page_list("test");
 *          然后在要显示分页字符的地方打印出$pagenav
 */
function _page_list($table,$page_size=20)
{
 global $firstcount,$pagenav,$page,$conn,$pagesize;
 $page = $_GET[page];
 $url = _get_url(); $pagesize = $page_size;
 $result = mysql_query("select * from $table",$conn);
 $total = mysql_num_rows($result);  //总记录数
 mysql_free_result($result);  //释放内存空间
 $lastpg = ceil($total / $pagesize); //最后一页,即总页数 $page = min($lastpg,$page); //返回其中最小的数
 $prepg = ($page > 1)?$page-1:$page; //上一页
 $nextpg = ($page < $lastpg)?$page+1:$page; //下一页 $firstcount = ($page-1)*$pagesize; //每页第一条记录的指针,默认从0开始
 if($firstcount <= 0) $firstcount = 0; $pagenav = "共 ".$lastpg." 页 ";
 $pagenav .= "<a href='$url=1'>首页</a>";
 if($page <= 1)
 {
  $pagenav .= " 上页";
 }
 else
 {
  $pagenav .= " <a href='$url=$prepg'>上页</a>";
 } if($page >= $lastpg)
 {
  $pagenav .= " 下页";
 }
 else
 {
  $pagenav .= " <a href='$url=$nextpg'>下页</a>";
 }
 $pagenav .= " <a href='$url=$lastpg'>尾页</a>";
 $pagenav .= " 当前第 ".$page." 页";
 $pagenav .= "<br>";
 return $pagenav;
}/**
 *函数名:_get_url
 *作用:返回页面完整的URL值,即从根目录起,不包含URL最后面的#fragment
 */
function _get_url()
{
 global $page;
 $url = $_SERVER["REQUEST_URI"];  //获取URL地址
 $url_path = parse_url($url,PHP_URL_PATH); //获取文件路径
 $url_query = parse_url($url,PHP_URL_QUERY); //获取URL中?号后面的信息,相当于查询字符串
 echo $url;
 echo "<hr>";
 echo $url_path;
 echo "<hr>";
 echo $url_query;
 echo "<hr>";
 if($page) //点击分页后
 {
  $url_query = ereg_replace("page=$page", "page", $url_query); //用空格替换掉&page=页数 或 page=页数
 }
 else //默认打开页面时
 {
  $url_query = "page";
  $page = 1; //默认是第一页
 }
 $url = $url_path;
 if($url_query)
 {
  $url .= "?".$url_query;
 }
 return $url;
}
CloseDatabase(); //关闭数据库
?>
data.sql
--创建数据库page--
create database page;
use page;
-- 表的结构 `test`
--CREATE TABLE `test` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(50) character set gb2312 NOT NULL,
  `sex` varchar(2) character set gb2312 NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;--
-- 导出表中的数据 `test`
--INSERT INTO `test` (`id`, `name`, `sex`) VALUES
(1, 'a', 'm'),
(2, 'b', 'w'),
(3, 'c', 'm'),
(4, 'd', 'w'),
(5, 'e', 'm'),
(6, 'f', 'm'),
(7, 'g', 'm'),
(8, 'h', 'w'),
(9, 'i', 'm'),
(10, 'j', 'm');