CI 묻고 답하기

제목 팝업창에서 우편번호 검색 질문 입니다.
글쓴이 꾸숑 작성시각 2013/04/29 23:41:34
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 17440   RSS

팝업창에서 우편번호 검색 작업을 하고 있는데 문제가 있어서 질문 드립니다.
쌩코딩으로 완성하여서 테스트를 마친후 ci의 MVC에 적용하는 과정에서 오류가 있습니다.

/////// 내용수정 04.30 07:16 //////////////
views/auh/search_zip.php 파일에서 검색을 하면
views/auh/search_zip.php 로 검색어 변수를 가져오는 데 성공 했습니다.
예를 들어 검색후에 <?echo $search;?> 이렇게 하면 검색어가 성공적으로 출력 됩니다.

그러나 우편번호 검색은 않되는군요.. 쿼리문은 이상없음을 테스트 했습니다.
이제 검색만 되면 되는데... 뭐가 잘못 일까요?
이게 안되면 잠자지 않을라고 다짐 했지만 눈이 눈이~~~~
////////////////////////////////////////////////////////


controllers/auth/search_zip

//우편번호 검색
 function search_zip(){
  if($this->input->post('search', TRUE))
  {
   $data2 = array('search' => $this->input->post('search', TRUE));
   $this->load->view('auth/search_zip', $data2);
   }else{
      $this->load->view('auth/search_zip');
  }
 }


views/auth/search_zip

<!-- opener부모페이지에 입력되는 코드
join 부분에 부모페이지 form name 을 입력하면 됩니다. 그다음이  필드네임임당~ -->
<script>
   function send( code1, code2, code3){
       opener.join.zipcode1.value = code1;
       opener.join.zipcode2.value = code2;
       opener.join.address1.value = code3;
    opener.join.address2.focus();
    window.close();
   }
</script>

 <table align=center>
<?=form_open("auth/search_zip")?>

<table>
  <tr>
     <td>
  <tr>
     <td>우편번호 검색
  <tr>
     <td>
  <tr>
     <td>
  <tr>
     <td> 찾을 주소의 동(읍/면)을 입력하세요 !!!<br><br>
<input type=text name=search size=50><input type=submit value= ' 검 색 '>

   <tr>
      <td>
   <div style="height:330; widht=400; overflow:auto">
        <table align=center>
     <?
      if(isset($search)){
     $this->db->select("*");
     $this->db->like('gugun',$search);
     $this->db->or_like('dong',$search);
     $query = $this->db->get('zipcode');
     foreach($query->result_array() as $data){
       $aa = explode("-",$data['zipcode']);
         $a= $aa['0'];
         $b= $aa['1'];
  ?>
     <tr>
         <td> <a href=# onclick="send('<?=$a?>','<?=$b?>','<?=$data['sido']?> <?=$data['gugun']?> <?=$data['dong']?> <?=$data['ri']?>' )"><?=$data['zipcode']?> <?=$data['sido']?> <?=$data['gugun']?> <?=$data['dong']?> <?=$data['ri']?> <?=$data['bunji']?></a>
    <?
       }
              ?>
   <tr>
      <td>
          <?
             }
   ?>
         </table>
   </div>
   <tr>
     <td>
</table>
<table align=center>
   <tr>
      <td height=30><a href="[removed]window.close()">[닫기]</a>
</table>
</form>
 

태그 팝업창,우편번호,검색
 다음글 CI & 기존프로그램 혼용 (4)
 이전글 select_max 사용중 오류 발생 (1)

댓글

Artz / 2013/04/30 01:34:08 / 추천 0
컨트롤러에서 포스트된 값을 가져오는 부분
$search_zip = $this->input->post('search_zip');

뷰에서 검색필드의 name
<input type=text name=search size=50>

이 부분을 잘 확인해보시면, 해결하실 수 있을거 같네요.
꾸숑 / 2013/04/30 06:24:23 / 추천 0
Artz//
답변 감사합니다.
이리해보고 저리 해보다 보니 오타가 있었네요
그문제는 아닙가 봅니다.
쌩코딩에서 되는걸 CI에 적용하는데 있어 다른 면이 있어 보입니다.
오타 난곳은 수정해서 올려 놨습니다.

