>  기사  >  백엔드 개발  >  더 간단한 무한 레벨 카테고리 메뉴 코드

더 간단한 무한 레벨 카테고리 메뉴 코드

巴扎黑
巴扎黑원래의
2016-12-01 10:37:021268검색

간단한 무한레벨 카테고리 메뉴 코드

우선 설날에 할 일이 없어서 terry39님께 감사의 말씀을 전하고 싶습니다. 그가 말한 원리를 구현하면 됩니다. 이 프로그램의 핵심은 데이터 테이블의 디자인이 매우 독특하다는 것입니다. 재귀 없이 간단한 SQL 문으로 메뉴를 나열할 수 있습니다.
데이터베이스 필드는 대략 다음과 같습니다.
--- --------------------- ---------------- ----------------------------------
id 번호
fid 상위 카테고리 번호
name 카테고리 이름
path는 id를 노드로 하는 분류 경로이며,1,2,3,4,
와 유사한 문자열을 형성합니다. --------- --------------- --------- ----------

다음과 같은 데이터가 있다고 추측할 수 있습니다

id fid 이름 경로
--------------- ----------- -------------
1 0 카테고리 1 ,1,
2 0 카테고리 2,2,
3 1 카테고리 1-1,1,3,
4 1 카테고리 1-2,1,4,
5 2 카테고리 2-1,2,5,
6 4 카테고리 1-2-1,1,4,6,
---- ----------------------------- -------- -----
이번에는 게으른 편이라 한 페이지만 사용하고 다행히 코드가 길지 않고 모든 코드가 클래스에 캡슐화되어 있습니다(필요하지는 않지만 OO에도 익숙해지고 싶습니다. 하하!) ), 페이지 코드를 살펴보겠습니다:

<?php
classmenu{
//创建构造函数,作用:数据库连接并选择相应数据库
publicfunction__construct(){
$dbhost="localhost";
$dbuser="root";
$dbpassword="7529639";
$dbname="menu";
mysql_connect($dbhost,$dbuser,$dbpassword)ordie("error!");
mysql_query("SETNAMES&#39;GBK&#39;");
mysql_select_db($dbname);
}
//执行SQL语句函数
privatefunctionquery($sql){
returnmysql_query($sql);
}
//取得结果集数组函数
privatefunctionloop_query($result){
returnmysql_fetch_array($result);
}
//列出菜单列表函数
publicfunctionmenulist(){
$sql="select*fromlistorderbypath";
$result=$this->query($sql);
while($rows=$this->loop_query($result)){
if(substr_count($rows[&#39;path&#39;],&#39;,&#39;)>2){
for($i=0;$i<(substr_count($rows[&#39;path&#39;],&#39;,&#39;)-2);$i++)
echo&#39;&#39;;
}
echo$rows[&#39;name&#39;].&#39;<br>&#39;;
}
}
//创建析构函数,作用:关闭数据库连接
publicfunction__destruct(){
returnmysql_close();
}
}
$db=newmenu();//生成实例
$db->menulist();//调用方法生成菜单
?>


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