까오기 카테고리 생성기 입니다.
이걸 뭐에다 쓸까 고민 하시는 분 그냥 생각 마시고 보세요
무지 단순한 소스 ^^ 늘 그렇듯이....
환경 : tomcat - apache - oracle8.16 - win2000 - jdk1.3.1
적용범위 : 각종 쇼핑몰, 커뮤니티 사이트,디렉토리 만들기 등 카테고리가 필요한 사이트
테스트 방법 :
먼저 압축을 풀으세요
README 폴더안에 category.sql의 내용을 오라클에 설치하세요
그리고 내용물 최상위에 복사하세요(죄송합니다. 제가 코딩을 그렇게 해놔서 편하게 고칠려해도.... 다 절대경로라)
그리고 indext.jsp를 열어보세요 그럼 아래처럼 두개가 보일겁니다.
1. Category regist
2. Category view
카테고리 등록을 클릭하시고 한번 등록해보세요
등록/수정/삭제를 테스트 하셨나요
그럼 어떻게 첫페이지로 갈까요? 알아서 가세요 그런 버튼 다 지우고 보내는 거라...
그다음 2.Category view클릭해보세요
이건 뭐냐 하면 제가 그냥 단계를 딱 2단으로만 주고 freechal 흉내 낸겁니다.
그러니 이거 확인 하고 싶으시면 그냥 2단계만 만드세요 3단이상가면 엉망이 될겁니다. 그냥 단순 테스트겸...
나중에 응용은 직접 만들어 테스트 하시고요
음 이제 아래는 설명임다.
아마 초보가 만들었지만 유용하지 않을까 싶네요
---------------------------------------------------------------------
sql :
CREATE TABLE category (
num NUMBER constraint category_pk_num Primary Key,
acode varchar2(20) NOT NULL,
bcode varchar2(20) NOT NULL,
title VARCHAR2(30) NOT NULL
);
create index category2_indx on category(bcode);
create index category_indx on category(title,bcode);
---------------------------------------------------------------------
num : 1씩 증가하는 값으로 고유값입니다.
acode : 카테고리 그룹, 자신의 level을 가르키며, 자신이 속한 상위 단계를 알수 있습니다.
bcode : 카테고리 그룹내 구별자, 같은 단계에서 구별할 수 있는 고유값입니다. 그리고 이값을 아랫단계의 acode에 전달합니다.
title : 말그대로 "전자제품" 또는 "가전제품" 등의 이름이 들어가겠죠 ^^
description : 제일 상위 단계에서 acode는 임으로 정합니다. 전 "category"라고 하고 사용하고 있습니다.
여기서는 그냥 "aaa"라고 하겠습니다.
젤먼저 저장을 하겠습니다. 방법은 게시판에서 글삽입하는 거랑 별 차이가 없습니다.
insert.....
num acode bcode title
1 aaa aaa01 기관/단체
소스를 보시면 알겠지만 acode는 가장큰 대분류에서는 "aaa"가 들어가고
bcode는 aaa + num(만약 한자리면 0이 붙습니다. 왜냐구여? 음 필요해서요 나중 설명)으로 입력됩니다.
그럼 자신이 대분류인지 중분류인지 소분류인지 세분류인지 어찌 아냐구여
보내는 페이지에서 선택해서 hidden 값으로 보내게 했습니다.
그리고 그냥하면 이렇게 될겁니다.
aaa01172349
엑 이게 뭐지? 그냥 붙이기만 하시면 나중에 큰번호가 들어갈때 엉망 징창이 되겠죠
그러니 사이에 뭐좀 넣었습니다.
second -> s
third -> t
forth -> f
그래서 acode + 문자 + num....
그럼 결과는 aaa01s09t27f60 이렇게 됩니다.
이렇게 해야 나중에 위아래를 추적해 삭제할 수 있는 여지도 생깁니다.
삭제는 조금 후에...
next
이런식으로 세개를 입력했다 치고요
num acode bcode title
1 aaa aaa01 기관/단체
2 aaa aaa02 컴퓨터/인터넷
3 aaa aaa03 게임
아랫 단계를 입력해 보겠습니다. 음 저는 4단계까지만 했습니다.
해당 분류를 클릭하면 주소창을 보시면 값이 이렇게 넘어가는 걸 보실 수 있을 겁니다.
여기서 mode는 현재 페이지가 등록인지, 수정인지, 삭제인지를
codeLevel1은 1단계 level1을
codeLevel2은 2단계 level2을 가르키며
이값들이 처리 페이지로 가면 level1이면
acode = codeLevel1
level2이면
acode = codeLevel2
...
...
나머진 소스를 보세요
이렇게 해서 입력이 되면
num acode bcode title
1 aaa aaa01 기관/단체
2 aaa aaa02 컴퓨터/인터넷
3 aaa aaa03 게임
4 aaa01 aaa01s04 청와대
5 aaa01 aaa02s05 동사무소
6 aaa02 aaa03s06 프로그래머
보시면 알겠지만 acode는 항상 그룹이 되고 bcode는 그 그룹의 구별할수 있는 값이 됩니다.
4번하구 5번은 1번의 아래에 있습니다.
6번은 2번의 아래 있습니다.
이런식으로 쭈~~~욱 입력을 합니다.
불러오긴 쉽겠죠
최상위만 불러오기
String query =
"select /*+ index(category category2_indx) */ acode,bcode, num, title from category where acode='category'"
해당 sub category 불러오기(클릭하면 bcode를 넘겨서...)
String query =
"select /*+ index(category category2_indx) */ acode,bcode, num, title from category where acode='"+bcode+"'";
뭐 대강 이런식으로 하면 별문제 없으리라 생각 됩니다.
이렇게 하신후 원하는 상품이나 내용을 입력할때 해당부분의 sql table에 code를 입력하는 칼럼을 만들어
거기다 bcode를 삽입하시고 불러오면 되겠죠 ^^
그다음 수정...
번호넘겨서 수정 하십시오
그다음 삭제
만약 당신이 2번째 단계의 category중 하나를 삽입하고 싶으시다면.....
그 아래 단계들 까지 모조리 삭제하셔야 겠군요.
how?
그냥 지우져 뭐
queryDel = "delete from category where acode LIKE '"+bcode+"%' or bcode='"+bcode+"'";
acode LIKE '"+bcode+"%' => 아래 단계들
bcode='"+bcode+"'" => 자기 자신.
이게 맞는 거냐구여 해보세요
제가 초본거 모르시는 분 없을테니 ^^
누가 야 이렇게 해야지 그럼돼!
하고 소리치시면 전 네 하고 고쳐봐야죠
이젠 소스를 보세요
별로 어려운건 없을 겁니다.