comparaison avec une variable, like ?

Eléphanteau du PHP | 21 Messages

07 juin 2007, 09:21

bonjour, je dois faire un test d'existance pour un nom et afficher la liste si oui (un formulaire d'ajout sinon)
donc je récupère le nom par :

Code : Tout sélectionner

$nom=$_POST['NomEntreprise'];
mais pour la comparaison il faudrait que je puisse afficher toutes les entreprises ayant un nom ressemblant au nom rentré.
Faute de trouver j'ai:

Code : Tout sélectionner

$sql = "select * from entreprise where NomEntreprise=" . "'".$nom."'";
est ce que je peux utiliser like et comment?

ViPHP
ViPHP | 928 Messages

07 juin 2007, 09:47

Tu peux utiliser like comme ceci dans ta requête :
WHERE mon_champ LIKE 'toto' -> cherche tous les champs contenant uniquement toto
WHERE mon_champ LIKE 'toto%' -> cherche tous les champs commencant par le mot toto avec ce qu'on veut ensuite
WHERE mon_champ LIKE '%toto' -> cherche tous les champs finissants par le mot toto, avec ce qu'on veut avant
WHERE mon_champ LIKE '%toto%' -> cherche tous les champs contenant le mot toto

PS: MySQL gère aussi l'opérateur REGEXP pour des recherches plus pointues ... mais c'est assez lourdingue.

Eléphanteau du PHP | 21 Messages

07 juin 2007, 10:06

oui mais le problème c'est que $nom est une varaible, son contenu est "aléatoire", je peux écrire la requête de la même manière que si c'était 'toto' ?

ViPHP
ViPHP | 928 Messages

07 juin 2007, 10:28

Oui, comme ceci :
$sql = 'SELECT * FROM ta_table WHERE ton_champ LIKE \'%' . mysql_real_escape_string($ta_variable) . '%\'';
par exemple

Eléphanteau du PHP | 21 Messages

07 juin 2007, 10:35

ça ne marche pas

Code : Tout sélectionner

$sql = "select * from entreprise where NomEntreprise LIKE '%'" . mysql_real_escape_string($nom). "'%'" ;

ViPHP
ViPHP | 928 Messages

07 juin 2007, 10:39

Code : Tout sélectionner

$sql = "select * from entreprise where NomEntreprise LIKE '%" . mysql_real_escape_string($nom). "%'" ;
plutôt.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

07 juin 2007, 10:40

ça ne marche pas
Cette phrase seule est strictement inutile

Pourquoi ça ne marche pas : message d'erreur ? résultat qui ne correspond pas à ce que tu attends ?

B*rdel ! donnez un max d'infos, il est trop difficile d'avoir à deviner ce qui ne va pas pour vous aider !!!

Mammouth du PHP | 19672 Messages

07 juin 2007, 10:41

ça ne marche pas
C'est le genre de réponse typique inutile. Heureusement que tu as eu la bonne idée de nous ajouter le code. Le message d'erreur obtenu aurait été encore plus intéressant, surtout pour toi.

Correction probable :
$sql = "select * from entreprise where NomEntreprise LIKE '%". mysql_real_escape_string($nom) ."%'" ;
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 21 Messages

07 juin 2007, 10:43

arf désolée pour le dérangement :oops:
merci ^^

Mammouth du PHP | 19672 Messages

07 juin 2007, 13:32

As-tu noté la différence entre ta requête et la correction ? Sais-tu pourquoi maintenant ça fonctionne ? Parce que l'intéressant est là ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 21 Messages

12 juin 2007, 14:22

oui la c'est bon merci :)
j'ai tendance a m'emmeler un peu les pinceaux avec les simple et double quotes...:s

Mammouth du PHP | 693 Messages

12 juin 2007, 14:27

utilise un logitiel avec coloration syntaxique, ca t'aidera beaucoup.