CI 묻고 답하기

제목 계층형 댓글 정렬 질문입니다.
카테고리 CI 2, 3
글쓴이 if(money>0)happy 작성시각 2017/07/20 17:16:38
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 20895   RSS
if(money>0)happy

안녕하세요 선배님들.

CI를이용해서 NA*VER 카페를 그대로 따라만드는 연습을 하고있습니다.

조금 외람된 질문일수도있지만, 혼자의 힘으로는 역부족이여서 선배님들께 도움을 구하고자 질문하려고합니다.

댓글 정렬의 문제입니다.

1번의 사진처럼 대댓글의 순서를 최신순서가 아래로 가게끔 정렬을 시키고싶습니다.

하지만 저의 경우는 2번처럼 최신의 글이 위로 올라오고 정렬을 바꾸면 계속 흐트러져서 어떻게 해결해야할지 잘 모르겠습니다.

인터넷으로 여기저기 알아보고 혼자 공부하면서

테이블 설계는 이런식으로했습니다, 어떻게 1번의 사진처럼 정렬을 할 수 있나요? ㅠㅠ 

---------------------------------------------------------------------------------------------------------------------

seq : 고유글번호(AUTO INCREMENT)

bid : 게시물 글번호(상세보기페이지들어갔을경우 현재보고있는 페이지의번호) 즉 부모글번호가됨

pid : 댓글 부모글번호 (원본글일 경우 자신의 글번호) 대댓글(자식글) 일경우는 부모글의 seq 번호를 넣어줌

grpno : 그룹번호

grpord : 그룹정렬

depth : 순서

---------------------------------------------------------------------------------------------------------------------

* 참고로 depth 는 최대 2까지밖에 증가하지않습니다. 

depth : 0원본댓글, depth : 1 대댓글, depth : 2 대댓글의 댓글 

-- 테이블 설계가 잘못 되었다면 다시 설계해도좋으니 알려주신다면 감사하겠습니다 --

알아본 바로는 ORDER BY 절에 조건을 따로 줄수가있다고하는데 어떻게 정렬 순서를 시켜줘야하는지 모르겠습니다.

초보라서그런지 개념이 많이 부족합니다..

도움 부탁드립니다!!

 

 다음글 제이슨 형식으로 db에 값 넣은 후 수정하기하면 값이 ... (1)
 이전글 $this->db->query(); 오류가 ... (1)

댓글

마PD / 2017/07/20 17:23:57 / 추천 1

order by 절에서 날자 부분으로 정렬을 하시던가,

댓글 고유 번호로 정렬을 하시면 고유 번호가 높은게 무조건 나중에 달린 댓글일테니 정렬이 잘 될거 같습니다. :)

마PD / 2017/07/20 17:25:01 / 추천 1

하나의 쿼리문으로 뿌려줄 순서에 맞게 불러와서 단순히 반복을 돌면서 뿌려주시는건지,

각 댓글을 출력하면서 대댓글이 있는지를 체크하시는지 방법에 따라 다르겠지만 원하시는 쿼리문에 order by 로 정렬 조건만 잘 넣어주시면 될거 같아 보입니다.

if(money>0)happy / 2017/07/20 17:46:36 / 추천 0

// 마PD

답변 감사합니다. 

고유번호로 정렬을 하면 1-3의 같은경우가 맨 아래로 가게되어서 문제가됩니다..

쿼리문은 이렇게 작성되어있습니다.

SELECT seq,bid,pid,grpno,grpord,depth,com_content,com_is_delete,com_is_list FROM board_comments
ORDER BY seq ASC,grpno ASC, grpord DESC

 

if(money>0)happy / 2017/07/21 09:27:15 / 추천 0

자답입니다.

사진에있는 테이블에는 안보이지만 날짜컬럼도있습니다 그래서 정렬순서를

grpno ASC, com_wdate ASC, grpord ASC;

이런식으로 최신순을 가져올때 정렬하고

등록순은

grpno DESC, com_wdate ASC, grpord ASC; 

이런식으로 그룹넘버의 정렬순서만 바꿔주면됩니다.