您的位置:首页 > 编程语言 > PHP开发

PHP无级分类续及搜索功能,分组分页

2012-12-12 17:02 555 查看
<?php
header("Content-Type:text/html; charset=utf8");
mysql_connect('211.147.14.57','e1215cms_4','111111');

mysql_select_db('e1215cms_4');
mysql_query("set names utf8");

$sql = "SELECT
`news`.*, `news_categorys`.`name` AS cate_name
FROM
`news`
JOIN `news_categorys` ON `news`.categoryid = `news_categorys`.id
WHERE
`news`.categoryid = '{$_GET['categoryid']}'
AND `news`.title LIKE '%{$_GET['keyword']}%'";

//执行分页
$result = mysql_query($sql);

if(!$result)
{
die(mysql_error());
}

$total_num = mysql_num_rows($result);

$per_num = 2;

$now_page=isset($_GET['now_page'])?$_GET['now_page']:1;

$offset = $per_num*($now_page-1);

$pages = ceil($total_num/$per_num);

if($now_page==1){
$prv_page = 1;
}else{
$prv_page = $now_page - 1;
}

if($now_page==$pages){

$next_page = $pages;

}else{

$next_page = $now_page + 1;

}

$sql .= "limit {$offset},{$per_num}";

$result = mysql_query($sql);

if(!$result)
{
die(mysql_error());
}

$rows = array();

while($row = mysql_fetch_assoc($result))
{
$rows[] = $row;
}

$tree = getTree();

//1.读取新闻分类
function getTree($pid = 0,$typeTree = array(),$level = 0){

$list = getList($pid);

foreach($list as $l){

$levelStr = '<font color="#ff0000">';
for($i=0;$i<$level;$i++){
$levelStr.='|-';
}
$levelStr .= '</font>';//$levelStr = $levelStr.'</font>'
$l['name'] = $levelStr.$l['name'];
$typeTree[] = $l;

//逐层深入递归
$typeTree = getTree($l['id'],$typeTree,$level+1);//获取下一级分类
//$level 指子分类层级
}
return $typeTree;
}

function getList($pid = 0)
{
//按新闻分类表的 父id查找 子分类列表
$sql = "select * from news_categorys where parentid = '{$pid}' limit 100";
$query = mysql_query($sql);
if(!$query)
{
//有错报错
die(mysql_error());
}
$lists = array();
//在结果集里取一行
while($row = mysql_fetch_assoc($query))
{
$lists[] = $row;
}
return $lists;
}

?>

<form action="" method="get">
<!--分类下拉框-->
请选择新闻类别:
<select name="categoryid">
<option value="">全部新闻</option>
<?php foreach($tree as $op):?>
<option value="<?=$op['id']?>" <?=$op['id']==$_GET['categoryid']?'selected="selected"':''?>><?=$op['name']?></option>
<?php endforeach;?>
</select>

<!--关键字搜索-->
<input type="text" name="keyword" value="<?=$_GET['keyword']?>"/>

<!--搜索按钮-->
<input type="submit" value="搜索"/>

</form>

<?
var_dump($rows);
?>

<div class="pagination">
<a href="index.php?now_page=1" title="First Page">« First</a><a href="index.php?now_page=<?php echo $prv_page;?>" title="Previous Page">« Previous</a>

<?php

$number_head = '<a href="?categoryid='.$_GET['categoryid'].'&keyword='.$_GET['keyword'].'&now_page=';
$class = '" class="';
$title = '" title="';
$num_l = '">';
$num_r = '</a>';
$tail = '... ';

if($pages-5<=0){

for($i=1;$i<=$pages;$i++){
$current_class = ($i==$now_page)?'number current':'number';
echo $number_head.$i.$class.$current_class.$title.$i.$num_l.$i.$num_r;
}
}

if(($now_page-1<3) and ($pages-5>0)){

for($i=1;$i<=5;$i++){
$current_class = ($i==$now_page)?'number current':'number';
echo $number_head.$i.$class.$current_class.$title.$i.$num_l.$i.$num_r;
}echo $tail;
}

if(($now_page-1>=3) and ($pages-5>0) and (($pages-($now_page+2))<=0) ){
echo $tail;
for($i=4;$i>=0;$i--){
$j = $pages-$i;
$current_class = ($j==$now_page)?'number current':'number';
echo $number_head.$j.$class.$current_class.$title.$j.$num_l.$j.$num_r;
}

}

if(($now_page-1>=3) and ($pages-5>0) and (($pages-($now_page+2))>0) ){
echo $tail;
for($i=2;$i>=-2;$i--){
$j = $now_page-$i;
$current_class = ($j==$now_page)?'number current':'number';
echo $number_head.$j.$class.$current_class.$title.$j.$num_l.$j.$num_r;
}echo $tail;
}

?>

