>  기사  >  백엔드 개발  >  소스 코드 비교적 간단하고 실용적인 PHP 무제한 분류 소스 코드 공유 아이디어가 좋습니다

소스 코드 비교적 간단하고 실용적인 PHP 무제한 분류 소스 코드 공유 아이디어가 좋습니다

WBOY
WBOY원래의
2016-07-29 08:46:561097검색

다음 코드는 해당 데이터베이스를 생성하는 sql 코드입니다.

코드 복사 코드는 다음과 같습니다


 //////////////
   //////无限分类的数据库设计及样例
   ////////// ////
   mysql> 데이터베이스 생성 db_kind;
   쿼리 확인, 1개 행이 영향을 받음
   mysql> db_kind;
   데이터베이스 변경됨
   mysql> 테이블 생성 tb_kind(
     -> id int not null auto_increment 기본 키,
     -> pid int,
     -> path varchar(200)
     -> );
 Query 알겠습니다. 영향을 받은 행은 0개입니다
 mysql> tb_kind 값에 삽입(null,"新闻",0,0);
 쿼리 확인, 1개 행이 영향을 받음
 mysql> tb_kind 값에 삽입(null,"视频",0,0);
 쿼리 확인, 1개 행이 영향을 받음
 mysql> tb_kind 값에 삽입(null,"图文",0,0);
 쿼리 확인, 1개 행이 영향을 받음
 mysql> tb_kind 값에 삽입(null,"博客",0,0);
 쿼리 확인, 1개 행이 영향을 받음
 mysql> tb_kind 값에 삽입(null,"体育新闻",1,"0-1");
 쿼리 확인, 1개 행이 영향을 받음
 mysql> tb_kind 값에 삽입(null,"娱乐新闻",1,"0-1");
 쿼리 확인, 1개 행이 영향을 받음
 mysql> tb_kind 값에 삽입(null,"财经新闻",1,"0-1");
 쿼리 확인, 1개 행이 영향을 받음
 mysql> db_kind에서 * 선택;
 오류 1146: 테이블 'db_kind.db_kind'가 존재하지 않습니다
 mysql> tb에서 * 선택
 _kind;
  ---- ---------- ----- ------
 | 아이디 | 이름    | PID | 경로 |
  ---- ---------- ----- ------
 |  1 | 새로운 내용     |   0 | 0    |
 |  2 | 视频     |   0 | 0    |
 |  3 | 사진     |   0 | 0    |
 |  4 | 博客     |   0 | 0    |
 |  5 | 体育 새로운 소식 |   1 | 0-1  |
 |  6 | 새로운 소식 |   1 | 0-1  |
 |  7 | 财经신규 |   1 | 0-1  |
  ---- ---------- ----- ------
 7행 세트
 mysql> tb_kind 값에 삽입(null,"篮球新闻",5,"0-1-5");
 쿼리 확인, 1개 행이 영향을 받음
 mysql> tb_kind 값에 삽입(null,"足球新闻",5,"0-1-5");
 쿼리 확인, 1개 행이 영향을 받음
 mysql> tb_kind에서 * 선택;
  ---- ---------- ----- -------
 | 아이디 | 이름    | PID | 경로  |
  ---- ---------- ----- -------
 |  1 | 새로운 내용     |   0 | 0     |
 |  2 | 视频     |   0 | 0     |
 |  3 | 사진     |   0 | 0     |
 |  4 | 博客     |   0 | 0     |
 |  5 | 새로운 소식 |   1 | 0-1   |
 |  6 | 새로운 소식 |   1 | 0-1   |
 |  7 | 财经신규 |   1 | 0-1   |
 |  8 | 새로운 소식 |   5 | 0-1-5 |
 |  9 | 足球신규 |   5 | 0-1-5 |
  ---- ---------- ----- -------
 9행 세트
 mysql> tb_kind 값에 삽입(null,"NBA",8,"0-1-5-8");
 쿼리 확인, 1개 행이 영향을 받음
 mysql> tb_kind 값에 삽입(null,"CBA",8,"0-1-5-8");
 쿼리 확인, 1개 행이 영향을 받음
 mysql> tb_kind에서 * 선택;
  ---- ---------- ----- ---------
 | 아이디 | 이름    | PID | 경로    |
  ---- ---------- ----- ---------
 |  1 | 새로운 내용     |   0 | 0       |
 |  2 | 视频     |   0 | 0       |
 |  3 | 사진     |   0 | 0       |
 |  4 | 博客     |   0 | 0       |
 |  5 | 体育 새로운 소식 |   1 | 0-1     |
 |  6 | 새로운 소식 |   1 | 0-1     |
 |  7 | 财经신규 |   1 | 0-1     |
 |  8 | 새로운 소식 |   5 | 0-1-5   |
 |  9 | 足球신규 |   5 | 0-1-5   |
 | 10 | NBA      |   8 | 0-1-5-8 |
 | 11 | CBA      |   8 | 0-1-5-8 |
  ---- ---------- ----- ---------
 세트에 11개 행
 mysql> select concat(path,"-",id) from tb_kind;
 +---------------------+
 | concat(path,"-",id) |
 +---------------------+
 | 0-1                 |
 | 0-2                 |
 | 0-3                 |
 | 0-4                 |
 | 0-1-5               |
 | 0-1-6               |
 | 0-1-7               |
 | 0-1-5-8             |
 | 0-1-5-9             |
 | 0-1-5-8-10          |
 | 0-1-5-8-11          |
 +---------------------+
 11 rows in set
 mysql> select concat(path,"-",id) from tb_kind;
 +---------------------+
 | concat(path,"-",id) |
 +---------------------+
 | 0-1                 |
 | 0-2                 |
 | 0-3                 |
 | 0-4                 |
 | 0-1-5               |
 | 0-1-6               |
 | 0-1-7               |
 | 0-1-5-8             |
 | 0-1-5-9             |
 | 0-1-5-8-10          |
 | 0-1-5-8-11          |
 +---------------------+
 11 rows in set
 mysql> select concat(path,"-",id) as abs from tb_kind order by abs.path;
 ERROR 1054 : Unknown column 'abs.path' in 'order clause'
 mysql> select concat(path,"-",id) as abs from tb_kind order by abs
 +------------+
 | abs        |
 +------------+
 | 0-1        |
 | 0-1-5      |
 | 0-1-5-8    |
 | 0-1-5-8-10 |
 | 0-1-5-8-11 |
 | 0-1-5-9    |
 | 0-1-6      |
 | 0-1-7      |
 | 0-2        |
 | 0-3        |
 | 0-4        |
 +------------+
 11 rows in set
 mysql> select concat(path,"-",id) as,id,name,path abs from tb_kind order by abs;
 ERROR 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id,name,path abs from tb_kind order by abs' at line 1
 mysql> select concat(path,"-",id) as abs,
 id,pname,path abs from tb_kind order by abs;
 +------------+----+----------+---------+
 | abs        | id | pname    | abs     |
 +------------+----+----------+---------+
 | 0-1        |  1 | 新闻     | 0       |
 | 0-1-5      |  5 | 体育新闻 | 0-1     |
 | 0-1-5-8    |  8 | 篮球新闻 | 0-1-5   |
 | 0-1-5-8-10 | 10 | NBA      | 0-1-5-8 |
 | 0-1-5-8-11 | 11 | CBA      | 0-1-5-8 |
 | 0-1-5-9    |  9 | 足球新闻 | 0-1-5   |
 | 0-1-6      |  6 | 娱乐新闻 | 0-1     |
 | 0-1-7      |  7 | 财经新闻 | 0-1     |
0-2 | 0 | 0 | 0 | 0 | ---- ---- ---------- ---------
11행 세트
mysql>


다음 php 소스 파일입니다:



코드 복사

코드는 다음과 같습니다:



제목 없는 문서



$c
mysql_select_db("db_kind" );
mysql_query("set names utf8");
$sql="abspath에 따른 tb_kind 순서로 concat(path,'-',id) 선택"; $rs =mysql_query($sql);
while($result=mysql_fetch_assoc($rs)){
$num=count(explode("-",$result[path]))
$ new_str=str_repeat("---",$num);
echo $new_str.$result[pname]
echo "
"
$str= str_repeat( "=",10);
echo $str;
$num=count(explode("-","0-1-5-8"))-1; ;
?>




위 코드에서는 중간에 공백이 있는 것이 실제로 매우 좋습니다. 로컬에서 테스트해 보세요. 편집기 문제로 인해 조판이 혼란스럽습니다.
이상으로 소스코드를 소개하였습니다. 소스코드를 포함해 비교적 간단하고 실용적인 PHP 무한분류 소스코드를 공유해보시면 좋을 것 같습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.