>  기사  >  데이터 베이스  >  mysql에서 무한 분류 코드 구현

mysql에서 무한 분류 코드 구현

不言
不言원래의
2018-08-20 16:34:002700검색

이 글의 내용은 mysql에서 Infinitus 분류 코드 구현에 관한 내용입니다. 필요한 친구들이 참고하시면 좋을 것 같습니다.

다른 곳에서도 찾아봤는데 꽤 괜찮았던 것 같아서 여기에 공유해봅니다.

사진을 올릴 수 없고 간단하게 처리만 할 수 있습니다:

id                                              ~                                           중국 뉴스 1 1                                                                            네일 브라더 뉴스 3 0-1-3#🎜 🎜#

문 하나:

SELECT id,name,pid,path,concat(path,'-',id) AS newpath FROM cates ORDER BY newpath

#🎜🎜 #쿼리 후 결과:

id                                                                                  > ~                                              미국 뉴스 1 1 0 1                                                                                                     0-1-3-5

할 수 있습니다 구조가 매우 명확하다는 것을 알 수 있습니다. 이는 mysql의 정렬 기능을 매우 교묘하게 사용합니다. concat() 함수를 사용하여 현재 경로를 현재 ID와 연결합니다(실제로 문자열을 연결하고 싶습니다). 이는 별칭 newpath를 제공하고 우연히도 0을 먼저 비교합니다. , 비교 1, 비교 2, 비교 3... 이런 식으로 쿼리 결과가 수준별로 직접 정렬됩니다. 다음으로 포그라운드에서 출력만 반복하면 되며 "계층적 관계 자리 표시자"도 가능합니다. newpath의 0-1-2-4는 PHP를 출력할 때 위의 명령문을 사용하여 각 데이터 조각의 값을 처리해야 합니다. 먼저 배열로 나눈 다음 통계에 이 배열에 대해 키 개수(데이터 집합)를 배열에 추가하고, 계산된 배열 개수를 이 키에 넣습니다.

thinkphp 5.0 예:

$list = CateModel::fild(‘id,name,pid,path,concat(path,’-‘,id)’)->order(‘newpath asc’)->select();
// 上面模型查询方法只是大概意思,可以根据最上面的 mysql 语句,用 tp5 的方式拼出来。
foreach ($list as $k=>v){
$list[$k][‘count’] = count(explode(‘-‘,$v))
}

이 개수는 계층적 분류를 위한 자리 표시자입니다. 그런 다음 템플릿에서 반복하고 반복할 때마다 반복합니다.# 🎜 🎜#

<select name=”aa”>
{volist name=”list” id=”vo”}
<option vlaue=”{$vo.id}”>
{php}
for($i=0;$i<$vo[‘count’]*2;$i++){
echo ‘ ’
}
{/php}
{$vo.name}
</option>
{/volist}
</select>

효과:

News

중국 뉴스

#新闻##🎜🎜 ####🎜🎜 ## 🎜🎜##🎜🎜 ## 🎜🎜#관련 추천:#🎜🎜 ## 🎜🎜#Thinkphp 무한레벨 컬럼의 정렬 구현 코드 #🎜🎜 #

TP5 프레임워크에서 무한 채점을 달성하기 위해 재귀를 사용하는 방법(코드 예)

위 내용은 mysql에서 무한 분류 코드 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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