[팀 프로젝트] 24.02.26. 노트
오늘 할 일
리뷰 update, delete 코드 작성(관리자 - member 관리처럼 파라미터로 num값 가져가서 하면 될 듯)
앞으로 할 일
1. 지도 API 사용해서 여행코스 만들기
- 코스간 이동 거리
- 필요 비용
- 예상 유류비
- 여행지 비용 발생시 계산해서 총액
2. 고속도로 휴게소 표시
1. 리뷰 업데이트 폼 요청
2. 리뷰 업데이트
Controller
if: 세션id와 리뷰 작성자 id가 같을 경우 수정
(id, Review, 카테고리)
Repository
"UPDATE" + category + "_review SET rev_star = ? rev_text = ? WHERE mem_id = ? AND contentSeq = ?"
그런데 지금 UI가
이런데 여기서 리뷰 출력 위치 그대로 유지하면서 form으로 바꿀 수가 있나? 수정할 때는 새로 팝업창을 띄울까
수정 페이지 호출할 때 파라미터로 카테고리명을 줘야 함
update랑 delete 전담하는 리뷰 컨트롤러를 따로 만들까? 그러면 뷰페이지로 복귀할 때는 받아온 카테고리명 써서 돌아가면 되나
리뷰 부분을 모듈로 분리했으면 그냥 다 따로 관리하면 될 텐데 모듈로 만들어서 include 했더니 출력이 안 돼서...다시 해볼까
업데이트 한 다음에 팝업창이 닫히고 원래 페이지가 새로고침 되게 해야 함...
팝업 띄우지 말고 자기가 쓴 리뷰가 제일 먼저 나오게 할까
리뷰 쓴 적이 있을 경우: 자기 리뷰 수정(처음에는 read only로만 돼있다가 수정 버튼 누르면 수정으로 바뀌면 좋겠지만 일단은)
리뷰 쓴 적이 없을 경우: 리뷰 작성란
생각해보니까 보통 리뷰 적는 데는 이렇게 한다 애초에 아이디당 리뷰는 하나만 있어야 되잖아
이러면 맨 처음에 자기가 쓴 리뷰가 나오고 수정할 수 있어야 함
뒤의 리뷰 목록에는 자기가 쓴 리뷰가 없어야 함
어떻게....??
3. 리뷰 삭제
Controller
if: 세션 id와 리뷰 작성자 id가 같을 경우 삭제
(id, Review, 카테고리)
Repository
DELETE FROM (category)_review WHERE mem_id = '(review.mem_id)' AND content_seq = '(review.contentSeq)';
내일 할 일
1. 리뷰 출력
가장 처음에는 자신의 리뷰를 출력한다.(그냥 읽기로만 출력하고 수정 버튼을 누르면 수정 form이 되게 하고 싶다...)
이후에 나오는 리뷰 목록에는 자신의 리뷰를 제외한다.
현재 진행도
<%
int verify = (int)request.getAttribute("verify");
if(verify == 1){
%>
<div name="리뷰" class="p-5" style="width: 32%; margin-right: 1%; border-radius: 10px; height: 400px; padding-top: 5px !important;">
<p style="margin-bottom: 5px">나의 리뷰</p>
<c:url value="/hotels/review/update" var="update_url"/>
<form:form modelAttribute="NewReview" class="form-horizontal" action="${update_url}">
<div class ="star_rating">
<c:forEach begin="1" end="5" var="i">
<span class="star ${i <= myReview.star ? 'on' : ''}" value="${i}"></span>
</c:forEach>
<!-- hidden input 추가 -->
<input type="hidden" id="starValue" name="star" />
</div>
<form:textarea path="text" class="star_box" placeholder="리뷰 내용을 작성해주세요. (최대 200자)" maxlength="200" value="${myReview.text}" />
<input type="submit" class="btn02" value="리뷰 등록"/>
</form:form>
</div>
<%
}else{
%>
<div name="리뷰" class="p-5" style="width: 32%; margin-right: 1%; border-radius: 10px; height: 400px; padding-top: 5px !important;">
<p style="margin-bottom: 5px">리뷰 작성</p>
<form:form modelAttribute="NewReview" class="form-horizontal">
<div class ="star_rating">
<span class="star" value="1"> </span>
<span class="star" value="2"> </span>
<span class="star" value="3"> </span>
<span class="star" value="4"> </span>
<span class="star" value="5"> </span>
<!-- hidden input 추가 -->
<input type="hidden" id="starValue" name="star" />
</div>
<form:textarea path="text" class="star_box" placeholder="리뷰 내용을 작성해주세요. (최대 200자)" maxlength="200" />
<input type="submit" class="btn02" value="리뷰 등록"/>
</form:form>
</div>
<%
}
%>
verify == 1일 때 '나의 리뷰'가 잘 출력됨
DB의 리뷰 내용이 출력되지 않음
다른 항목은 다 출력되는데 별이랑 텍스트만 null로 나온다.
review.mem_id: id
review.star: null
review.text: null
review.contentSeq: 14
review.date: 2024-02-23 16:57:28
컬럼명이랑 도메인 값이랑 달랐다!!!!!!
해결함
뷰에 출력 안 되는 건 해결 못 함...
완성 후 작성자 id와 현재 로그인한 id가 같은지 확인하는 과정 추가
2. 리뷰 업데이트
업데이트 쿼리 자체는 완성했다.
출력 코드 수정하고 잘 작동하는지 확인
3. 리뷰 삭제
삭제는 금방 할 것 같다.