php文章分页分类的用法

用php对文章进行分页也算是比较基础的了,下面来介绍一种方法,对文章进行分页或分类。

一、首先从article(具体数据库是什么用你自己的)数据库取出数据。

$sql="select * from article";  
$totalRows=getResultNum($sql);

这里定义了一个函数getResultNum():得到结果集中的记录数,就是得出有多少文章.

function getResultNum($sql){
$result=mysql_query($sql);
return mysql_num_rows($result);
}

二、按页数分组取数据

$pageSize=2;  //这里规定每个页面显示的文章数,这里设为2;
$totalPage=ceil($totalRows/$pageSize);  //总记录数除以每页显示的数,ceil 向上取整(比如5/2,每页显示2篇,肯定要3页才能显示完),得出总得页面数。
$page=$_REQUEST['page']?(int)$_REQUEST['page']:1;  //page表示当前页,由$_REQUEST获取,默认为1。
if($page<1||$page==null||!is_numeric($page)){
$page=1;
}  //意思就是page小于1,或者为空,或者不是数字以及数字字符串,都默认为1。
if($page>=$totalPage)$page=$totalPage; //如果得到的page大于等于总页面,那肯定只能取totalPage,即总页面。
$offset=($page-1)*$pageSize; //offset指的是偏移量。
$sql="select * from article limit {$offset},{$pageSize}"; //这里就要涉及到mysql语句limit的应用了,这句话的意思是从article数据库取出数据,什么数据呢,就是第$offset条的下一条开始,往后取出$pageSize个数据。例如offset为3,pageSize为5,就是说,从第4条数据开始(包括第4条),往后取出5条数据。那么偏移量【$offset=($page-1)*$pageSize】就好理解,第一页就是从第1条开始往后取pageSize条,第二页就是从(pageSize+1)开始取,取出pageSize条,以此类推。

$rows=fetchAll($sql);

上面代码最后一行定义一个函数fetchAll(),就是得到结果集中所有记录,这个记录以关联数组形式返回。

function fetchAll($sql,$result_type=MYSQL_ASSOC){
$result=mysql_query($sql);
while(@$row=mysql_fetch_array($result,$result_type)){
$rows[]=$row;
}
return $rows;
}
foreach($rows as $row){
echo "编号:".$row['title'],"<br/>";
echo "分类:".$row['articlename'],"<hr/>";
}

三、分页

function showPage($page,$totalPage,$sep="&amp;nbsp;"){
$url = $_SERVER['PHP_SELF'];  //获取当前脚本的url(包括脚本名字)
$index = ($page == 1)?"首页":"<a href='{$url}?page=1'>首页</a>";
$last = ($page == $totalPage)?"尾页":"<a href='{$url}?page={$totalPage}'>尾页</a>";
$prev = ($page == 1)?"上一页":"<a href='{$url}?page=".($page-1)."'>上一页</a>";
$next = ($page == $totalPage)?"下一页":"<a href='{$url}?page=".($page+1)."'>下一页</a>";
$str = "总共{$totalPage}页/当前是第{$page}页";
for ($i=1; $i <= $totalPage; $i++) {
if ($page == $i) {
$p.="[{$i}]";
}else{
$p.= "<a href='{$url}?page={$i}'>[{$i}]</a>";
}
}
$pageStr = $str.$sep . $index.$sep . $prev.$sep . $p.$sep . $next.$sep .$last;
return $pageStr;
}

倒数第三行$pageStr返回显示的就是一个分页信息(这里没有加样式,想要漂亮的换页按钮,就需要用css了。),如下图:

QQ图片20150604011417

四、不仅分页还可以分类

