Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 代码点火器中的组_CONCAT至复选框_Mysql_Codeigniter - Fatal编程技术网

Mysql 代码点火器中的组_CONCAT至复选框

Mysql 代码点火器中的组_CONCAT至复选框,mysql,codeigniter,Mysql,Codeigniter,我是codeigniter的新手,现在我正在学习复选框值。我成功地保存到了数据库中,我的问题是如何从表中插入值 table1 (fc_artikel) idartikel | judul_artikel | deskripsi | isiartikel 18 Title Desc Content table2 (fc_kategori) idkategory| namakategory 1 PHP 2

我是codeigniter的新手,现在我正在学习复选框值。我成功地保存到了数据库中,我的问题是如何从表中插入值

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制作数组,但失败了,嗯,这并没有失败,我只是不知道怎么做。

首先,使用
GROUP\u 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,那么这意味着您只选择了一篇文章,因此无需循环并显示您的文章详细信息,我将向您显示所选类别部分

<?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个字符的限制?对不起,你在哪里找到的信息?。我应该学习更多。顺便说一句,你的脚本是工作thanks@Bossby您可以在mysql文档的描述部分找到这些信息,他们也描述了如何克服这个限制问题
<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>