<a href="index.php?now_page=<?php echo $next_page;?>" title="Next Page">Next »</a><a href="index.php?now_page=<?php echo $pages;?>" title="Last Page">Last »</a>
</div> <!-- End .pagination -->
《分组分页。。。》

<?php
header("Content-Type:text/html; charset=utf8");
mysql_connect("localhost","root","");
mysql_select_db("e1215_cms");
mysql_query("set names utf8");
$sql = "select * from `news`";
$relust = mysql_query($sql);
if(!$relust)
{
die(mysql_error());
}
$total_num = mysql_num_rows($relust);
$per_num = 5;
$now_page = isset($_GET['now_page'])?$_GET['now_page']:1;
$offset = ($now_page-1) * $per_num;
$pages = ceil($total_num/$per_num);
$sql = "select * from `news` limit {$offset},{$per_num}";
echo $sql;
$relust = mysql_query($sql);
if(!$relust)
{
die(mysql_error());
}
$rows = array();
while($row = mysql_fetch_assoc($relust))
{
$rows[] = $row;
}
foreach($rows as $row)
{
echo $row['content'];
echo "<br />";
}

?>
<html>
<body>
<?php
var_dump($pages);

$show_num = 2;
$start = $now_page - ($show_num / 2);
$end = $now_page + ($show_num / 2);

$start = $start < 1?1:$start;
$end = $end > $pages?$pages:$end;

for($i=$start;$i<=$end;$i++):?>
<a href="?now_page=<?=$i?>"><?=$i?></a>
<?php endfor;?>

<?
$show_num = 4;
$start = $now_page - ceil($show_num/2);
$start = $start < 1 ? 1 : $start;

$end = $now_page + ceil($show_num/2);
$end = $end > $pages ? $pages : $end;

/*for($i=$start;$i<=$end;$i++):?>
<a href="?now_page=<?=$i?>"><?=$i?></a>
<?php endfor;*/?>
</body>
</html>

代码重构:

<?php
header("Content-Type:text/html; charset=utf8");
//todo 1. 建一个新闻分类下拉框 关键字搜索文本框 提交按钮
//按分类 和 关键字 来搜索

//2.后台接受 分类id 关键字
$categoryid = isset($_GET['categoryid'])?$_GET['categoryid']:'';
$keyword = isset($_GET['keyword'])?$_GET['keyword']:'';

//3.连接数据库
mysql_connect('211.147.14.57','e1215cms_4','111111');
mysql_select_db('e1215cms_4');
mysql_query("set names utf8");

//5.增加查询条件
$where = ' where 1';
if($categoryid)$where .= " and categoryid = '{$categoryid}'";
if($keyword)$where .= " and title like '%{$keyword}%'";

//4.写sql查询语句
//先写 全部 查询 不带条件
$sql = "select * from news {$where}";

echo $sql;

//7.执行sql查询
$result = mysql_query($sql);

if(!$result)
{
die(mysql_error());
}

$rows = array();

while($row = mysql_fetch_assoc($result))
{
$rows[] = $row;
}

//6.调用新闻分类函数
include("news.fun.php");
$tree = getTree();

?>
<!--1.建表单-->
<form action="" method="get">
<!--2.建一个新闻分类下拉框-->
<select name="categoryid">
<option value="">全部新闻</option>
<? foreach($tree as $op):?>
<option value="<?=$op['id']?>" <?=$categoryid==$op['id']?' selected="selected"':''?>><?=$op['name']?></option>
<? endforeach;?>
</select>
<!--3.建一个关键字搜索文本框-->
<!--关键字搜索-->
<input type="text" name="keyword" value="<?=$keyword?>"/>

<!--4.建一个提交按钮-->
<input type="submit" value="搜索"/>
</form>
<pre>
<? var_dump($rows)?>
</pre>
<?php

function pages()
{

}

//1.读取新闻分类
function getTree($pid = 0,$typeTree = array(),$level = 0){

$list = getList($pid);

foreach($list as $l){

$levelStr = '<font color="#ff0000">';
for($i=0;$i<$level;$i++){
$levelStr.='|-';
}
$levelStr .= '</font>';//$levelStr = $levelStr.'</font>'
$l['name'] = $levelStr.$l['name'];
$typeTree[] = $l;

//逐层深入递归
$typeTree = getTree($l['id'],$typeTree,$level+1);//获取下一级分类
//$level 指子分类层级
}
return $typeTree;
}

function getList($pid = 0)
{
//按新闻分类表的 父id查找 子分类列表
$sql = "select * from news_categorys where parentid = '{$pid}' limit 100";
$query = mysql_query($sql);
if(!$query)
{
//有错报错
die(mysql_error());
}
$lists = array();
//在结果集里取一行
while($row = mysql_fetch_assoc($query))
{
$lists[] = $row;
}
return $lists;
}

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: