자바스크립트를 이용해 데이터를 정렬 시킬려고 하는데.....
글쓴이: moonrepeat / 작성시간: 목, 2005/07/14 - 2:01오전
음..... 현재 db에 자료가 있습니다.
일단 테이블은 대충 아래와 같습니다.
create table test_level ( id char(4), name varchar(10), upper_id char(4), constraint fk_test_level foreign key (upper_id) references test_level (id), constraint pk_test_level primary key (id) )
위 테이블에서 제가 의도한 바는 계급의 트리구조를
저장하기위해 만약 최상위 계층이면 id와 upper_id
가 동일하게 만약 하위노드면 자신의 상위노드를 up
per_id를 통해 지시하는 테이블을 의도했습니다.
그리고 대충 jsp를 통해 자료를 빼는것 까지는 문제가
없었는데 이놈을 트리 구조로 나타낼려고 하니 난감하
더군요..... 대충 재귀호출을 쓰면 될것 같지만 자바스크
립트 자체를 써본적이 없는지라. 도대체 어떻게 해야 될
지 모르겠습니다.
(참고로 학교 리포터나, 숙제 절대 아닙니다.)
일단 대충 jsp를 이용해 아래와 같이 자료를 추출했고
var level_db = new Array() level_db[1] = new dbRecord('0002','0001','부사장') level_db[2] = new dbRecord('0003','0002','전무') level_db[3] = new dbRecord('0007','0006','팀장') level_db[4] = new dbRecord('0001','0001','사장') level_db[5] = new dbRecord('0004','0003','상무') level_db[6] = new dbRecord('0005','0004','부장') level_db[7] = new dbRecord('0006','0005','과장') level_db[8] = new dbRecord('0008','0007','대리') level_db[9] = new dbRecord('0009','0008','사원')
이걸 계층형식으로 해야 되는데 조언 부탁드립니다.
마지막으로 구현환경은 windows 2003 + mssql200 + tomcat + iis 입니다....... :oops: :oops:
Forums:
요기 가보세요~
http://webfx.eae.net/dhtml/xtree/
http://www.softcomplex.com/products/tigra_tree_menu/
이거 말고도 자바 스크립트 사이트 가서 tree 쳐보시면
소스 많이 있구요 요구 형식대로 jsp 를 이용해서 출력 해주면
알아서 트리 생성할겁니다.
전 군대 있을때 (전산병) 위에 타이그라 트리메뉴 이용해서 프로젝트
했었어요. jsp 하고 섞어서요. 조금이나마 도움이 되었길 바랍니다.
답변 주신분 감사합니다.일단 위의 사이트를 가서 소스를 봤습니다. 그
답변 주신분 감사합니다.
일단 위의 사이트를 가서 소스를 봤습니다. 그런데 위 소스는 jsp로 정렬을
해서 자바 스크립트로 넘겨 줘야 하더군요.
그래서 다시 질문합니다.
만약 제가 자바에서
이런식으로 배열을 선언했을 경우
아래와 같이 정렬을 시킬려면 어떻게 해야합니까?
참고로 level_data[][0] == level_data[][1] 일 경우 최상위
계층으로 인식하고 여러개의 최상위 계층이 존재가 가능하며
최상위 계층이 여러개일 경우 하나의 최상위 계층을 먼저 정렬
시키고 다음걸 정렬 시켜야 합니다.
고수님들의 답변 부탁드립니다.
삽질은 계속되어야 한다....... 쭉.........
table 에서 읽어오실 때 정렬해서 읽으시는게 낫지 않나요?프로
table 에서 읽어오실 때 정렬해서 읽으시는게 낫지 않나요?
프로그램에서 어렵게 고민하시는 이유라도 있으신지.
[quote="dsh"]table 에서 읽어오실 때 정렬해서 읽으시는게
님 제가 쿼리를 잘 못날리겠습니다. 전에도 시도 했다가 시간만 허비하고 말았습니다.
제발 한번만 select문 좀 만들어 주세요 ㅠ.ㅠ
삽질은 계속되어야 한다....... 쭉.........
예시한 내용이야 order by upper_id desc 만 줘도 나오는
예시한 내용이야 order by upper_id desc 만 줘도 나오는 결과 같은데요. :?
오라클 사용하시면 sql reference 에서 hierachical query 찾으시면 도움이 되실 거 같네요.
음..... 일단 예시는 간단히 보이게 할려고 그런거고실제로는 id는
음..... 일단 예시는 간단히 보이게 할려고 그런거고
실제로는 id는 뒤죽 박죽 입니다.
즉 알 수 있는 정보라고는 id와 upper_id가 동일하면 최상위이고
최상위 계체가 아니면 upper_id를 통해서 하나 씩 찾아야 합니다.
ㅠ.ㅠ
삽질은 계속되어야 한다....... 쭉.........
음... 제 생각에는 최상위 노드를 찾은 다음에각 최상위 노드를 기준
음... 제 생각에는 최상위 노드를 찾은 다음에
각 최상위 노드를 기준으로 트리를 생성 하시고
preorder tree traversal 해서
배열로 전환하셔야 될 것 같습니다.
좀 더 나은 방법이 있을지도 모르겠습니다만
지금으로선 한번에 정렬된 배열을 뽑는 방법이 떠오르지 않는군요.
2005년 7월 14일.
:oops: :oops: 일단 아래와 같이 재귀 호출을 써서 만
:oops: :oops:
일단 아래와 같이 재귀 호출을 써서 만들어 봤는데 에러가 뜨는군요.....
(제가 할줄 아는게 C언어만 조금 할줄 알지 java나 jsp는 전혀 할 줄 모릅니다.)
재귀 호출시 걍 몽땅그리 배열을 넘기게 되어 있는데 이래도 되는지 모르겠고
(뭐 여하간 작동이 안되니.....)
대충 미치 겠습니다.......
고수님들 소스보시고 잘못 되곳좀 지적해주세요
참고로 아래는 위 소스에 사용된 쿼리문 결과입니다.
그리고 에러 화면입니다.
삽질은 계속되어야 한다....... 쭉.........
저도 JSP 나 Java는 전혀 모릅니다 :(다만 소스 코드를 보니
저도 JSP 나 Java는 전혀 모릅니다 :(
다만 소스 코드를 보니 약간 이상한 점이 있군요.
lineup_data 함수에서
s2 = s[i][0] + "," + s[i][1] + "," + s[i][2] + "<br>";
이게 아니라.
s2 += (s[i][0] + "," + s[i][1] + "," + s[i][2] + "<br>");
이렇게 되야할 듯 싶습니다.
max_count 구하기 위한 첫번째 SQL 쿼리문에서는 d_l_no != d_l_upper 하셨으니,
두번째 SQL 쿼리문 적으실때도
SQL="select d_l_no,d_l_upper,d_l_name from level where d_l_no != '0000' and d_l_no != '9999'";
가 아니라
SQL="select d_l_no,d_l_upper,d_l_name from level where d_l_no != '0000' and d_l_no != '9999'" and d_l_no != d_l_upper;
라 생각됩니다.
아마 error code 500 에 full stack 어쩌구 그런거 보니
재귀호출에서 배열을 몽땅 넘긴게 문제가 있지 않은가.. 추측됩니다 ???
ArrayIndexOutOfBoundsException이니, [][]에
ArrayIndexOutOfBoundsException이니, [][]에 넘겨지는 변수값을 println해보면 알텐데요.
JSP라도 가급적이면 .java로 먼저 코드를 작성해 보고 테스트가 된 후에 jsp에 붙여 넣는 것이 좋습니다.
----
I paint objects as I think them, not as I see them.
atie's minipage
일단 어니스트 님의 조언 덕분에 대충 해결했습니다.그런데 제가 jsp
일단 어니스트 님의 조언 덕분에 대충 해결했습니다.
그런데 제가 jsp가 처음이라 atie님 말대로 (이 걸 의도 하신지 확실치 않지만)
함수에서 out.println 으로 하나 씩 출력하게 했는데 함수내에서 out.println
을 넣으니 에러가 뜨더군요........
여하간 스택에 무리는 가겠지만 해결하긴 했습니다.
삽질은 계속되어야 한다....... 쭉.........
댓글 달기