2017-10-12 1 views
0

Je filtre des données, j'ai un champ appelé «faculté» et les options sont «Professeur, professeur associé, professeur de recherche» ... etc. Mon filtrage fonctionne pour tous les autres domaines mais pour ce cas précis, j'ai des problèmes car le mot professeur apparaît dans toutes les données et par conséquent, j'obtiens toutes les données correspondant au mot «professeur» afin de ne rien filtrer. Comment puis-je le faire pour rechercher uniquement le mot spécifique "Professeur" et éviter d'avoir tous les autres (professeur de recherche, professeur agrégé ...)?Recherche de mot EXACT dans la base de données à l'aide de Code Igniter

// Mon code

function get_search_filters($limit, $start, $search_faculty) 
{ 
    $this->db->order_by('lname', 'asc'); //order records by last name 
    $this->db->limit($limit, $start); 

    /* search keyword in all columns*/ 
    $this->db->like('faculty', $search_faculty); 

    $query = $this->db->get('expertise'); 
    if ($query->num_rows() > 0) { 
     foreach ($query->result() as $row) { 
      $data[] = $row; 
     } 
     return $data; 
    } 
    return false; 
} 
+1

Utiliser 'WHERE' au lieu de' like'. –

+0

ajoutez une colonne "title_id" à votre tableau, où e.g. professeur = 0 professeur de recherche = 1 etc ... puis ajouter une clause where pour filtrer le title_id désiré – Vickel

Répondre

1
$this->db->order_by('lname', 'asc'); //order records by last name 
$this->db->limit($limit, $start); 

$this->db->where('faculty', $search_faculty); 
$query = $this->db->get('expertise'); 

https://www.codeigniter.com/userguide3/database/query_builder.html#looking-for-specific-data

+0

Merci, ça a complètement glissé dans mon esprit que 'où' existait –

+0

Il y a quelques exceptions, mais en général 'where' va faire beaucoup mieux sur les champs indexés que 'like' – MrCarrot