按在另一个表中找到的表中的数据开始排序



我的问题可能不容易解释,但我会尽力而为。 我有3张桌子:

  1. 病人
  2. patient_medicine

第三个表包含 3 列:

  1. 自动递增 (ID(
  2. medicine_id
  3. 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 } ?>

相关内容

  • 没有找到相关文章

最新更新