我有一个名为categories []的选择字段,其中有多个选择,我在更改功能上写了一个,所以在更改功能上它将控制器作为一个id的数组现在我想要的是我想要选择的食物来自具有这些类别的mysql表
<select name="categories[]">
<?php
foreach ($category as $c) {
?>
<option value="<?php echo $c->category_id; ?>"><?php echo $c->category_name;?></option>
<?php
}
?>
</select>
控制器
public function get_foods(){
$categories = $this->input->post(NULL,true);
$sql = $this->subscription->get_foods($categories);
$result = array(
'result' => $sql
);
echo json_encode($result);
}
和模型
public function get_foods($id){
$sql = "SELECT * FROM food_category fc
LEFT JOIN food f ON fc.food_id=f.food_id
WHERE f.food_status = 1 AND
fc.category_id = $id
ORDER BY f.food_id DESC";
$query = $this->db->query($sql);
return $query->result_array();
}
我想要获取这些类别中的所有食物,所以我认为我应该使用一些多重条件?
答案 0 :(得分:0)
您只需要在每种食物中存储类别,当您获得食物时,您可以使用其中的条件:
$this->db->where('category',$category);
答案 1 :(得分:0)
使用()sql函数中的where列为此。
有关详细说明。在这里找到 http://www.w3schools.com/sql/sql_in.asp
答案 2 :(得分:0)
如果这有用,我认为您需要逐个发布类别,然后获取它并将其放在一个数组中。这是一个可能有用的代码
public function get_foods()
{
$result = array();
foreach($this->input->post('categories') as $c)
{
$result[] = $this->subscription->get_foods($c);
}
echo json_encode($result);
}
对于模型我建议使用CI的AR
public function get_foods($category)
{
$this->db->select('*');
$this->db->from('food_category as fc');
$this->db->join('food as f','fc.food_id = f.food_id','left');
$this->db->where('f.food_status', '1');
$this->db->where('fc.category_id',$category);
$query = $this->db->get();
return $query->result_array();
}
首先我们创建一个空数组,然后在post中使用foreach,我们得到每个类别的所有食物,然后将它们返回到结果数组中。
希望这有帮助,如果sql中有任何错误,因为我可能已经忘记了一些加入,我愿意再次帮助。