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

<?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">&laquo; First</a><a href="index.php?now_page=<?php echo $prv_page;?>" title="Previous Page">&laquo; 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 &raquo;</a><a href="index.php?now_page=<?php echo $pages;?>" title="Last Page">Last &raquo;</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;
}

?>
原文地址:https://www.cnblogs.com/futan/p/php_searchandcategory.html