Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/06/2011, 15h28   #1
Futur Membre du Club
 
FX
Inscription : juillet 2010
Messages : 75
Détails du profil
Informations personnelles :
Nom : FX

Informations forums :
Inscription : juillet 2010
Messages : 75
Points : 17
Points : 17
Par défaut Requete sur partie champ SQL

bonjour,
j'ai un champ sur lequel je souhaite effectuer une recherche.

Ce champ se compose de la manière suivante :
Mot-clé1; Mot-clé2; Mot-clé3;

je souhaiterais faire une requête pour une autocomplétion en allant rechercher uniquement sur le mot-clé1 donc, la première partie avant le premier point-virgule.

Comment construire ma requete MySQL ?

Voici ma requête actuellement :
Code :
$sql="SELECT DISTINCT mots_cles FROM photos WHERE mots_cles LIKE '%".$_GET['term']."%' ORDER BY mots_cles ASC;";
pixworld est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 16h38   #2
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 853
Points : 1 332
Points : 1 332
salut,

déjà ON NE PASSE JAMAIS DIRECTEMENT DES DONNEES VENANT DE $_GET ou $_POST sous peine de permettre des attaques par injection...

c'est quoi ce champ? une variable php?
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/06/2011, 16h42   #3
Futur Membre du Club
 
FX
Inscription : juillet 2010
Messages : 75
Détails du profil
Informations personnelles :
Nom : FX

Informations forums :
Inscription : juillet 2010
Messages : 75
Points : 17
Points : 17
c'est un champ permettant une recherche sur des mots-clés en ajax.
pixworld est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 16h46   #4
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 853
Points : 1 332
Points : 1 332
ce qui se passe coté js n'est pas important quand tu parles d'un truc qui agit coté php/mysql...

faut que tu le nommes pour qu'on sache où il intervient dans ta requête... est ce que c'est ton $_GET?
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 16h56   #5
Futur Membre du Club
 
FX
Inscription : juillet 2010
Messages : 75
Détails du profil
Informations personnelles :
Nom : FX

Informations forums :
Inscription : juillet 2010
Messages : 75
Points : 17
Points : 17
evidemment, c'est le $_GET c'est la seule condition WHERE dans la requete.


Je cherche à stopper la recherche sur mon champ après le premier point-virgule.
Y-a-t-il une possibilité en Mysql ?
pixworld est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 17h10   #6
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 853
Points : 1 332
Points : 1 332
rien n'est évident.... ça pouvait décrire la table mots-cles... oublie pas que les autres sont pas à fond dans ton projet et sa conception

oui, mais c'est moins simple et optimisé que de scinder ta variable en php et de passer juste la première entrée du tableau obtenu par un split par exemple sur ton $_GET...

en mysql tu dois localiser le 1er ';' et scinder ta chaine en 2 par rapport à cette position...

dans tous les cas tu auras une boucle de balayage des mots clés...

avec peu des mots-clés tu verras pas vraiment la différence entre les 2 en terme de temps d'exécution...
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 17h14   #7
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
En combinant substring et instr, quleque chose comme :
Code :
SUBSTRING(mots_cles,1,instr(mots_cles,';')) LIKE ...
Et renseigne toi sur le conseil de ericd69 :
Citation:
ON NE PASSE JAMAIS DIRECTEMENT DES DONNEES VENANT DE $_GET ou $_POST sous peine de permettre des attaques par injection
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h16.


 
 
 
 
Partenaires

Hébergement Web