soozya
[BACK] 상품 검색하기 본문
[👩🏻💻소스코드]
[상품 검색하기]
(searchDAO.java)
//상품들을 검색하자
public int ItemSearchCount(String search, String searchtext){
int x=0;
try {
con=pool.getConnection();
System.out.println("con="+con);
if(search==null || search.equals("choose")) { //검색분야(카테고리) 선택하지 않은 경우
sql= "SELECT * FROM item_info WHERE item_name LIKE '%" + searchtext + "%'";
//sql="SELECT item_info.*, Category.* FROM item_info JOIN Category on item_info.category_num = category.category_num";
System.out.println("이너조인 확인");
}else { //상품명만
if(search.equals("item_name")) { //상품명만
sql="select count(*) from item_info where item_name like '%"+ searchtext +"%'";
System.out.println("상품명");
}else{
sql="select count(distinct item_info.item_name) from item_info inner join category on item_info.category_num = category.category_num where item_info.item_name like '%"+
searchtext +"%' and category.category_num like '%"+ search +"%'";
System.out.println("카테고리+상품명");
}
}
System.out.println("ItemSearchCount() 확인!");
pstmt=con.prepareStatement(sql);
rs=pstmt.executeQuery();
if(rs.next()) { //결과가 있다면
x=rs.getInt(1);
}
}catch(Exception e) {
System.out.println("ItemSearchCount() 오류: "+e);
}finally {
pool.freeConnection(con, pstmt, rs);
}
return x;
}
(SEARCHListAction.java)
package action;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.searchDAO;
public class SEARCHListAction implements CommandAction {
@Override
public String requestPro(HttpServletRequest request, HttpServletResponse response) throws Throwable {
// TODO Auto-generated method stub
String pageNum=request.getParameter("pageNum");
String search=request.getParameter("search");
String searchtext=request.getParameter("searchtext");
System.out.println("itemlistAction의 매개변수 확인");
System.out.println("search: "+search+",searchtext: "+searchtext);
int count=0; //총 결과 수
List itemList = new ArrayList(); //화면에 출력될 상품 저장
searchDAO scPro=new searchDAO();
count=scPro.ItemSearchCount(search, searchtext);
Hashtable<String, Integer> pgList=scPro.pageList(pageNum, count);
if(count>0) {
System.out.println(pgList.get("startRow")+","+pgList.get("endRow"));
itemList=scPro.ItemSearchList (pgList.get("startRow"), //첫번째 레코드 번호
pgList.get("endRow"),
search, searchtext);
System.out.println("SEARCHListAction의 itemList="+itemList);
// }else { //count=0
// itemList=Collections.EMPTY_LIST;
}
request.setAttribute("search",search);
request.setAttribute("searchtext",searchtext);
request.setAttribute("pgList", pgList);
request.setAttribute("itemList",itemList);
return "/Search.jsp";
}
}
[💬설명]
1️⃣ 프론트 담당 팀원의 상품 검색페이지(Search.jsp)에 javaScript로 검색 조건 설정하기
◾ 물건 살때나 카테고리로 검색했지 만든건 처음이라 여기저기 열심히 검색해 봄
- 먼저 변수를 선언하기 위해 <select>의 id를 입력해주고, options에는 <select>의 option 요소를 선택해서 할당하도록 함
- selectedValue는 선태한 option내용을 변수 options에 할당하기
- const는 변수에 할당된 값을 변경할 수 없으나, let은 재할당(변경) 가능한!!
- case의 category_num은 sql 구문에서 사용됨~~
2️⃣ 상품 검색 결과를 위한 sql 구문
◾ 오류가 굉장히 많이 나왔는데, 어쨌든 해결 완...
1) 처음에 item_info 테이블의 item_name을 검색 시 중복되지 않도록 select distinct item_info.item_name from~으로 작성했었음..
상품의 이름을 검색해야되니까 그렇게 작성했는데, 상품수가 0으로 뜨고, 이미지 포함 결과가 아예 나오지 않았음
2) select count(*) from~으로 작성했더니 출력된 이미지 포함 결과 이미지는 1개가 뜨는데, 상품결과는 그 결과에 맞는 숫자가 뜸...
3) 그래서 아래 이미지의 sql 구문대로 select count(distinct item_info.item_name) from~ 으로 작성했을 때 정상적으로 결과가 나오는 것을 알 수 있음
[💻결과]
◾ 상품명 '캔들'의 분류는 데코이기 때문에 가구로 검색할 경우 검색 결과가 나오지 않음!
'👩🏻💻프로젝트 > 👥팀프로젝트' 카테고리의 다른 글
[BACK] 상품 결제하기 (0) | 2023.08.28 |
---|---|
[BACK] 글 삭제하기 (0) | 2023.08.03 |
[BACK] 글 수정하기 (0) | 2023.08.02 |
[BACK] 게시판 글 쓰기, 상세보기 (0) | 2023.07.29 |
[BACK] 게시판 글 목록 보기 (0) | 2023.07.20 |