Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

soozya

[BACK] 상품 검색하기 본문

👩🏻‍💻프로젝트/👥팀프로젝트

[BACK] 상품 검색하기

soozya 2023. 8. 9. 01:37

[👩🏻‍💻소스코드]

 

[상품 검색하기]

(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