requete avec des mots séparés par une virgule et bdd

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : requete avec des mots séparés par une virgule et bdd

Re: requete avec des mots séparés par une virgule et bdd

par moogli » 09 oct. 2011, 19:45

Perso je penche sur un problème de conception de la base, si tu nous explique le fonctionnement peut être que l'on pourra t'aider une solution plus simple et performante :)


@+

Re: requete avec des mots séparés par une virgule et bdd

par Cyrano » 09 oct. 2011, 19:20

regarde la doc PHP sur explode(), ça devrait t'aider à résoudre ça pour construire dynamiquement ta requête.

Re: requete avec des mots séparés par une virgule et bdd

par damien153 » 09 oct. 2011, 19:14

"Par contre pour récupérer les mots individuellement, je ne saisis pas exactement l'idée de ce que tu veux obtenir au juste"

En fait dans ma base, j'ai un champ qui s'appelle mot et qui contient cette valeur:

toto,damien,leon

or si je mets cette valeur dans une variable, j'obtiens: "toto,damien,leon" et pas "toto" , "damien" et "leon" donc aprés pour former ma requete, j'aurai ça:

Select id from table WHERE titre LIKE '%toto,damien,leon%' et pas ça:

Select id from table WHERE titre LIKE '%toto% AND LIKE '%damien%' AND LIKE '%leon%'

Re: requete avec des mots séparés par une virgule et bdd

par Cyrano » 09 oct. 2011, 19:00

Remplace les « AND » par « OR » et tu auras les résultats qu'il y ait un seul, deux, ou les trois (ou quatre ou davantage bien entendu) des mots recherchés.

Par contre pour récupérer les mots individuellement, je ne saisis pas exactement l'idée de ce que tu veux obtenir au juste

Re: requete avec des mots séparés par une virgule et bdd

par damien153 » 09 oct. 2011, 18:54

Bonjour Cyrano,

je vois bien la requete type:

Select id from table WHERE titre LIKE '%toto% AND LIKE '%damien%' AND LIKE '%leon%'

Mais:

1- Je ne vois pas comment récuperer les 3 mots séparement (peut etre un array sur ce champ ?)

et

2- Comment prendre en compte:

les 2 autres requetes dans le cas ou un ou deux des autres mots ne sont pas présents dans aucun autre "titre":

Select id from table WHERE titre LIKE '%toto% AND LIKE '%damien%'

Select id from table WHERE titre LIKE '%toto%


Merci de ton aide.

Re: requete avec des mots séparés par une virgule et bdd

par Cyrano » 09 oct. 2011, 18:39

Utilise l'opérateur LIKE dans ta clause WHERE, un petit coup d’œil dans la documentation devrait t'éclairer un peu

requete avec des mots séparés par une virgule et bdd

par damien153 » 09 oct. 2011, 16:28

Bonjour à tous,

Dans une base sql, j'ai un champ contenant des mots séparés par une virgule:

ex: toto,damien, leon

Je voudrais faire une requete sur un champ nommé "titre" et recherché les id qui contiennent soit les 3 mots soit deux ou un seul des trois mots.

Bien sur il se peut qu'il y en ait plus que que trois.

Quelqu'un a une idée comment faire ça ?

Merci de votre aide.