묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
mysql 에서 쿼리로 tree를 구현 할수 있나요,
2011.09.05 23:26
mysql 을 사용 해서 사용자별 매뉴를 구성 하려고 합니다.
id name p_id sortkey
----------------------------------
1 교육부
2 국어교육 1 1
3 영어교육 1 2
4 건교부
5 해양건설 4 2
6 건설교통 4 1
7 국사교육 1 0
8 영국영어 3 1
----------------------------------
db에 이런 식으로 입력 하고
결과를 아래와 같이 보이게 할수 있을까요...
교육부
국사교육
국어교육
영어교육
영국영어
건교부
건설교통
해양건설
id name p_id sortkey
----------------------------------
1 교육부
2 국어교육 1 1
3 영어교육 1 2
4 건교부
5 해양건설 4 2
6 건설교통 4 1
7 국사교육 1 0
8 영국영어 3 1
----------------------------------
db에 이런 식으로 입력 하고
결과를 아래와 같이 보이게 할수 있을까요...
교육부
국사교육
국어교육
영어교육
영국영어
건교부
건설교통
해양건설
아래 소스에서 붉은 글씨만 상황에 맞게 수정하고
그대로 카피해서 php파일에 붙여넣고
실행시켜 보세요.....
참고로 db에 빈 칸으로 되어 있는 곳(4군데) 값을 0으로 넣으세요
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<?php
$con = mysql_connect("호스트명", "아이디", "비번");
mysql_query("set names utf8");
$con_db = mysql_select_db("db명");
echo menu();
function menu($id = "")
{
$output = "";
$sql = "select * from 테이블명";
if( $id == "" )
{
$sql .= " where p_id = 0";
}
else
{
$sql .= " where p_id = $id order by sortkey asc";
}
$result = mysql_query($sql);
if( mysql_num_rows($result) > 0 )
{
$output = "<ul>\n";
while( $row = mysql_fetch_assoc($result) )
{
$output .= "<li>".$row["name"]."\n";
$output .= menu($row["id"]);
$output .= "</li>";
}
$output .= "</ul>\n";
}
return $output;
}
?>