zoukankan      html  css  js  c++  java
  • 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;
    }

    ?>
  • 相关阅读:
    Ubuntu环境变量设置注意点
    在使用Vue2.0中使用axios库时,遇到415错误
    Eureka+SpringBoot2.X结合Security注册中心安全验证
    Eureka+SpringBoot2.X版本实现优雅停服
    Linux 解压xz格式文件及安装xz
    Linux gzip: stdin: not in gzip format
    SpringBoot配置文件yml ScannerException: while scanning an alias *
    java 实现文件下载中文名不显示
    连接SpringBootAdmin 异常 Name or service not known
    Idea环境实现SpringBoot实现两种热部署方式(亲测有效)
  • 原文地址:https://www.cnblogs.com/futan/p/php_searchandcategory.html
Copyright © 2011-2022 走看看