Mysql 代码点火器中的组_CONCAT至复选框
我是codeigniter的新手,现在我正在学习复选框值。我成功地保存到了数据库中,我的问题是如何从表中插入值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
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>