我的问题可能不容易解释,但我会尽力而为。 我有3张桌子:
- 药
- 病人
- patient_medicine
第三个表包含 3 列:
- 自动递增 (ID(
- medicine_id
- patient_id
我进行一个查询,显示药物表中的所有数据,如果在表中找到患者 ID patient_medicine,我会检查它,而未找到的则不检查。
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表中的药物
我的问题是:
如何显示所有在第一个位置选中的药物或如何通过选中复选框订购?
提前谢谢你。
试试这个,
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 } ?>