我有2个表格数据库:
1。类别表
2.table基于这些类别的选项。
我想基于类别创建选择组。
我的代码:
function config_cat($idVps){
$this->db->select("*");
$this->db->from("tbcategory_config as a");
$this->db->join("tbconfig_option as b", "a.id_category = b.id_category");
$this->db->where("id_vps",$idVps);
$hasil = $this->db->get();
return $hasil;
}
<?php foreach($configcat->result_array() as $row):
$category =$row['name'];
$detailCon =$row['detail_config'];
?>
<div class="form-group col-md-12">
<label><?php echo htmlentities($category, ENT_QUOTES, 'UTF-8'); ?></label>
<select>
<option><?php echo htmlentities($detailCon, ENT_QUOTES, 'UTF-8'); ?></option>
</select>
</div>
<?php endforeach; ?>
我希望输出中将显示选择选项 “升级内存” = 1. 1Gb,2。2Gb
和
“升级内核” = 1内核
但是实际结果是两次升级RAM (基于上面的第三张图片)
答案 0 :(得分:0)
不一定是最佳方法,但是您可以通过不使用join子句来轻松解决此问题,并且可以使用带有父类别及其子类别的单独变量。
您没有显示您的控制器,因此提出建议并非完全简单,但可以尝试以下方法:
在您的控制器中:
由两个单独的模型调用填充两个单独的变量。一个带有categories
表的内容,另一个带有options
表的内容。两者都包含category_id
字段是至关重要的
您认为:
您需要两个嵌套的foreach
循环。最外层的循环遍历类别。最内层的循环选项。
<?php
foreach ($categories as $c)
{ ?
<select name="<?php echo $c->category_id; ?>">
<?php
foreach ($options as $o)
{
if ($o->category_id == $c->category_id)
{ ?>
<option value="<?php echo $o->option_id; ?>"><?php echo $o->option_name; ?>
</option>
<?php
} ?>
</select>
<?php
}
?>
更改以上内容以使用您自己的变量名。
这样,对于每个类别,您将有一个SELECT
元素,其中填充了OPTION
元素,与具有相同类别的选项一样多