뭔가 잘못생각한 부분이 있는것 같아서 기초매뉴얼 부터 보고 있습니다. ㅜㅠ
risa / 2013/04/30 07:05:39 / 추천 0
$search = ''; <- 안하셔도 포스트 값이 없으면 $search = false; 로 들어갑니다.
 function search_zip(){
  $search = $this->input->post('search');
  if($search)
  {
   $data['search']  = $search;
   $this->load->view('auth/search_zip', $data);
  }else{
   $this->load->view('auth/search_zip');
  }
 }

//개인적으론
 function search_zip(){
  $search = $this->input->post('search');
   $data['search']  = $search;
   $this->load->view('auth/search_zip', $data);  
 }
//뷰에서 $search 값이 있는지 없는지로 분기
꾸숑 / 2013/04/30 07:25:22 / 추천 0
risa//
감사합니다.^^ 눈물 나오네요...
방금 성공 확인 했습니다.
나름 이런것 저런것 시도 하다 보니 공부는 무지 되는데.. 몸이 힘드네요..
밤새워서 매달려서 우편번호 검색 하나 해결했네요.. ㅜㅠ

이번껀에서 MVC에서 M을 사용하지 않고 V에서 자기 자신V로 변수를 보내서 처리 하는 형태인데..
조금 응용력이 필요했는데 CI의 기초를 간과한것 같습니다.

즉 변수를 V에서 C로 그리고 다시 V로 보내는 과정에서 변수자체를 post하는게 아니라 배열로 보내야 하는것을 변수 자체를 보내려고 하다 보니 변수 전달이 않되었네요..

저에게는 아래 내용이 저에게는 큰 공부가 되었습니다.
 $data2 = array('search' => $this->input->post('search'));
$this->load->view('auth/search_zip', $data2);


★현재 올려진 우편번호검색 소스는 정상 작동 소스 입니다.^^

이번엔 도로명 주소 검색에 도전입니다.
잘되면 주소명과 도로명 주소를 한방에 검색 적용되게 만들어 볼까하는데 좀 무거울까요???
변종원(웅파) / 2013/04/30 10:01:03 / 추천 0
Mvc패턴에 몇가지 형태가 있습니다. 몇가지 안되는데 잘 안쓰는 패턴이 있죠. 이제 이런 경우엔 이 패턴을.. 이게 딱 나오실겁니다
꾸숑 / 2013/04/30 19:03:30 / 추천 0
웅파//
문제는 제가 아무 생각없이 CI를 사용했단은것이지요

지금까지는 복수의 변수를 post하여으니 습관적으로 C에서 배열로 V로 넘겼었는데
이번껀은 검색어 하나의 변수를 post하다 보니 C에서 V로 배열로 넘기지 않고 그냥 변수로 넘기는 
어처구니 없는 일?을  저지르고 말았네요..

가장 기본적인게 제일 중요함을 알게 되었고 나름 기초를 튼튼히 할수 있어서 보람있었네요^^
매뉴얼에 짧게 나와 있더군요  C에서 V로 변수는 배열로 넘긴다고^^



★매뉴얼 중에서 문제해결 힌트 얻은부분 과 XSS보안문제 내용
///////////////////////////////////////////////////////////
파라미터를 지정하지 않고 호출하면 POST로 넘어오는 모든 값을 연관 배열로 리턴합니다.

첫 번째 파라미터를 NULL로 하고, 두번째 인수에 부울(boolean)값을 넘겨주면,부울값에 따라모든 POST값에 XSS필터를 적용하거나,하지 않을 수 있습니다.

POST입력값이 없으면 FALSE를 리턴합니다.

$this->input->post(NULL, TRUE); // returns all POST items with XSS filter
$this->input->post(); // returns all POST items without XSS filter

//////////////////////////////////////////////////////////