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 PHP Discussion :

Moteur de recherche plusieurs mots


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Points : 189
    Points
    189
    Par défaut Moteur de recherche plusieurs mots
    Bonjour,

    Je cherche a faire une moteur de recherche des villes presentes dans une BDD pour mon site.

    voila le probleme lorsque je rechercher le mot paris (1mots) avec le code suivant tout est ok il me sort le bon resultat avec paris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $mots = explode(" ",$Mot); 	
     
    $query = "SELECT ville, pays FROM menu
    	WHERE ville LIKE '%$mots[0]%'";
    Par contre lorsque j'ecris paris (1mots) avec le code suivant il me renvoi toutes les villes de ma BDD.

    mais si je recherche les mots San Francisco (2 mots) le resultat est OK il me renvoi seulement san francisco

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $mots = explode(" ",$Mot); 	
     
    $query = "SELECT ville, pays FROM menu
    	WHERE ville ville LIKE '%$mots[0]%' OR ville LIKE '%$mots[1]%'";
    J'imagine que cela doit venir du fait que $mots[1] n'existe pas mais je ne sais pas comment faire pour ignorer cette valeur si elle est inexistante.

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ta méthode n'est de toute facon pas bonne : "San Fransisco" ressortirait "Moissan".

    Tu devrait t'interesser aux recherches Fulltext.

    Sinon d'un point de vue purement syntaxique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $query = "SELECT ville, pays FROM menu";
     
    $mots = explode(" ",$Mot);
    foreach ($mots as $value) {
        $criteres[] = "ville LIKE '%" . $value . "%'";
    }
     
    if (isset($criteres)) { $query .= implode(" OR ", $criteres); }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Points : 189
    Points
    189
    Par défaut
    Salut,

    j'ai le message d'erreur suivant:

    ERREUR MYSQL numéro: 1064
    Type de cette erreur: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIKE '%san%' OR ville LIKE '%francisco%'' at line 1
    cela veut-il dire que ma version MySQL n'est pas compatible avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($mots as $value) {
        $criteres[] = "ville LIKE '%" . $value . "%'";
    }
    Merci

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'ai oublié le WHERE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($criteres)) { $query .= " WHERE " . implode(" OR ", $criteres); }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 478
    Points : 189
    Points
    189
    Par défaut
    Merci ca fonctionne, j'ai rajoute SOUNDS LIKE a ton code pour plus de flexibilite dans la recherche et ca semble donner de bon resultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $criteres[] = "ville SOUNDS LIKE '%$Mot%' OR ville LIKE '%" . $value . "%'";

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Créer un moteur de recherche par mots clés rapide PHP
    Par MaitreTsiang dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 30/11/2009, 09h28
  2. Rechercher plusieurs mots dans un champ
    Par olivier_tp dans le forum Langage SQL
    Réponses: 1
    Dernier message: 18/05/2009, 18h49
  3. [MySQL] Recherche plusieurs mots dans un champ
    Par raptor2003 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 29/04/2009, 20h47
  4. Rechercher plusieurs mots clés dans un range
    Par omarter dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 24/11/2008, 13h21
  5. [Tableaux] Moteur de recherche par mot clés
    Par Nee dans le forum Langage
    Réponses: 4
    Dernier message: 20/01/2006, 11h30

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