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

Requêtes MySQL Discussion :

Requête avec plusieurs mots


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 77
    Points : 50
    Points
    50
    Par défaut Requête avec plusieurs mots
    Bonjour,

    J'effectue une requête avec un champ "thème", où l'utilisateur peut rentrer plusieurs mots. La requête fonctionne très bien lorsque l'on rentre un seul mot mais dès qu'on rentre plusieurs mots il faut obligatoirement que tous ces mots soient présents dans une entrée de ma base de donnée pour obtenir un résulat. Or je voudrais faire une requête moins stricte qui trouve des résultats avec juste un ou certains mots de champ "thème". Comment procéder ?

  2. #2
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    C'est simple tu fait un explode sur les espace du contenu de ton champ, ca te donne un tableau et apres tu fait un like dans ce style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $mots = explode(' ', $cher);
    	if(count($mots) > 1) {
    		foreach($mots as $mot) {
    			if($i) {
    				$req .= ' AND ';
    				$req .= '( Theme LIKE \'%';
    				$req .= $mot . '%\' )';
    			}
    			else {
    				$req .= '( Theme LIKE \'';
    				$req .= $mot . '%\' )';
    			}
    			$i=1;
    		}
    Et en passant tu peut egalement faire cela avec une REGEX:
    Partie en php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $chereg = str_replace(' ','.*',$tontexte);
    $chereg .= '.*';
    Pour la requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM cp WHERE theme COLLATE latin1_german1_ci REGEXP '^(" . $chereg . ")$'
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  3. #3
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 77
    Points : 50
    Points
    50
    Par défaut
    Merci, j'ai essayé la deuxième méthode, elle fonctionne très bien mais à chaque fois seuls les résulats avec tous contenant tous les mots de mon champ thème apparaissent. N'est t'il pas possible de faire apparaître les résultats contenant seulement certains mots de ce champs ? ....en introduisant un OR quelque part ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 39
    Points : 18
    Points
    18
    Par défaut
    Tu sais montrer ta requetes et ta tables stp ainsi que son contenu? ainsi je te dis quoi

  5. #5
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Citation Envoyé par zeugzeug
    Merci, j'ai essayé la deuxième méthode, elle fonctionne très bien mais à chaque fois seuls les résulats avec tous contenant tous les mots de mon champ thème apparaissent. N'est t'il pas possible de faire apparaître les résultats contenant seulement certains mots de ce champs ? ....en introduisant un OR quelque part ?
    Genre, hum, comme qui dirait, ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    			IF($i) {
    				$req .= ' AND ';
    "AND" => "OR" ?

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

Discussions similaires

  1. [Cours pt-02][Débutants]Requête avec plusieurs sommes
    Par Papy Turbo dans le forum Sondages et Débats
    Réponses: 18
    Dernier message: 29/10/2007, 18h55
  2. recherche avec plusieurs mots-clé
    Par MAMANHOU dans le forum IHM
    Réponses: 6
    Dernier message: 12/07/2007, 10h05
  3. Méthode find avec plusieurs mots à chercher
    Par domb_st dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/06/2007, 17h33
  4. une requête avec plusieurs INNER JOIN, cmt faire ?
    Par elhosni dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/01/2006, 17h55
  5. Réponses: 6
    Dernier message: 04/11/2005, 17h09

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