2016-08-09 73 views
0

Ich habe ein Auswahlfeld namens Kategorien [] mit mehreren wählen und ich schrieb eine auf Change-Funktion, so auf Änderung fuction es wird der Controller als ein Array von IDs jetzt was ich will ist ich will wählen Sie Lebensmittel, die aus mySQL-Tabelle mit diesen KategorienVerwenden Sie mehrere, wo Bedingung in Mysql

<select name="categories[]"> 
    <?php 
     foreach ($category as $c) { 

    ?> 
    <option value="<?php echo $c->category_id; ?>"><?php echo $c->category_name;?></option> 
    <?php 
     } 

    ?> 
</select> 

Controller

public function get_foods(){ 

     $categories = $this->input->post(NULL,true); 
     $sql = $this->subscription->get_foods($categories); 
     $result = array(

        'result' => $sql 

     ); 
     echo json_encode($result); 
    } 

und Modell

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(); 

} 

Ich möchte alle Lebensmittel in diesen Kategorien holen, also denke ich, dass ich einige mehrfache Bedingungen verwenden sollte?

+0

Was ist die Frage oder der Zweifel hier? Bitte erläutern Sie –

+0

Was Sie posten sollten, ist der Code der 'get_foods()' Funktion. Das brauchen wir. – rmondesilva

+0

sorry @rmondesilva –

Antwort

0

Sie müssen nur Kategorie speichern, mit jedem Essen und wenn Sie die Lebensmittel bekommen können Sie ein, wo Bedingung verwenden:

$this->db->where('category',$category); 
+0

ich kann dieses verwenden, wenn die Kategorie $ ein Array von Kategorie-ID ist @ PHP Geek –

+0

Nein, es ist nicht obligatorisch, da $ Kategorie ein Array ist. Es kann nur eine Variable sein. –

+0

nein, ich habe ein Array, das ist, was ich mehrere wo verwenden möchte @ PHP Geek –

0

die wo Spalten in() SQL-Funktion für diese.

für detaillierte Beschreibung darauf. finden Sie hier

0

Wenn dies helfen kann, denke ich, müssen Sie die Kategorien eins nach dem anderen, dann holen Sie es und setzen Sie es in einem Array. Hier ist ein Code,

public function get_foods() 
{ 
    $result = array(); 
    foreach($this->input->post('categories') as $c) 
    { 
     $result[] = $this->subscription->get_foods($c); 
    } 
    echo json_encode($result); 
} 

und für das Modell kann helfen, schlage ich vor, die Nutzung von AR von CI

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(); 
} 

Zuerst haben wir ein leeres Array zu machen, dann die foreach in der Post mit bekommen wir alle Lebensmittel pro Kategorie geben sie dann in das Ergebnisfeld zurück.

Hoffe, dass dies hilft und wenn es einen Fehler in der Sql gibt, da ich einige der Verbindung vergessen haben könnte, wäre ich bereit, wieder zu helfen.