CI 묻고 답하기

제목 DB에 있는 값 SELECT BOX에서 받기
글쓴이 또리야 작성시각 2016/01/29 10:41:01
댓글 : 11 추천 : 0 스크랩 : 0 조회수 : 29948   RSS

글 등록할 때에는 

<tr>

  <th>배경선택</th>

  <td><select name='pop_skin' id='pop_skin'>

         <option value='00'>선택안함</option>

         <option value='Popup1' name='Popup1'>Popup1</option>

         <option value='Popup2' name='Popup2'>Popup2</option>

         </select>

  </td>

 

이런식으로 db에 잘 들어가는데

 

글 수정시에도 SELECT BOX에 저장되있는 DB값을 불러와주고 싶습니다.

CI에서는 어떤식으로 불러와야하나요?

 다음글 라이브러리 세션 로드에 관해 여쭙겠습니다. (9)
 이전글 Form Validation 이 동작을 안하고 있습니다... (2)

댓글

변종원(웅파) / 2016/01/29 10:58:31 / 추천 0

ci와 네이티브 php랑 가장 큰 다른 점은 mvc패턴입니다.

모델에서 데이터 불러와서 컨트롤러에서 뷰로 전달, <- ci 작업방식 

뷰에서 foreach나 for문으로 item 내용 넣어주기 <- 네이티브랑 ci랑 동일합니다.

 

ci가  완전 별종이 아닙니다. php 개발을 좀더 편하게, 규격화하여 프로그램할 수 있게 해주는 툴입니다.

루비콘 / 2016/01/29 13:30:05 / 추천 0

제가 짠 코드인데

참고 하시면 좋을거 같아서 코드 올려드릴게요

view 


				*학원 분류
					<select id="group"name="group"class="select">
						<option value="">::선택해주세요::</option>
							<?php
								foreach($edu_product as $list){?>
						<option value="<?=@$list['no']?>"><?=@$list['product_name']?></option>
							<?}?>
					</select>

model

 function admin_list_product(){
  $this->db->select("*");
  $this->db->from("dgc_edu_trade_product");
  $this->db->order_by("no", "desc");

  $edu_product = $this->db->get()->result_array();
  return $edu_product;
 }

 

 

controllers

 function index($data = array())
 {

  $data['edu_product'] = $this->CI->dgc_edu_trade_1_0_m->admin_list_product($edu_product);
  $data['view'] = 'user_list_v';

  return $this->render($data);
 }

참고 하시면 도움 되실 거 같네요 더 궁금한점 있으시면 쪽지나 댓글 남겨주시면 설명해 드릴게용

 

매너달팽이 / 2016/01/29 13:43:41 / 추천 0

혹시 질문자님의 의도가 DB에 저장된 값으로 selectbox option 값을 선택하고자 함이라면 form_helper.php 내의 set_select() 를 이용해 아래와 같이 해주시면 됩니다.

 

사용하는 방법은 CIBOARD 소스 내에서 발췌하였습니다.

<option value="1" <?php echo set_select('옵션값', '1', $this->input->get('sidebar') == '1' ? true : false); ?> >
또리야 / 2016/01/29 14:33:09 / 추천 0

루비콘, 매너달팽이  두분 답변 감사드립니다.

두분의 방법대로 다 해보았는데 오 ㅐ저는 안되는걸까요 ㅠㅠ?

 

우선 글을 수정할 때에 select box안에 DB에 저장되어있던 값을 불러오고, 다른 옵션사항들도 보이게 하고싶은데...

 

    //$pop_skin은 db필드명입니다.

-->이런식으로하면 등록할 때 option값 Popup1을 선택하여 넣었다면 Popup1이 셀렉트 박스에 보이긴 하더군요,

   여기서 응용하여 forech를 쓰거나 뭘 쓰긴 해야할 것 같은데 잘 안되네요 ..ㅠㅠ

 아...그리구 제가 초짜라 <option value=<?=@$list['no']?>"> 이부분 설명좀 자세히해주실 수 있을까요? 

매너달팽이 / 2016/01/29 14:42:49 / 추천 0

먼저 제가 하나 잘못알려드렸네요. set_select() 함수의 첫번째 인자는 엘리먼트네요.

 

제가 알려드린 함수를 사용하시려면 루비콘님이 알려주신 컨트롤러, 모델, 뷰를 사용하셔야합니다.

 

뷰단에 아래와 같이 사용하면 될 거 같은데요..

뭐 이런식으로 사용하면 되지 않을까요?

<option value="Popup1" <?php echo set_select("group", "Popup1", $list['no'] == 'Popup1' ? true : false); ?>>

<?=@$list['product_name']?>

매너달팽이 / 2016/01/29 14:54:12 / 추천 0

form helper를 사용하시는건 어떠세요?

 

form_dropdown() 이라는게 있네요~

 

http://www.ciboard.co.kr/user_guide/kr/helpers/form_helper.html

또리야 / 2016/01/29 15:13:12 / 추천 0