function showPage($page,$totalPage,$where=null,$sep="&amp;nbsp;"){
$where=($where==null)?null:"&amp;".$where;
$url = $_SERVER ['PHP_SELF']; //获取当前脚本的url(包括脚本名字)
$index = ($page == 1) ? "首页" : "<a href='{$url}?page=1{$where}'>首页</a>";
$last = ($page == $totalPage) ? "尾页" : "<a href='{$url}?page={$totalPage}{$where}'>尾页</a>";
$prevPage=($page&gt;=1)?$page-1:1;
$nextPage=($Page&gt;=$totalPage)?$totalPage:$page+1;
$prev = ($page == 1) ? "上一页" : "<a href='{$url}?page={$prevPage}{$where}'>上一页</a>";
$next = ($page == $totalPage) ? "下一页" : "<a href='{$url}?page={$nextPage}{$where}'>下一页</a>";
$str = "总共{$totalPage}页/当前是第{$page}页";
for($i = 1; $i <= $totalPage; $i ++) {
if ($page == $i) {
$p .= "[{$i}]";
} else {
$p .= "<a href='{$url}?page={$i}{$where}'>[{$i}]</a>";
}
}
$pageStr=$str.$sep . $index .$sep. $prev.$sep . $p.$sep . $next.$sep . $last;
return $pageStr;
}

这里其实就多了一个“$where”,$where可以为“&class=2”,这样地址由{$url}?page=1&class=2确定,就可以达到分类的目的。至于一些细节和其他的东西(比如怎么把分页分类用到自己的网站上去),就需要自己的仔细研究和学习了!

下面贴一下完整的代码:

前端展示:

<?php  $i = 1;foreach($rows as $row):?>
    <tr>
        <!--这里的id和for里面的c1 需要循环出来-->
        <td><input type="checkbox" id="c1" class="check" style="cursor :pointer;"><label for="c1" class="label"><?php echo $i;?></label></td>
        <td><?php echo $row['username'];?></td>
        <td><?php echo $row['Email'];?></td>
        <td align="center"><input type="button" value="修改" class="btn" onclick="editAdmin(<?php echo $row['id'];?>)"><input type="button" value="删除" class="btn"  onclick="delAdmin(<?php echo $row['id'];?>)"></td>
    </tr>
    <?php $i++;endforeach;?>
    <?php if($totalRows>$pageSize):?>
    <tr>
    	<td colspan="4" align="center"><?php echo showPage($page, $totalPage);?></td>
    </tr>
    <?php endif;?>
</tbody>

php代码:

$sql="select * from article";
$totalRows=getResultNum($sql);
$pageSize=2;
$totalPage=ceil($totalRows/$pageSize);
$page=$_REQUEST['page']?(int)$_REQUEST['page']:1;
if($page&lt;1||$page==null||!is_numeric($page)){
$page=1;
}
if($page&gt;=$totalPage)$page=$totalPage;
$offset=($page-1)*$pageSize;
$sql="select * from admin limit {$offset},{$pageSize}";
$rows=fetchAll($sql);
foreach($rows as $row){
echo "编号:".$row['id'],"<br/>";
echo "分类".$row['username'],"<hr/>";
}
//分页
// echo showPage($page,$totalPage);
function showPage($page,$totalPage,$where=null,$sep="&amp;nbsp;"){
$url = $_SERVER['PHP_SELF'];
$index = ($page == 1)?"首页":"<a href='{$url}?page=1'>首页</a>";
$last = ($page == $totalPage)?"尾页":"<a href='{$url}?page={$totalPage}'>尾页</a>";

$prev = ($page == 1)?"上一页":"<a href='{$url}?page=".($page-1)."'>上一页</a>";
$next = ($page == $totalPage)?"下一页":"<a href='{$url}?page=".($page+1)."'>下一页</a>";
$str = "总共{$totalPage}页/当前是第{$page}页";

for ($i=1; $i <= $totalPage; $i++) {
if ($page == $i) {
$p.="[{$i}]";
}else{
$p.= "<a href='{$url}?page={$i}'>[{$i}]</a>";
}
}
$pageStr = $str.$sep . $index.$sep . $prev.$sep . $p.$sep . $next.$sep .$last;
return $pageStr;
}
标签:   |  
时间: 2015年06月04日上午1:20  |  
作者:
LEAVE A REPLY
loading
正在赶回来……