CI 묻고 답하기

제목 CI 게시판 검색기능 질문입니다.
글쓴이 루비콘 작성시각 2016/01/15 17:10:18
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 14564   RSS

위에 사진을 보시는거 처럼 셀렉트 박스를 원장으로 선택하고 원장이라는 텍스트를 입력하면 

아래 사진처럼 pname 이 원장이랑 정확히 일치하는 녀석만 긁어 옵니다.여기까지 문제는 없는데

문제는 컨트롤단 소스에 보시는 바와 같이



		$check = $this->CI->dgc_edu_trade_1_0_m->view($item,$value);
		if($check[$item]==$value){

이 구문의 $check[$item]이 빈값이라는 겁니다.

$check에는 밑에 사진과 같이 사용자가 입력한 정보들이 정상적인 배열의 형태로 담겨있는데

해당 배열의 $item 번지의 값과 사용자가 입력한 $value 값이 일치하면 있음 

아니라면 없음이 떠야 정상적인 코드인데

 

$check 에는 DB 에 있는 값들을 정상적인 배열 형태로 가져오는데

왜 $check['$item']에는 빈값을 가져오는지를 모르겠습니다.

 

pname 을 빈값으로 검색했을때

 

 

 

모델

	function view($item,$value){
//echo $value;
//echo $item;
//exit;
		if($item!=""){
			$this->db->select("*");
			$this->db->from("dgc_edu_trade_1_0");
			$this->db->order_by("no", "desc");
			$this->db->where($item,$value);
			$this->db->like($item,$value,'both');
		}else{
			$this->db->select("*");
			$this->db->from("dgc_edu_trade_1_0");
			$this->db->order_by("no", "desc");
		}

		$result = $this->db->get()->result_array();
		//etcOption 처리
	foreach($result as $key=>$list){
		$result[$key]['etcOption'] = unserialize($list['etc_option']);
	}
		return $result;
	}

컨트롤

 다음글 ajax 공부중입니다. (4)
 이전글 쿼리 질문 입니다. (3)

댓글

루비콘 / 2016/01/15 17:23:32 / 추천 0

요약해서 말씀드리자면 $check에는 값이 정상적으로 DB에서 LIKE SQL 사용한 결과가 정상적으로 배열형태로 담겨서 넘어옵니다.

 

하지만 $check[$value]를 사용해서 사용자가 입력한 값과 DB에 해당하는 정보가 일치하면 그걸 보여주고 싶은데

$check의 [$item] 번지에는 아무값도 없다고 나옵니다 ㅠㅠ

 

사용자가 셀렉특 박스를 선택을 한다 $item 에 pname 이란 값이 자동으로 담긴다.

입력박스에 입력을하면 $value 라는 변수에 값이 저장되어 컨트롤로 넘어간다.

 

컨트롤러에서는 사용자가 입력한 두가지 $value 와 $pname 값을 정상적으로 가지고 있다가 db 로 넘겨준다

db 에서는 해당 두가지 변수로 SQL 문을 실행하여 Like 문 즉 DB 에 있는 pname 이라는 항목에서 사용자가 입력한 값과 일치하는 값이 있는지 찾아서 다시 컨트롤러 로 뿌려준다 이때 $check라는 변수에 배열형태로 모든 정보를 담아준다.

그리고

$check 에 담겨진 배열의 정보들을 가지고 사용자가 입력한 값과 일치하면 일치하는 항목들을 보여준다 

여기서 $check[$value]라는 값과 $value 값을 비교를 한다.

하지만 check 의 $value 번지에는 아무값도 없는 값이 나온다. 고로 비교불가

 

이게 지금 제가 짠 루틴입니다.

변종원(웅파) / 2016/01/16 13:07:18 / 추천 0

결과를 하나만 가져와야 하는거면 result_array() 대신에 row_array()를 사용해야 원하시는 대로 $check[$item]을 쓸 수 있습니다.

 

result_array()는 올려주신 내용처럼 여러개의 배열값을 가져와서 0, 1 이라고 나와있습니다.

result_array()를 쓸때는 $check[0][$item] 이라고 써야합니다.

루비콘 / 2016/01/18 09:09:19 / 추천 0

정확한 지적과 답변 감사합니다 제가 바보였네요 ㅠㅠㅠㅠㅠ저기 떡하니 0번째 배열부터 값이 들어있다고 나와있는데 그걸 보질 못했네요 ㅠㅠㅠㅠㅠㅠ감사합니다!