<option value="Popup1" <?php echo  set_select('pop_skin', 'Popup1', true ); ?> >Popup1</option>

<option value="Popup2" <?php echo  set_select('pop_skin', 'Popup2'); ?> >Popup2</option>

 

이런식으로 코딩해 보았는데 Popup2로 수정해도 Popup1로 뜨는 문제가 생기네요 ㅠㅠ

루비콘 / 2016/01/29 15:22:41 / 추천 0

제가 적은 <?=@$list['no']?> 이부분은 DB 에 미리 등록해둔 항목들의 인덱스(pk) 번호입니다.

그래야 나중에 join 이라던가 다른 여러가지 처리들을 해줄때 편하더라구요 

 

즉 벨류 값은 인덱스 값으로 주고 사용자가 보여지는 부분에는 <?=@$list['product_name']?> 을 써서 사용자가 미리 등록해둔 항목의 항목명을 보여주는 것입니다.

매너달팽이 / 2016/01/29 15:31:02 / 추천 0

// 또리아 

set_select() 함수의 세번째 인자를 true로 주면 무조건 selected:selected 문자열을 리턴해줍니다. 따라서.... popup1으로 설정이 되는겁니다.

 

따라서, 세 번째 인자에 조건을 넣어주셔야합니다

 

db에서 불러온 값 과 option에 설정된 밸류값과 비요해서 같으면 true 다르면 false.... 이런식으로

루비콘 / 2016/01/29 15:33:22 / 추천 0

그전에 현재 모델 뷰 컨트롤러 이렇게 파일 3개로 나눠서 하고계신게 맞으신가요?

 

맞다면 간단한 로직을 세워드리자면 사용자에게 보여줄 셀렉트 박스 안에 옵션항목들은 DB에 저장이 되어있다고 하셨으니까 패스하고 

 

1. 모델에서 가공해서 얻어낸 값을 컨트롤러로 넘겨준다.(sql 문을 사용하시면 가능하겠죠? 제가 위에 모델에 써놓은거 마냥 ㅎㅎ)

2. 그 값을 받은 컨트롤러가 다시 뷰에 뿌려줘야 합니다.(제가 드린 코드의 컨트롤단을 보시면 대충 감을 잡으실겁니다.)

 

추가. foreach 쓰면 노가다도 안해도 되고 여러모로 편하죠(foreach 란 반복문입니다, 즉 반복문을 자동으로 셀렉트 박스도 DB에서 가져온 값의 갯수만큰 자동으로 만들어주고 그안에 해당하는 인덱스도 사용자에게 보여줄 항목이름도 자동으로 순서에 맞게 만들어주는거죠 )

 

이해가 안가시거나 이래도 잘 모르시겠다면 쪽지나 댓글 달아주세요 

저도 CI 한지 이제 2달째지만 저도 또리야 님이 지금 하고 계신거랑 똑같은 기능으로 3일동안 애먹은 기억이 있어서 ㅠㅠㅠ 

또리야 / 2016/01/29 16:43:02 / 추천 0

<view>

<select name='pop_skin' id='pop_skin'>

    <option value='00'>선택안함</option>                                

    <option value='Popup1' name='Popup1'>Popup1</option>                                

    <option value='Popup2' name='Popup2'>Popup2</option>

</select>

 

view에서 등록누르면

<controller>

//팝업 등록    

function popup_register(){        

    $this->load->model('adminPage_m/popup_admin_m','popup_admin_m');      

    $this->popup_admin_m->popup_register_m();         //모델로이동하여 insert함.

}

 

<model>

이하 다른것 생략하고

function popup_register_m($page=1,$pagesize=10){

    $sql = "INSERT INTO 테이블명 SET

              regday = NOW();

             , pop_skin = $_POST['pop_skin']

이런식으로 인서트 되고 p_num이라는 필드가 있는데 phpMyAdmin에서 기본key로 자동증가합니다.

 

 

제가 수정 페이지에서 지금 이런식으로 쓰고 있습니다. (당연히 안받아와져요ㅠㅠ)

<select name='pop_skin' id='pop_skin'>                        

  <option value="00" <?php echo  set_select('pop_skin', '00', $pop_skin == '00' ? true : false); ?> >사용안함</option>                  

  <option value="Popup1" <?php echo  set_select('pop_skin', 'Popup1', $pop_skin == "Popup1" ? true : false); ?> >Popup1</option>            <option value="Popup2" <?php echo  set_select('pop_skin', 'Popup2', $pop_sk "Popup2" ? true : false); ?> >Popup2</option>

</select>

위에도 안되고 아래도안되고... ㅋㅋㅋㅋ참 답답하네요 제가 이해를 잘 하고 있는게 맞는지

<select id="pop_skin"name="pop_skin">

<?php

foreach($pop_skin as $list){?>             //$pop_skin은 db필드명인데 여기 들어가는게 맞나요?

  <option value="Popup1" <?php echo set_select("pop_skin", "Popup1", $list['pop_skin'] == 'Popup1' ? true : false); ?>>

<?}?>

</select>