본문 바로가기

국비과정/팀프로젝트

[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>

 

으로 했었는데 다시 전체글로 바꿈

 


https://xn--yq5bk9r.com/

 

웹툴.com

웹에서 바로 사용할 수 있는 웹툴을 제공합니다. 지도 위도 경도 검색, 로또 번호 생성기, 퍼센트 계산기, 퓨니코드 변환기, TTS 프로그램, 텍스트비교, UserAgent확인, 대소문자변환, 단축 URL 검사

xn--yq5bk9r.com

 

이모티콘

'국비과정 > 팀프로젝트' 카테고리의 다른 글

[SellAS] 페이징  (0) 2023.11.03
[팀] 스크롤페이징  (0) 2023.11.03
[팀] 스크롤 관련 자료  (0) 2023.10.20
[ 팀 ] 카카오지도 API  (0) 2023.10.17
[팀플] DongneBook_ 자동로그인  (0) 2023.09.27