当前位置:首页 > 开发教程 > IT博文 > PHP技术 >

用PHP与ACCESS实现文章分页

时间:2013-04-26 15:18 来源:互联网 作者:源码搜藏 收藏

最近做的一个小网站,由于托管服务器不提供SQLSERVER 和MYSQL等服务,所以只能采用桌面型数据库ACCESS。ACCESS没有常用的ROWNUMBER等功能,所以不能采用常用的选择ROWNUMBER范围这一方法。在这里一般有两种办法。 一、临时表法。将要查询的整表数据复制到临时 最近做的一个小网站,由于托管服务器不提供SQLSERVER 和MYSQL等服务,所以只能采用桌面型数据库ACCESS。ACCESS没有常用的ROWNUMBER等功能,所以不能采用常用的选择ROWNUMBER范围这一方法。在这里一般有两种办法。


一、临时表法。将要查询的整表数据复制到临时表,在给临时表增加一个顺序增加的整形字段ROW_ID,分页选择数据时从临时表选择,用ROW_ID限制选择范围。


二、正选反选法。举例说,要选90-100条记录,可以先取出前100条记录,然后再将这一百条记录反排序,取出前10条即可,这种方法适合数据记录数不多。


PHP语言实现 ,数据源驱动为ODBC,显示一个含有新闻标题和发布时间的列表 ,当前页面为news.php。


1、获得当记录数,本例采用查询字符串传递


$display=10; //每页显示条数
if(isset($_GET['s'])&&is_numeric($_GET['s']))
{$start=$_GET['s'];}
else{ $start=0;} //获得当记录数



2.设置要取出的前n条记录


$n=$start+$display;


3.计算其它需要参数


$sql4="SELECT COUNT(*) AS ID FROM news";
$re=odbc_exec($connid,$sql4);
$records=odbc_result($re,1); //获得所有记录数
$pages=ceil($records/$display); //获取总页数
$current_pages=($start/$display)+1;



4.获得需要查询SQL语句,由于一般新闻都是从最新时间开始显示,所以数据源须先以时间反排序


$sql3="SELECT * FROM
(
SELECT TOP $display * FROM
( SELECT TOP $n *FROM news ORDER BY PubTime DESC)
ORDER BY PubTime ASC
)
ORDER BY PubTime DESC
";


5.页面显示数据


echo '<table align="center" cellspacing="2" cellpadding="2" width="75%">
<tr>
<td></td>
<td></td>
<td>新闻标题</td>
<td>发布时间</td>
</tr>';
$q=odbc_exec($connid,$sql3);
$bg='#D1EEEE';
while(odbc_fetch_row($q))
{$bg=($bg=='#D1EEEE' ? '#FFFFFF':'#D1EEEE'); //交换显示表格行的背景色
echo '<tr bgcolor="'.$bg.'"> <td align="left">';
echo '<a href="news_del_def1.php?id='.odbc_result($q,1).'">删除</a></td><td align="left">';
echo '<a href="news_edit.php?id='.odbc_result($q,1).'">编辑</a></td><td align="left">';
echo odbc_result($q,2);
echo '</td><td align="left">';
echo odbc_result($q,4);
echo '</td></tr>';
}
echo'</table>';


6.页面显示分页 ,主意分页的链接地址是当前页面news.php


if($current_pages!=1)
{
echo'<a href="news.php?s='.($start-$display).'">上一页</a>';} /*采用查询字符串传递当前的记录数*/


if ($current_pages!=$pages)
{
echo'<a href="news.php?s='.($start+$display).'">下一页</a>';}
echo"<br/> ";
echo"共";
echo"$pages";
echo"页&nbsp;&nbsp;当前";
echo"$current_pages";
echo"页";
odbc_free_result($q);


PHP技术阅读排行

最新文章