2011-03-28 1 views
0

필자에게는 범주가 있으며이 범주는 5 단계에서 하위 범주로 나뉩니다. 모든 범주의 범주에서 올바른 방식으로 데이터에 액세스하는 방법을 정의하고자합니다.중첩 된 범주를 나타내는 드롭 다운 메뉴 작성하기

food 

* indian 
    japanis 
    chaines 
    american 
    southex 

:

Full Texts  id cat_id subcat_id cat_name subcat_name status 
Edit Delete 1  0  0  food    2 
Edit Delete 2  1  0  indian    1 
Edit Delete 3  2  0  japanis    1 
Edit Delete 4  3  0  chaines    1 
Edit Delete 5  4  0  american   1 
Edit Delete 6  5  0  southex    1 
Edit Delete 7  1  2  indian  up  0 
Edit Delete 8  1  2  indian  delhi 0 

아래에 주어진 .I 우리가 모든 필드를 데이터를 얻을 수있는 그것을 위해 기능을 만들고 싶어 5 하위 범주를 포함 5 종류가 포함되어 단일 루트 카테고리 음식이있다 저를 도와주세요 드롭 다운에서

indian 
    up 
    delhi 

.......

+0

이러한 종류의 질문에는 자동으로 "아직 다른 드롭 다운 메뉴 질문"이라는 태그가 붙어 있습니다. Google이 아닌 10 억 가지 예제 중 하나를 찾아야하는 이유는 무엇입니까? –

답변

0

당신은 subcatid 필요하지 않습니다. Catid가 충분합니다. 여러 개의 레이어가 필요한 경우 첫 번째 레벨 catid의 parentid가 -1 또는 0으로 설정된 parentid를 추가하십시오. 동일한 테이블에서 EMPLOYEE와 해당 관리자의 관계를 볼 수있는 Oracle의 EMP 테이블을 참조하십시오.

동일한 테이블에서 cat_id/catname/subcatid/subcatname을 사용하는 이유를 모르면 데이터베이스 정규화에 대해 알아야합니다. 그것은 거대한 중복입니다. (유용 할 수 있지만 귀하의 경우에는 거의 확실하지 않은 경우가 있습니다.)

0

이 표는 최적이 아닙니다 ... 쓸모없는 두 개의 열이 있습니다. "id", "parent_id"및 "name"이 필요합니다.

"parent_id"열에서 ROOT를 제외한 모든 레코드가 상위를 가지기 때문에 특정 행이 속한 레코드에 대해 전역 "id"를 넣어야합니다. 그렇다면 하위 수준의 수를 걱정할 필요가 없습니다.

[id] [parent_id] [name] 
1 0   food 
2 1   indian 
3 1   japanis 
4 1   chaines 
5 1   american 
6 1   southex 
7 2   up 
8 2   delphi 

레벨 1 카테고리는 쿼리를 사용하여 필터링하는 "테이블 _ * FROM WHERE PARENT_ID = '1'"여기서 ID = 1 카테고리 "음식"(루트)에 대한 행 번호이다. 동일한 방법으로 다른 모든 레벨을 필터 할 수 있습니다. "indian"에 대해서는 id = 2입니다.

페이지의 드롭 다운을 동적으로 변경하려면 JavaScript 코드 (사전로드 값, 쉬운 방법) 또는 Ajax (온 - 플라이 업데이트, 조금 더 열심히)