文章管理页面,当选择多选框,点击搜索查看某个分类时,可以显示出第一页和正确的页数,但是点击下一页的时候,查询的条件又变回查看所有。我是根据网上一个教程改编过来的,教程给的代码能够成功下一页,我的却不知道为什么不行......
<?php
//(0)包含文件
require_once("./include/conn.php");
require_once("./include/functions.php");//(1)获取新闻板块的子分类
$sql = "SELECT * FROM category WHERE pid =11";
$result = mysql_query($sql);
while($row=mysql_fetch_assoc($result))
{
$categorys[] = $row['classname'];
}//(2)获取查询的条件
$where = "2>1";
$search = "";
if(!empty($_GET['category_id'])) //检测子分类板块
{
$where .= " and classname='".$_GET['category_id']."'";
$search .= "&classname='".$_GET['category_id']."'";
}
if(!empty($_GET['keyword'])) //检测搜索关键字
{
$where .= " and title like '%".$_GET['keyword']."%'";
$search .= "&keyword=".$_GET['keyword'];
}//(3)构建分页参数
$pagesize = 10;
$page = !empty($_GET['page']) ? $_GET['page'] : 1;
$startrow = ($page-1)*$pagesize;//(4)获取总记录数和计算总页数
$sql = "SELECT * FROM news WHERE {$where}";
$result = mysql_query($sql);
$records = mysql_num_rows($result);
$pages = ceil($records/$pagesize);//(5)构建分页查询的SQL语句
$sql = "SELECT * FROM news WHERE {$where} ORDER BY orderby DESC,id DESC ";
$sql .= "LIMIT {$startrow},{$pagesize}";//(6)执行SQL语句,并返回结果集
$result = mysql_query($sql);
echo $sql;
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link href="./css/public.css" rel="stylesheet" type="text/css" />
<title>文章管理</title>
<style type="text/css">
.pagelist{height:50px;line-height:50px;text-align:center;}
.pagelist a{padding:6px 10px;margin:0px 3px;border:1px solid #e8e8e8;}
.pagelist a:link,.pagelist a:visited{}
.pagelist a:hover{background-color:#555;color:white;font-weight:bold;border:none;}
.pagelist .current{background-color:#555;color:white;font-weight:bold;padding:6px 10px;border:1px solid #e8e8e8;}
</style>
<script type="text/javascript">
//定义JS的删除函数
function confirmDel(id){
//询问是否要删除
if(window.confirm("你真的要删除吗?")){
//跳转到删除页面
location.href = "./article_delete.php?id="+id;
}
}
</script>
</head><body>
<!--导航栏-->
<table width="100%" border="0" align="center" cellpadding="1" cellspacing="1" class="border">
<tr class="topbg"><td>文章管理</td></tr>
<tr class="tdbg">
<td height="30">&nbsp;&nbsp;
<a href="./article_index.php">管理首页</a>&nbsp;|&nbsp;
<a href="./article_add.php">添加文章</a>
</td>
</tr>
</table>
<!--搜索表单-->
<div style="padding:8px 5px;margin:8px 3px;background-color:#fefefe;text-align:center;">
<form name="form1" method="get" action="">
<span style="padding:0px 5px;">分类</span>
<select name="category_id">
<option value="">任意</option>
<?php
foreach($categorys as $category)
{
echo "<option value='{$category}'>";
echo "$category";
echo "</option>";
}
?>
</select>
<span style="padding:0px 5px;">标题</span>
<input type="text" name="keyword" />
<input type="submit" value="搜索" />
</form>
</div>
<!--文章列表-->
<table width="100%" border="0" align="center" cellpadding="3" cellspacing="1" class="border">
<tr class="title" align="center">
<td>编号</td>
<td>类别</td>
<td>标题</td>
<td>作者</td>
<td>排序</td>
<td>点击</td>
<td>发布日期</td>
<td>操作选项</td>
</tr>
<?php while($row=mysql_fetch_assoc($result)){?>
<tr class="tdbg" align="center">
<td><?php echo $row['id']?></td>
<td><?php echo $row['classname']?></td>
<td align="left"><a href='javascript:void(0)'><?php echo $row['title']?></a></td>
<td><?php echo $row['author']?></td>
<td><?php echo $row['orderby']?></td>
<td><?php echo $row['clicks']?></td>
<td><?php echo date("Y-m-d H:i",$row['times'])?></td>
<td>
<a href="./article_edit.php?id=<?php echo $row['id']?>">修改</a> | 
<a href="javascript:void(0)" onClick="confirmDel(<?php echo $row['id']?>)">删除</a>
</td>
</tr>
<?php }?>
<tr class="tdbg" align="center">
<td colspan="8" class="pagelist">
<?php
//计算循环的开始页和结束页
$start = $page-5;
$end   = $page+4;
if($page<6){
$start = 1;
$end = $end+6-$page;
}
if($end>$pages){
$start = $pages-10+1;
$end = $pages;
}
if($pages<=10){
$start = 1;
$end = $pages;
}
//循环显示所有的页码
for($i=$start;$i<=$end;$i++){
//如果是当前页,不加连接
if($i==$page){
echo "<span class='current'>$i</span>";
}else{
echo "<a href='?page=$i{$search}'>$i</a>";
}
}
?>
</td>
</tr>
</table>
</body>
</html>
这是按第一个板块查看以后的情况点击第二页以后,却回到了查看所有的: