Requete bdd sur la premiere lettre d'un champ

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous!

Je suis en train de développer un petit site pour les étudiants en économie, et ce site comportera entre autre une liste des auteurs importants de la discipline.

Il sera possible de rechercher les auteurs par ordre alphabétique, comme sur l'image suivante: http://prntscr.com/6x8cqa

J'aimerai récupérer la liste des auteurs en bdd dont la première lettre du nom commence par la lettre passé en paramètre. Le soucis est que je ne sais pas comment construire la requête. J'utilise Active Record pour faire les requêtes et en cherchant dans la documentation je n'ai rien trouvé qui me soit utile. Voici mon code actuel :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 public function get_auteurs($lettre)
    {
       $resultat = $this->db->select('*')
                     ->from('auteurs')
                     ->like('nom',$lettre)
                     ->get()
                     ->result();

        return $resultat;  
    }

Le soucis est que avec cette requête l'auteur "Keynes" apparait en résultats pour la lettre K, mais aussi pour la lettre "E", "Y", "N" etc… J'ai essayer bêtement un substr('$nom',0,1) mais evidement ça ne fonctionne pas…

Sinon je peux récupérer les données avec ma requête actuelle et les filtrer par la suite en parcourant le tableau obtenu et ne gardant que les résultats qui correspondent… mais j'aimerai une solution "native", ne serait-ce pour avoir éviter d'avoir 90% des retours de la requête inutiles.

Merci d'avance pour votre aide :)

"Il est vraiment regrettable que tous les gens qui savent parfaitement comment diriger un pays soient trop occupés à conduire des taxis et à couper des cheveux"

+0 -0
Auteur du sujet

Merci beaucoup pour votre réponse!

Merci à toi Yoch, c'était ça (avec after au lieu de before dans mon cas)! Le soucis quand on lit une documentation et qu'on débute, c'est qu'il faut la comprendre xD. J'avais bien vu ce passage, mais je n'avais pas trop compris à quoi correspondant le placement de la wildcarte et ce que cela fessait… du coup je n'avais pas vu que c'était la solution à mon problème! Dommage à ce niveau là que la doc ne donne pas à chaque fois un petit exemple pour illustré le comportement des requêtes!

"Il est vraiment regrettable que tous les gens qui savent parfaitement comment diriger un pays soient trop occupés à conduire des taxis et à couper des cheveux"

+0 -0

Le soucis quand on lit une documentation et qu'on débute, c'est qu'il faut la comprendre xD. J'avais bien vu ce passage, mais je n'avais pas trop compris à quoi correspondant le placement de la wildcarte et ce que cela fessait… du coup je n'avais pas vu que c'était la solution à mon problème! Dommage à ce niveau là que la doc ne donne pas à chaque fois un petit exemple pour illustré le comportement des requêtes!

Demandred

La doc est plutôt claire, avec des exemples de requête SQL produite.

Ce qui te manquait, c'est plutôt la doc de LIKE en SQL: https://dev.mysql.com/doc/refman/5.5/en/pattern-matching.html.

+1 -0
Auteur du sujet

Oui en effet :) Merci pour votre aide!

"Il est vraiment regrettable que tous les gens qui savent parfaitement comment diriger un pays soient trop occupés à conduire des taxis et à couper des cheveux"

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte