一. sql语句limit的用法
select * from table_name ... limit start_pos, item_counts;
start_pos : 开始位置, item_counts : 操作条数
二. 分页的一种公式
1.原理 :将数据库中的结果集,分成一段一段的来显示。
2.分段 :select * from table_name limit 0, 10; (前10条记录)
select * from table_name limit 10, 10; (第11至20条记录)
3.公式 :select * from table_name limit (nPage-1)*nPageSize, nPageSize;
nPage : 当前页数,nPageSize : 每页条数
三. parse_url($url)
parse_url()是将url解析成具有固定键值名称的数组的函数.
四. $_SERVER["REQUEST_URI"]
预定义服务器变量的一种,所有$_SERVER开头的都叫预定义服务器变量,REQUEST_URI的作用是取得当前URI,也就是除域名外后面完整的路径。
当前页:http://www.baidu.com/home.index?usr=user1&id=123456
$_SERVER["REQUEST_URI"]为:/home.index?usr=user1&id=123456
五. 代码
<table width="60%" border="1" cellpadding="5" cellspacing="1" bgcolor="#add3ef">
<?
// 1 connect to database
$link = @mysql_connect("localhost", "root", "") or die ("connect to mysql failed");
@mysql_select_db("csxdb", $link) or die ("not find db student");
mysql_query("set names 'GBK'");
// 2 path of local page
$url = $_SERVER["REQUEST_URI"];
$arr = parse_url($url);
$path = $arr[path];
// 3 total num of records
$rset = mysql_query("select * from student");
$nums = mysql_num_rows($rset);
// 4 some initialized variable
$nPageSize = 5; // page size
$nsPos = 0; // start postion of record
$nPage = 1; // current page order
// 5 if request
if ($_GET[page])
{
$nPage = $_GET[page];
$nsPos = ($nPage-1) * $nPageSize;
}
// 6 echo the link text
if ($nums > $nPageSize)
{
$nTmp = ceil($nums/$nPageSize);
echo "共".$nTmp."页"." 第".$nPage."页 "
."<a href=$path?page=".($nPage<=1?1:$nPage-1).">上一页</a> "
."<a href=$path?page=".($nPage<$nTmp?$nPage+1:$nTmp)
.">下一页</a><br>";
}
// 7 select data from db and show it on page
$rset = mysql_query("select * from student limit $nsPos, $nPageSize");
while ($row = mysql_fetch_array($rset))
{
?>
<tr>
<td><?=$row[sno]?></td>
<td><?=$row[sname]?></td>
<td><?=$row[sage]?></td>
<td><?=$row[saddr]?></td>
</tr>
<?
}
mysql_close($link);
?>
</table>
六. 界面效果图