2014-07-17 2 views
1

저는 codeigniter가 새로 도입되었습니다. 이제 체크 박스 값에 대해 배우고 있습니다. 데이터베이스에 성공적으로 저장되었습니다. 내 문제는 내 테이블에서 값을 삽입하는 방법입니다.Codeigniter의 GROUP_CONCAT 확인란에

table1 (fc_artikel) 
idartikel | judul_artikel | deskripsi | isiartikel 
    18   Title   Desc  Content 

table2 (fc_kategori) 
idkategory| namakategory 
    1   PHP 
    2   HTML 
table3 (fc_artikelkategori) 
ID | idartikel | idkategory 
1  18   1 
2  18   2 

내 편집자가 내 편집 양식에 기사를 표시합니다.

function editartikel($id) 
{ 
$sql = 
"select a.idartikel,a.deskripsi,a.judul_artikel,a.isiartikel,b.namakategori, 
GROUP_CONCAT(b.idkategori)idkategori 
    from fc_artikel a left join fc_artikelkategori c on a.idartikel=c.idartikel 
     left join fc_kategori b on b.idkategori=c.idkategori 
     where a.flag='1' and c.idartikel='$id' group_by b.idkategori"; 
$sql1 = "select * from fc_kategori where flag='1'"; 
$this->data['artikel'] = $this->bymodel->tampildata($sql); 
$this->data['kategori'] = $this->bymodel->tampildata($sql1); 
$this->data['include']= 'admin/editartikel'; 
$this->load->view('admin/page',$this->data);  
} 

는 그리고 지금까지 내가 이런 내 생각을했습니다 내 모델

function tampildata ($sql) 
    { 
      $query = $this->db->query($sql); 
      return $query->result(); 
    } 

, 그리고 나는 데이터베이스에서 값을 삽입 할 붙어있어.

<?php 
foreach($artikel as $baris) 
{ 
?> 
<form method='POST' action='<?=base_url();?>admin/updateartikel/<?php echo $baris->idartikel ;?>'> 
    <fieldset><label>JUDUL</label><input type='text' value='<?php echo $baris->judul_artikel;?>' name='judul'></fieldset> 
<textarea name="content" id="content" ><?php echo $baris->isiartikel;?></textarea> 
    <?php echo display_ckeditor($ckeditor); ?> 
    <fieldset> 
<p> 
    *<?php 
      $output[] =$baris->idkategori; 
      echo implode(', ', $output); 
    } 
    ?> 
     <label>Kategori</label> 

<?php foreach ($kategori as $pilihan){?> 
    <p> 
      MY CHECKBOX (VALUES FROM database) 
    </p> 
<?php }; ?> 
</p> 

$ baris-> idkategori에서 배열을 만들려고했지만 내가 실패하고있어, 잘 난 그냥 방법을 모르는 실패 아니에요.

답변

0

우선 GROUP_CONCAT을 사용하는 것은 최적의 솔루션이 아닙니다. 귀하의 질문에서 연결하기 위해 기본 제한이 1024 개 있기 때문에 모든 항목을 표시하고 기본적으로이 항목에 대해 귀하의 기사에 지정된 범주를 선택해야합니다.

/* Controller */ 

function editartikel($id){ 
    $this->data['artikel'] = $this->bymodel->getArticle($id); 
    $this->data['kategori'] = $this->bymodel->getCategories(); 
    $this->data['selected_kategori'] = $this->bymodel->getSelectedCategories($id); 
    $this->data['include']= 'admin/editartikel'; 
    $this->load->view('admin/page',$this->data);  
} 

는 또한 활성 기록을 당신의 모델에 쿼리를 이동하고 사용하기 전에 당신이 선택되었다 별도의 배열과 루프 체크 부문에서 선택한 모든 범주를 선택할 수 있습니다

/* Model */ 

function getArticle($id){ 

    return $this->db->select('*') 
    ->from('fc_artikel') 
    ->where('flag',1) 
    ->where('idartikel',$id) 
    ->get() 
    ->result(); 

} 

function getCategories(){ 

    return $this->db->select('*') 
    ->from('fc_kategori') 
    ->where('flag',1) 
    ->get() 
    ->result(); 

} 

function getSelectedCategories(){ 

    return $this->db->select('c.*') 
    ->from('fc_kategori c') 
    ->join('fc_artikelkategori ac','c.idkategori=ac.idkategori') 
    ->where('c.flag',1) 
    ->get() 
    ->result(); 

} 

보기 부분에서는 기사 ID를 기준으로 기사를 얻는다면 레코드를 반복 할 수 없다는 의미입니다. 하나의 기사 만 선택하면 기사 세부 정보를 반복해서 표시 할 수 있습니다. 선택한 범주 부분을 표시합니다.

이전 솔루션 그래서보기 부분에 group_concat를 사용
<?php 
$selectedids=array(); 
foreach ($selected_kategori as $s){ 

    $selectedids[] = $s->idkategory; 

} 
foreach ($kategori as $c){ 


    if(in_array($c->idkategory,$selectedids)){ 
    $selected ='checked="checked"'; 
    }else{ 
    $selected =''; 
    }?> 
    <p> 
    <?php echo $c->namakategory; ?>  
    </p> 
    <input type="checkbox" name="categoires[]" <?php echo $selected; ?> value="<?php echo $c->idkategory;?>" /> 

<?php } ?> 

당신은 아직도 당신과 함께 가고 싶은 경우 당신은 1024 자 너무

<p> 
    <?php 

    $selectedCats= implode(',',$baris->idkategori); 

    foreach ($kategori as $c){ 


    if(in_array($c->idkategory,$selectedCats)){ 
    $selected ='checked="checked"'; 
    }else{ 
    $selected =''; 
    }?> 
    <p> 
    <?php echo $c->namakategory; ?>  
    </p> 
    <input type="checkbox" name="categoires[]" <?php echo $selected; ?> value="<?php echo $c->idkategory;?>" /> 

<?php } ?> 

</p> 
+0

제한을 할 수 있습니까? 미안, 너 어디서 정보를 찾았 니?. 나는 더 많이 배워야한다. btw 스크립트가 작동합니다. 감사합니다. – Bossby

+0

@Bossby이 정보는 mysql 문서 [**'GROUP_CONCAT' **]에서 찾을 수 있습니다 (http://dev.mysql.com/doc/refman/5.0/en/group-by-functions .html # function_group-concat) 설명 섹션에서이 한계 문제를 극복하는 방법을 설명했습니다 –