IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Problemes avec les LIKE


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 111
    Points : 63
    Points
    63
    Par défaut Problemes avec les LIKE
    Bonjour,

    Je met en place un petit moteur de recherche sur mon site et je rencontre un probleme.

    si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select * 
    from annonces 
    where (nom like "%$mot" or nom like "$mot%" or description like "%$mot" or description like "%$mot")
    et que j'ai le mot sharan dans mon titre, il est censé me trouver quoi ? Si dans mon formulaire je met :
    -sharan --> il ne me trouve rien
    -shar --> il ne me trouve rien
    -ran --> il ne me trouve rien

    Je suis obligé de mettre LIKE "%$mot%" ce que je ne veux pas parceque si je tappe "ble" il pourrais me trouver table !! Et ca n'irais pas

    Si je met LIKE "$mot" si je cherche "table" il ne me trouveras pas "table." (Si quelqu'un fini sa phrase par un point.

    Comment je doit faire pour avoir un moteur fiable ?

    Merci

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut,

    peux tu donner un peu plus de précisions?
    tu parles de titre et tu fais des recherches sur le nom et la description
    peux tu donner un petit exemple de ce qui se trouve dans ta table et de ce que tu attends comme résultats

    Merci

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    En fait je suis en train de faire un site de petites annonces et j'ai besoin d'un moteur de recherche, qui chercherais par exemple le mot "sharan" soit dans mon champ titre, soit dans mon champ description.

    Exemple de ma table annonce :
    dans mon champs titre j'ai :"Sharan v6 boite auto cuir gpl"

    dans mon champs description j'ai : "vends sharan vr6 boite auto 7places cuir clim"

    Logiquement il devrais me la trouver cette ligne avec ma requete non ?

  4. #4
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Bonjour,


    non, il ne devrait pas trouver la ligne car votre mot tapé est "sharan", tandis que celui dans la description est "Sharan", ce n'est pas tout à fait la même chose. Pensez à la casse !

    ++

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Oui mais il y a le mot avec une majuscule dans le titre et tout en minuscule dans la description, il devrais quand même me trouver la ligne ?

  6. #6
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Je cites :

    Citation Envoyé par lonyc Voir le message
    dans mon champs titre j'ai :"Sharan v6 boite auto cuir gpl"
    "Sharan+" != "sharan%" on passe (cause de la casse)

    + étant le reste de ton titre

    Citation Envoyé par lonyc Voir le message
    dans mon champs description j'ai : "vends sharan vr6 boite auto 7places cuir clim"
    "+sharan+" != "%sharan" ET "+sharan+" != "sharan%" on passe (cause du fait qu'il est en milieu de phrase)

    + étant le reste de ta description

    Citation Envoyé par lonyc Voir le message
    Logiquement il devrais me la trouver cette ligne avec ma requete non ?
    Non, CQFD

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    ah c'est par rapport à la phrase ? Je pensais que c'était par rapport au mot c'est pour ca que je ne comprennais pas.

    Ben comment je fait alors pour qu'il me trouve le mot sans que si je cherche "un petit chat" il ne me sort pas tous les ligne ou il y a "un" ouè "petit" ?

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par lonyc Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select * 
    from annonces 
    where (nom like "%$mot" or nom like "$mot%" or description like "%$mot" or description like "%$mot")
    Apparemment, vu le nommage des variables, il y a un programme PHP qui génère la requête non ?
    Alors essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql = "SELECT *
      FROM annonces
      WHERE nom like '%'".$mot." OR nom like ".$mot."% 
        OR description like '%'".$mot." OR description like ".$mot."%";
    Si je met LIKE "$mot" si je cherche "table" il ne me trouveras pas "table." (Si quelqu'un fini sa phrase par un point.
    La raison pour laquelle ceci ne fonctionne pas est que c'est équivalent à :
    Et 'table' est différent de 'table.' !

    Sinon regarde du côté des expressions régulières.

Discussions similaires

  1. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55
  2. PROBLEME AVEC LES REQUETES IS NULL / NOT EXISTS
    Par sylvaine dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/06/2004, 13h26
  3. [langage] probleme avec les listes dans des listes
    Par pqmoltonel dans le forum Langage
    Réponses: 7
    Dernier message: 27/04/2004, 12h32
  4. Problem avec les *.AVI sur les panels
    Par NaDiA_SoFt dans le forum C++Builder
    Réponses: 3
    Dernier message: 31/08/2003, 22h50
  5. probleme avec les processus
    Par saidi dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/02/2003, 00h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo