| 제목 | 디비 셀렉트 질문입니다. | ||
|---|---|---|---|
| 글쓴이 | 방문넷 | 작성시각 | 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 각각 하나씩 해오시는 이유라도?..