제목 | controller에서 넘겨준 객체,배열 -> view, 객체 radio버튼 체크 하기 | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 배고프당 | 작성시각 | 2017/04/06 21:03:49 |
|
|||
쌩초짜가 질문을 올립니다 ㅜㅠ 마땅히 제목을 지으려니 쉽지가 않네요 ㅠㅠ
모델에서 where를 이용하여 해당 study_id값을 찾았습니다. public function get_arr_it_study($study_id) { echo '<br/>-----Study_items_m - get-----<br/>'; // items에서 수정하고자 하는 현재 study_id 값 불러오기 $this->db->where('study_id', $study_id); $study_query = $this->db->get('study_items'); return $study_row = $study_query->result(); }
// study에서 수정하고자하는 현재 study_id 값 불러오기 $study_row = $this->study_m->get_where_table($study_id); // items에서 수정하고자 하는 현재 study_id 값 불러오기 $items_row = $this->study_items_m->get_arr_it_study($study_id); switch ($study_row->study_category) { case '0': //도서 // $current = $this->db->insert_id(); // ---------------------------- study_items 값 불러오기 test code 작성 중 ---------------------------- $data = array( 'tests_study' => $study_row, 'test_items' => $items_row, // 업로드 파일에 대한 정보. 'uploads_path' => './uploads', 'src' => './uploads', 'alt' => '이미지를 선택해 주세요', 'class' => 'post_images', 'width' => '200', 'height'=> '200', 'title' => 'That was quite a night', 'rel' => 'lightbox' ); 컨트롤러에서 $data = array( 'tests_study' => $study_row, 'test_items' => $items_row, 식으로 모델에서 값을 저장해서 view로 보내주었습니다.
넘어오는 값을 var_dump()로 찍어보면 다 나옵니다. 문제는 해당 항목(책의 챕터가 여러개 이다보니...) <input type="radio" name="study_item_level[<?php $cnt ?>][level]" value="1" checked= "<?php echo $row->study_item_level == 1? "checked":"" ?>"> 레벨1 <?php $cnt++; ?> 에서 name이..한개씩출력해서 보는건 되는데..정작 foreach문을 이용해서 할때는 name =" ---요 부분---" 을 코딩을 해줘야 할지 모르겠습니다..ㅠㅠ 아래처럼 나오고 각각을 echo, var_dump로 처리해서 한개씩확인할땐 되는데.. obj의 갯수가 입력한것에 따라서 변동적이다 보니 HTML에서 컨포넌트에 name이 중복될때 처리하는 방법이 미숙합니다.. 어떻게 처리해야 하나요?? [0]=> object(stdClass)#25 (5) { ["study_item_id"]=> string(3) "177" ["study_item_name"]=> string(3) "ㅇ" ["study_id"]=> string(3) "100" ["study_item_level"]=> string(1) "1" ["study_item_checkable"]=> string(1) "0" } [1]=> object(stdClass)#26 (5) { ["study_item_id"]=> string(3) "178" ["study_item_name"]=> string(3) "ㅇ" ["study_id"]=> string(3) "100" ["study_item_level"]=> string(1) "2" ["study_item_checkable"]=> string(1) "0" }
간략히 정리해보면..;; 1. study, study_items 라는 2개의 테이블이 있습니다 2. 두 테이블에 공통으로 study_id(pk(db용어가 많이 약합니다 ㅠㅠ ))가 있고 이 컬럼을 이용합니다 3. 컬럼 값이 정해지면, 해당 컬럼값을 포함 하고 있는 테이블의 내용을 뷰(view)에서 radio버튼(버튼은 5개사용합니다.)에 체크를 해서 보여줍니다. -> 막히는 부분이.. radio버튼을 5개중 한개의 값을 처리하는 상황인데 name이 중복될 때 name=" - 이부분- "에서 어떤식으로 코딩을 해야 하는지 감조차 못 잡고 있어 부득이 질문하게 되었습니다 ㅠㅠ
|
|||
다음글 | GD2 라이브러리 관련 오류 : libMagickWan... (2) | ||
이전글 | 혹시 페이지네이션의 뒷쪽인 page/1 or page/... (4) | ||
한대승(불의회상)
/
2017/04/07 08:22:31 /
추천
0
|
배고프당
/
2017/04/07 11:55:33 /
추천
0
불의회상 댓글 감사합니다 ㅠㅠ 초보를 떠나서 작성후 보니 제가 봐두 인간이 작성한 글이 아님에 죄송한마음이 많았는데.. 감사합니다 ㅠㅠ 결과는 댓글로 남겨 놓겠습니다~ |
배고프당
/
2017/04/13 13:10:23 /
추천
0
foreach ($test_items as $row){ echo '<br>' .'결과' . '<br>' . ' | ' . '1a : ' . (($row->study_item_level == 1)? 'O':'X') . ' | '; echo '2a : ' . (($row->study_item_level == 2)? 'O':'X') . ' | '; echo '3a : ' . (($row->study_item_level == 3)? 'O':'X') . ' | '; echo '4a : ' . (($row->study_item_level == 4)? 'O':'X') . ' | '; echo '5a : ' . (($row->study_item_level == 5)? 'O':'X') .'<br/>'; } 으로 사용할땐 잘 나오는데... HTML코드가 가미가 되는 순간... 음식이 아닌 흉기가 나옵니다 .ㅠㅠ
<div class="form-group"> <label class="col-sm-2 control-label" for="arrange">항목</label> <div class="col-sm-6"> <input class="form-control" type="text" name="study_item['+study_item_count+'][name]" placeholder="항목 입력"> </div> <div class="col-sm-4"> <label class="radio-inline"> <input type="radio" name="item1" value="1" checked="checked">레벨1 <?php echo $cnt . '<br>'; ?> </label> <label class="radio-inline"> <input type="radio" name="item2" value="2" checked=" ">레벨2 </label> <label class="radio-inline"> <input type="radio" name="item3" value="3" checked="checked">레벨3 </label> <label class="radio-inline"> <input type="radio" name="item4" value="4" checked=" ">레벨4 </label> <label class="radio-inline"> <input type="radio" name="item5" value="5" checked="checked">레벨5 </label> <label class="checkbox-inline"> <input type="checkbox" name="study_item['+(study_item_count++)+'][checkable]" value="1"> 체크가능 </label> </div> </div>
HTML코드를 첨부했습니다. 버튼 부분입니다. name처리를 제가 못하는거 같은데.. 잘 모르겠습니다 ㅠㅠ 버튼은 진도 체크를 하기위해서 사용하고 5개 +1개 총 6개입니다. 이 6개가 한 묶음으로, 이 묶음의 갯수가 달라집니다. ex) 기본 1개이상, 많은건 진도체크할게 많을경우 추가 페이지에서 몇개 추가 하느냐에 따라 달라집니다~ |
변종원(웅파)
/
2017/04/13 13:40:55 /
추천
0
라디오는 이름이 같아야하죠. ^^
|
kaido
/
2017/04/13 13:41:39 /
추천
0
radio 의 name 을 저렇게 주시면 총5개의 [각자 다른] 버튼이 만들어집니다 name에 뒤에 숫자 제거하시고 item 으로 이름을 통일시켜주세요.
<input type="radio" name="item" value="1" <?=($row->study_item_level == $i)? "checked='checked'":"" ?> />레벨1 $i++ 넣으시고 만드시면 끝.
|
한대승(불의회상)
/
2017/04/13 15:44:54 /
추천
0
모양은 radio 인데 원하시는 결과는 checkbox 같네요.
|
배고프당
/
2017/04/13 16:26:29 /
추천
0
불의화상,kaido 두분 감사합니다 >_< 아...^^;; 진도를 체크하는 부분을 만들려고 한 상태에서 구분을 어떻ㄱㅔ 주어야 할지 몰라서요 ㅠㅠ |
배고프당
/
2017/04/13 16:43:29 /
추천
0
kaido 챕터에 레벨 구분을 어떻게 해주어야 할지 마땅히 아이디어가 안 떠올라서 임시로 각각의 radio버튼을 5개로 만들어서 사용하기해서 저런 회괴한 흉기가 되었습니다^^: 몇번 다듬을 생각하고 해보는 중입니다~!
|
배고프당
/
2017/04/13 16:50:47 /
추천
0
<?php foreach($test_items as $row): ?> <div class="form-group"> <label class="col-sm-2 control-label" for="arrange">항목</label> <div class="col-sm-6"> <input class="form-control" type="text" name="study_item['+study_item_count+'][name]" placeholder="항목 입력"> </div> <div class="col-sm-4"> <label class="radio-inline"> <input type="radio" name="item" value="1" checked="<?php (($row->study_item_level == 1)? "checked":"") ?>">레벨1 <?php echo $cnt . '<br>'; ?> </label> <label class="radio-inline"> <input type="radio" name="item" value="2" checked="<?php (($row->study_item_level == 2)? "checked":"") ?>">레벨2 </label> <label class="radio-inline"> <input type="radio" name="item" value="3" checked="<?php (($row->study_item_level == 3)? "checked":"") ?>">레벨3 </label> <label class="radio-inline"> <input type="radio" name="item" value="4" checked="<?php (($row->study_item_level == 4)? "checked":"") ?>">레벨4 </label> <label class="radio-inline"> <input type="radio" name="item" value="5" checked="<?php (($row->study_item_level == 5)? "checked":"") ?>">레벨5 </label> <label class="checkbox-inline"> <input type="checkbox" name="study_item['+(study_item_count++)+'][checkable]" value="1"> 체크가능 </label> </div> </div> <?php endforeach; ?>
전혀 상관없는 5에 체크가 되는 경우라 원인을 찾기 쉽지 않네요^^;;;
DB에는 구분되어서 저장이 되는뎁 ㅠㅠ php, HTML 에 믹스가 되니 ㅎㅎ ㅠㅠ |
kaido
/
2017/04/14 09:20:03 /
추천
0
실례인줄 알면서 지적을 좀 해드리자면... 루프문 작성이 익숙하지 않으신 것으로 보이십니다. 사실 저도 꽤 오랫동안 적응 못했거든요 ㅎㅎ
우선 라디오 체크 박스는 둘째치고 이렇게 생각 하세요.
1. 몇번 반복 해야 하는가? 2. 반복 문중에서 어떤 값이 다르게 들어가는가? 이 2가지를 우선 차분히 생각 하세요.
10개 미만 정도면 일일이 원하는 수준의 출력을 만들어 놓고 10개중 1개의 값만 빼고 나머지 9개는 주석 하신다음 10번 반복 해보세요. [보기에는 5개이니 5번] 그리고 여기서 내가 원하는 값만 다른 조건 문을 한번 넣어고 확인해 보세요.
PS. 루프문 하신다고 foreach 에 맞도록 굳이 배열값을 만드실 필요는 없습니다.
루프문으로 한번 해결해 보시고, 그다음에는 불회님이 언급 하신 대로 CI 기능을 이용해서 해결해 보세요. http://www.ciboard.co.kr/user_guide/kr/helpers/form_helper.html
|
배고프당
/
2017/04/14 11:18:30 /
추천
0
kaido ^^; 더디지만 익숙해지려고 많이 접해보고 있습니다. 특히나 HTML, php, javascript가 믹스가 되가는 상황에선 가히 멘탈이 탈탈탈 털리고 있습니다 ^^ㅋ 그런데, echo로 찍을때는 문제 없는게 HTML 컨포넌트를 이용하면 엉뚱한 결과를 초래하는게 뭐가문제 인지 모르겠습니다 ㅠㅠ |
kaido
/
2017/04/14 11:23:30 /
추천
0
누가 먼저 실행되고, 누가 먼저 출력되는지 부터 이해하시면 쉽습니다. 실행 순서는 php > js > html 순으로 시작 되며, 출력은 html > js > php 순으로 엘리먼트를 완성해 갑니다. 가령 <script> var item = <?echo $item; ?> </script> 이런 문구가 있다면 실행 순서와 그리는 순서를 생각 해보시면 됩니다. 실행은 php가 먼저 되나, 엘리멘트 완성은 var item 을 그리고 나서 php의 item 값이 들어 갑니다. 이것만 이해하시면 짜파게티 소스 두렵지 않습니다. |
배고프당
/
2017/04/14 11:37:54 /
추천
0
kaido님 감사합니다^^
|
form 헬퍼의 form_radio() 함수를 사용하면 쉽게 처리할 수 있을것 같습니다.
http://www.ciboard.co.kr/user_guide/kr/helpers/form_helper.html