정리노트/팀프로젝트

[팀 프로젝트] 24.02.26. 노트

망고고래 2024. 2. 26. 18:00

오늘 할 일

리뷰 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. 리뷰 삭제

삭제는 금방 할 것 같다.