[SellAS] 멀티보드 정리
boardview
> member 테이블과 join해서 nickname 가져오기 위해
> board테이블에서 bdelete가 1 or 2 인 댓글만 가져오기 위해
> comment 테이블에서 cdelete가 1 or 2 인 댓글의 갯수(commentcount)를 가져오기 위해
select `b`.`bno` AS `bno`,`b`.`sno` AS `sno`,`b`.`btitle` AS `btitle`,
`b`.`bcontent` AS `bcontent`,`b`.`bread` AS `bread`,`m`.`mnickname` AS `mnickname`,
if((date_format(now(),'%Y-%m-%d') = date_format(`b`.`bdate`,'%Y-%m-%d')),date_format(`b`.`bdate`,'%H:%i:%s'),date_format(`b`.`bdate`,'%Y-%m-%d')) AS `bdate`,(select count(0) from `comment` where ((`comment`.`bno` = `b`.`bno`)
and ((`comment`.`cdelete` = 2) or (`comment`.`cdelete` = 1)))) AS `commentcount`,
`m`.`mno` AS `mno`
from (`board` `b` join `member` `m` on((`b`.`muuid` = `m`.`muuid`)))
where ((`b`.`bdelete` = 2) or (`b`.`bdelete` = 1))
order by `b`.`bno` desc
** bdelete = 2 (기본값) & bdelete = 1 (글수정) 인것을 함께 불러와야 한다.
commentview
> member 테이블과 join해서 nickname 가져오기 위해
> comment 테이블에서 cdelete가 1 or 2 인 댓글만 가져오기 위해
select `c`.`cno` AS `cno`,`c`.`bno` AS `bno`,`m`.`mnickname` AS `mnickname`,`c`.`ccontent` AS `ccontent`,
if((date_format(now(),'%Y-%m-%d') = date_format(`c`.`cdate`,'%Y-%m-%d')),date_format(`c`.`cdate`,'%H:%i:%s'),date_format(`c`.`cdate`,'%Y-%m-%d')) AS `cdate`,`c`.`clike` AS `clike`
from (`member` `m` join `comment` `c` on((`c`.`muuid` = `m`.`muuid`)))
where ((`c`.`cdelete` = 2) or (`c`.`cdelete` = 1))
** cdelete = 2 (기본값) & cdelete = 1 (댓글수정) 인것을 함께 불러와야 한다.
서버측
Map에서 뽑아낸 값은 Object 타입
@RequestParam 으로 잡아온 값은 String
jsp측
Map타입의 List를 model에 붙여 jsp로 보낸 후에 뽑아낸 bno값은 number
[ 댓글_ 수정&삭제_ jquery & ajax ]
아래처럼 컨트롤러에서 받아온 값인 comments (Map타입의 List)에서
forEach 문을 사용해서 댓글요소들을 하나하나 뽑아오는데
이때 댓글창을 감싸고 있는 commentBox (div)를 forEach문 내부에 넣어줘야
jquery 로 댓글을 하나씩 잡아올 수 있다. 계속 같은실수를 3번이나 했었으니 주의****
<c:choose>
<c:when test="${bdetail.commentcount eq 0}">
<div>댓글이 없습니다.</div>
</c:when>
<c:otherwise>
<button class="cWholeBtn" onclick="location.href='./commentDetail'">댓글 전체보기</button>
<c:forEach items="${comments }" var="comments">
<div class="commentBox">
<div class="cContent">
<div>${comments.mnickname } // <span>${comments.cdate }</span></div>
<div class="content">${comments.ccontent }</div>
</div>
<div class="commentsBtn">
<input type="hidden" class="cno" value="${comments.cno }" />
<button class="cedit">수정</button>
<button onclick="cdelete(${comments.cno })">삭제</button>
</div>
<hr>
</div>
</c:forEach>
</c:otherwise>
</c:choose>
[ MySQL 쿼리문 ]
boardMapper 에서 rowNum처리
<select id="boardList" parameterType="Integer" resultType="Map">
SELECT *, (SELECT COUNT(*) FROM boardview WHERE sno = #{cate}) AS count
FROM(
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS rowNum,
b.* FROM boardview b, (SELECT @ROWNUM:= 0) AS R
WHERE b.sno = #{cate}
ORDER BY b.bno ASC) bb
ORDER BY bb.bno DESC
LIMIT 0, 10
</select>
다음페이지 글 불러올때 rowNum처리
<select id="nextPage" parameterType="Map" resultType="Map">
<![CDATA[
SELECT *, (SELECT COUNT(*) FROM boardview WHERE sno = #{cate}) AS count
FROM(
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS rowNum,
b.* FROM boardview b, (SELECT @ROWNUM:= 0) AS R
WHERE b.sno = #{cate} and b.bno < #{lastbno}
ORDER BY b.bno ASC) bb
ORDER BY bb.bno DESC
LIMIT 0, 10
]]>
</select>
메인보드 정렬 조회순
<select id="mainList" parameterType="Integer" resultType="Map">
SELECT *
FROM(
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS rowNum,
b.* FROM boardview b, (SELECT @ROWNUM:= 0) AS R
ORDER BY b.bread DESC) bb
ORDER BY bb.bread DESC
LIMIT 0, 10
</select>
으로 했었는데 다시 전체글로 바꿈
웹툴.com
웹에서 바로 사용할 수 있는 웹툴을 제공합니다. 지도 위도 경도 검색, 로또 번호 생성기, 퍼센트 계산기, 퓨니코드 변환기, TTS 프로그램, 텍스트비교, UserAgent확인, 대소문자변환, 단축 URL 검사
xn--yq5bk9r.com
이모티콘