Amélioration d'une petite requête SQL


Meeuuuhhh
WRInaute passionné
WRInaute passionné
 
Messages: 2046
Inscription: 8 Jan 2007

Amélioration d'une petite requête SQL

Message le Mer Oct 07, 2009 9:29

Bonjour,

Voilà, je voudrais améliorer cette méprisable petite requête SQL et m'adresse aux princes de programmation que vous êtes.

En deux, le problème.

J'ai ces deux valeurs dans des champs de la BDD :
"art"
"art (représentation)"

Je souhaite faire une requête qui trouve la première expression dans la deuxième.

J'ai donc fait ça, tout simplement :
Code: Tout sélectionner
SELECT
id
FROM tags
WHERE
nom
like '$title%'";


Donc là, la requête est censée me retourner le résultat "art (représentation)", à partir d'une recherche effectuée sur le mot "art".
Mais ça ne fonctionne pas. :oops:

Comment améliorer la chose, s'il vous plait ?

Babylon
WRInaute discret
WRInaute discret
 
Messages: 191
Inscription: 18 Oct 2006

Re: Amélioration d'une petite requête SQL

Message le Mer Oct 07, 2009 11:11

Salut,

Normalement ton like devrait être comme ca
Code: Tout sélectionner
like '%$title%'


Bye,


Meeuuuhhh
WRInaute passionné
WRInaute passionné
 
Messages: 2046
Inscription: 8 Jan 2007

Re: Amélioration d'une petite requête SQL

Message le Mer Oct 07, 2009 11:19

Oui j'ai fait la modification mais ça ne fonctionne pas mieux. Ca change quoi sinon comme ça, normalement ?

En tout cas, ça fonctionne toujours pas.


ortolojf
WRInaute passionné
WRInaute passionné
 
Messages: 1664
Inscription: 14 Aoû 2002

Re: Amélioration d'une petite requête SQL

Message le Mer Oct 07, 2009 11:40

Mmmmmhhhh....

La variable va-t-elle êtrre interprétée ?

Vous mettez dans une variable $sql :

$sql = "SELECT id FROM tags WHERE nom like '" . $title . "%'";

A ce moment-là, vous êtes sûr que la variable $title va être interprétée...

Normalement, si la chaîne de caractères commune est au début, ça roule. ;)

Amicalement.

Jean-François Ortolo

Babylon
WRInaute discret
WRInaute discret
 
Messages: 191
Inscription: 18 Oct 2006

Re: Amélioration d'une petite requête SQL

Message le Mer Oct 07, 2009 12:59

Le % sert de joker. Si tu le met qu'à la fin comme le dit Jean Francois il faut que la chaîne de caractères commune soit au début. Si tu met % avant et après la chaine peut être n'importe où.
Avec la concaténation de Jean Francois ca fonctionne non ?

leica69
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 30
Inscription: 25 Oct 2004

Re: Amélioration d'une petite requête SQL

Message le Jeu Oct 08, 2009 7:57

Juste une piste: teste si ta requête est sensible à la casse.
De mémoire, je ne sais plus si LIKE y est sensible. Si ta recherche comporte des caractères accentués, tu peux aussi avoir des soucis selon l'interclassement de ta bdd.


Meeuuuhhh
WRInaute passionné
WRInaute passionné
 
Messages: 2046
Inscription: 8 Jan 2007

Re: Amélioration d'une petite requête SQL

Message le Jeu Oct 08, 2009 9:27

Hum, ça ne fonctionne pas non plus avec la requête d'ortolojf.

En fait je me suis trompé d'ordre dans mon explication : C'est la variable ayant la valeur "art (représentation)" que je veux trouver dans la table contenant "art".

Et non l'inverse, désolé.


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8566
Inscription: 23 Nov 2005

Re: Amélioration d'une petite requête SQL

Message le Jeu Oct 08, 2009 9:31

Si tu fais un echo de l'ordre SQL généré, il ressemble à quoi ? (Après concaténation des variables et donc avant de l'exécuter) ?


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités