제목 | 디비 셀렉트 질문입니다. | ||
---|---|---|---|
글쓴이 | 방문넷 | 작성시각 | 2014/02/19 04:48:55 |
|
|||
아... 당췌 제가 머리가 안돌아가서 구글링과 코쟁이아저씨들의 문서 마구마구 읽어주시고. 삽질한지 3시간만에 원하는 결과물을 뽑아주긴했는데 이게 상당히 코드가 맘에 안들더라구요.... 컨트롤러 public function read_all() { $data['page'] = 'language_list_v'; //모든언어 셀렉트 $data['languages'] = $this->language_m->read_all(); //기본 언어 셀렉트 $data['default_list'] = $this->language_m->read_default(); //국가 셀렉트 $data['nations'] = $this->language_m->get_nations(); //옛다~ 뷰~ $this->load->view('layouts/default',$data); }모델 function read_all() { $this->db->select('*'); $nations = $this->db->get('nations')->result(); foreach($nations as $nation) { $this->db->select('*'); $this->db->where('lang',$nation->na_name); $languages = $this->db->get('languages')->result(); $result[$nation->na_name]=$languages; } if ($result !== FALSE){ return $result; } else { return FALSE; } } function read_default() { $this->db->select('*'); $this->db->where('lang',config_item('language')); $query = $this->db->get('languages'); if ($query->num_rows() >= 1){ return $query->result(); } else { return FALSE; } } function set_lang($nation) { //캐시를 재작성한다. $this->db->select('*'); $this->db->where('lang',$nation); $query = $this->db->get('languages'); if ($query->num_rows() >= 1){ return $query->result(); } else { return FALSE; } } function get_nations() { $this->db->select('*'); $query = $this->db->get('nations'); if ($query->num_rows() >= 1){ return $query->result(); } else { return FALSE; } }뷰 <div class="container"> <div class="row"> <div class="span2"> <ul class="nav nav-list well"> <li class="nav-header">다국어관리</li> <li><a href="http://<?php echo config_item('base_domain')?>/admin/language/read_all">다국어리스트</a></li> <li><a href="#">다국어추가</a></li> <li><a href="#">국가추가</a></li> </ul> </div> <div class="span10"> <ul class="breadcrumb"> <?php $crumb = $this->uri->uri_string(); $crumb = explode("/", $crumb); foreach($crumb as $key) { echo "<li><a href=\"#\">".$key."</a></li>"; } ?> </ul> <p>현재 도메인 기본언어 :</p> <pre><?php echo $this->multi_lang->check_nation()?></pre> <p>세션에 현재 언어 :</p> <pre><?php echo $this->session->userdata('language')?></pre> <div id="contacts"> <table class="table table-bordered"> <thead> <tr> <th colspan="3"> <input type="text" class="search span7" placeholder="Search contact" /> </th> </tr> <tr> <th class="sort" data-sort="key">KEY</th> <th class="sort" data-sort="value">VALUE</th> <th>edit</th> </tr> </thead> <tbody class="list"> <?php foreach($default_list as $entry) {?> <tr> <td class="key" style="word-break: break-all;"><?php echo $entry->key ?><span style="display:none"><?php echo $entry->type ?></span></td> <td class="value"> <?php foreach($nations as $nation) { foreach($languages[$nation->na_name] as $lang_entry) { if($entry->key == $lang_entry->key) { ?> <div class="control-group small"> <div class="input-prepend"> <span class="add-on"><?php echo $lang_entry->lang?></span> <input class="span5" type="text" value="<?php echo $lang_entry->value?>"> </div> </div> <?php } } } ?> </td> <td> <a href="#" class="btn"><span class="fui-check"></span></a> <a href="#" class="btn"><span class="fui-trash"></span></a> </td> </tr> <?php } ?> </tbody> </table> <table class="rwd-table"> <tr> <td> <h3>모바일에선 다국어 수정이 불가피 합니다.</h3> </td> </tr> </table> <div class="pagination"> <ul class="pagination_2"></ul> </div> </div> <p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds</p> </div> </div> </div> <script> var options = { valueNames: [ 'type','key','value' ], page: 10, plugins: [ ListPagination({}) ] }; // Init list var contactList = new List('contacts', options); </script> 딱봐도 너무 무분별 하게 foreach를 연속으로 잡아 돌리고 있습니다. 이거를 좀더 유연하게 DB쿼리로 해결할 방도를 찾고있는데 역시 디비에서 제가 한없이 작아지네요;;; 디비 구조는 nations (idx, name) languages (idx, nation, type, key, value) 요로쿵 했습니다 아 languages 의 type은 그냥 제가 디비에서 찾기쉽게 키워드용으로 해둔겁니다.. 저의 이 갈증을 해소시켜주시면 감사하겠습니다 꾸벅 (--)(__) |
|||
다음글 | ci 이용하여 개인 홈페이지 제작중입니다. 네이버 블로... (3) | ||
이전글 | DB에서 읽은 값이 VIEW에 나타나지 않을 때 (5) | ||
taegon
/
2014/02/19 09:43:34 /
추천
0
|
방문넷
/
2014/02/19 16:49:52 /
추천
0
teagon // 디비쪽은 제가 영 많이 약해서요 ㅎㅎ;; 다른 방법으로 해결 보았습니다 코드가 심각하게 깔끔해졌네요;;;
|
저렇게 select 각각 하나씩 해오시는 이유라도?..