PHP实现无限极分类[!笔记]

  • sql文件
/*
SQLyog Ultimate v11.27 (32 bit)
MySQL - 5.5.53 : Database - depart
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`depart` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `depart`;

/*Table structure for table `deepcate` */

DROP TABLE IF EXISTS `deepcate`;

CREATE TABLE `deepcate` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `pid` int(10) DEFAULT NULL,
  `catename` char(50) DEFAULT NULL,
  `level` int(10) DEFAULT NULL,
  `createtime` int(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;

/*Data for the table `deepcate` */

insert  into `deepcate`(`id`,`pid`,`catename`,`level`,`createtime`) values (1,0,'新闻',NULL,NULL),(2,0,'图片',NULL,NULL),(3,1,'国际新闻',NULL,NULL),(4,1,'国内新闻',NULL,NULL),(5,3,'美国新闻',NULL,NULL),(6,3,'日本新闻',NULL,NULL),(7,4,'广东新闻',NULL,NULL),(8,4,'北京新闻',NULL,NULL),(9,2,'美女图片',NULL,NULL),(10,2,'动漫图片',NULL,NULL),(11,9,'明星A',NULL,NULL),(12,9,'明星B',NULL,NULL),(13,10,'海贼王',NULL,NULL),(14,10,'柯南',NULL,NULL);

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
  • db.inc.php
 <?php 
    header("Content-type: text/html; charset=utf-8");
    $db_host = 'localhost';
    $db_user = 'root';
    $db_password = 'root';
    $db_name = 'depart';
    $link = mysql_connect($db_host,$db_user,$db_password) or die(mysql_error());
    mysql_select_db($db_name ,$link) or die(mysql_error());
    mysql_query('set names utf8;') or die(mysql_error());
  • index.php
<?php   
    include 'db.inc.php';
    /**
     * @Author   SEVENORTH
     * @DateTime 2018-04-08 
     */
    function getList($pid = 0,&$result=array(),$spac = 0){
        $spac = $spac + 2; 
        $sql = "SELECT * FROM deepcate WHERE pid = $pid ";
        $res = mysql_query($sql);

        while($row = mysql_fetch_assoc($res)){
            $row['catename'] = str_repeat('&nbsp;',$spac).'|--'.$row['catename'];
            $result[] = $row;
            getList($row['id'],$result,$spac);
        }
        return $result;
    }


    function displayCate($pid = 0,$selected = 1){
        $rs = getList($pid);
        $str="";
        $str.= "<select name = 'cate'>";
        foreach ($rs as $key => $value) {
            $selectedstr = "";
            if($value['id'] == $selected){
                $selectedstr = "selected";
            }
            $str.= "<option {$selectedstr}>{$value['catename']}</option>"; 
        }
        return $str.= "</select>";
    }
    echo displayCate();

全路径无限极分类模式

<?php 

    include 'db.inc.php';
    /**
     * @Author   SEVENORTH
     * @DateTime 2018-04-08 
     */

    function likecate($path=''){
        $sql = "SELECT id,catename,path,concat(path,'|',id) as fullpath FROM fullcate order by fullpath asc ";
        $res = mysql_query($sql);
        $result = array();
        while ($row = mysql_fetch_assoc($res)) {
            $deep = count(explode('|', trim($row['fullpath'],'|')));
            $row['catename'] = str_repeat('&nbsp;', $deep*4).'|--'.$row['catename'];
            $result[] = $row; 
        }
        return $result;
    }


    function linkcate(){

        $res = likecate();
        $str='';
        $str.='<select name = cate>';
        foreach ($res as $key => $value) {
            $str.="<option>{$value['catename']}</option>";
        }
        $str.='</select>';

        return $str;
    }
    echo linkcate();

echo "<br/>";

function getPathCate($cateid){
    $sql = "SELECT *,CONCAT(REPLACE(path,'|',','),',',id) AS fullpath FROM fullcate WHERE id =  $cateid ";
    $res = mysql_query($sql);
    $row = mysql_fetch_assoc($res);
    $ids = $row['fullpath'];  
    unset($sql);
    $sql = "SELECT * FROM fullcate WHERE id in ($ids) order by id asc ";
    unset($res);
    $res = mysql_query($sql);
    $result = array();
    while ($row = mysql_fetch_assoc($res)) {
        $result[] = $row;
    }
    return $result;
}

    function linkpath($cid,$url='cate.php?cid = '){
        $res = getPathCate($cid);
        $str = '';
        foreach ($res as $key => $value) {            
            $str.= "<a href = '{$url}{$value['id']}' target='_blank'>{$value['catename']}</a>>";
        }
        return $str;
    }
echo linkpath(8,'page.php?id=');

猜你喜欢

转载自blog.csdn.net/seven_north/article/details/79849323