PHP foreach循环通过复选框
问题描述:
我想通过所有结果循环,然后检查从数据库中选择(2表)。现在它显示所有结果并检查正确的结果,但我的结果是重复的。我能做些什么来解决这个问题?PHP foreach循环通过复选框
什么IM现在越来越
x item1
item1
item1
item2
x item2
item2
item3
item3
x item3
etc...
结果我想用
x item1
x item2
x item3
item4
item5
x item6
etc
代码IM(使用笨林)
<? foreach($modules as $key => $module): ?>
<? foreach($selectedmodules as $key => $selected):?>
<input type="checkbox" name="" value="<?=$module->module_id?>"
<?=($selected->module_sel_id == $module->module_id ? 'checked="checked"' : '') ?>/><?=$module->module_name?><br />
<? endforeach; ?>
<? endforeach; ?>
型号
public function getModules()
{
$this->db->select('*');
$this->db->from('module_type a');
$this->db->join('module b', 'a.type_id = b.type_id');
return $this->db->get()->result();
}
public function getSelectedModules($id)
{
$this->db->select('b.module_sel_id');
$this->db->from('module a');
$this->db->join('module_select b', 'a.module_id = b.module_sel_id');
$this->db->where('b.product_id', $id);
return $this->db->get()->result();
}
答
这里有一个版本,将工作,但它的不是最好的方式,你一定要考虑找到一种方法来避免内部循环。测试看看是否应该检查。
<? foreach($modules as $key => $module): ?>
<? $checked = false; ?>
<? foreach($selectedmodules as $key => $selected):?>
<? if($selected->module_sel_id == $module->module_id) $checked = true; ?>
<? endforeach; ?>
<input type="checkbox" name="" value="<?=$module->module_id?>"
<?=($checked ? 'checked="checked"' : '') ?>/><?=$module->module_name?><br />
<? endforeach; ?>
当前方法是通过所有复选框循环,然后所有选定复选框。 最好的的方式是循环所有复选框,然后测试是否应该检查它。这里有一些伪代码:
<? foreach($modules as $key => $module): ?>
<input type="checkbox" name="" value="<?=$module->module_id?>"
<?=(in_array($module>module_id, $selectedmodules) ? 'checked="checked"' : '') ?>/><?=$module->module_name?><br />
<? endforeach; ?>
有什么破? – Ibu
为什么你放两个循环?您编写的代码不足以诊断问题 – WatsMyName
请解释“重复结果”部分。然后显示数据库中的数据示例,最后显示查询本身。 –