我的问题可能不容易解释,但我会尽力而为。 我有3张桌子:
第三个表包含3列:
我进行查询,以显示药物表中的所有数据,如果在Patient_medicine表中找到患者ID,我将对其进行检查,而未找到的患者ID将不会被检查。
A-控制器
public function showPatientMedicine()
{
$data['patient_id']=$this->input->post('patient_id');
$data['medicine'] = $this->model_admin->medicine();
$this->load->view('admin/show-Patient-Medicine',$data);
}
B-视图
<table>
<thead>
<tr>
<th>List</th><th></th>
</tr>
</thead>
<tbody>
<?php
foreach($medicine as $row){
$patient_med=$this->db->select('medicine_id')
->where('patient_id',$patient_id)
->where('medicine_id',$row->id)
->get('patient_medicine')->row('medicine_id');
if($row->id==$patient_med){
$checked="checked";
} else {
$checked="";
}
?>
<tr>
<td>
</td>
<td>
<input type='checkbox' value="<?=$row->id?>" <?=$checked?> />
</td>
</tr>
<?php
}
?>
</tbody>
</table>
此查询将向我显示所有药物并检查“ PATIENT_MEDICINE”表中找到的药物
我的问题是:
我如何显示所有在第一个位置检查过的药物,或如何通过检查的复选框进行订购?
谢谢您。
答案 0 :(得分:0)
尝试一下
SELECT * FROM `medicine` as a left join (select medicine_id,patient_id from patient_medicine where patient_id = 2) as b on a.id = b.medicine_id
将上述查询放在您的控制器中,如果找到患者详细信息,它将根据患者ID自动对结果进行排序。对于除药物详细信息以外的所有其他详细信息,它将返回null。
所以您可以
<?php foreach($medicine as $row){ ?>
<input type='checkbox' value="<?=$row->id?>" <?php echo !is_null($row->patient_id)?'checked':''; ?> />
<?php } ?>