Php/sql. Filtre avec comparaison de textes

Résolu/Fermé
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 - 7 août 2013 à 15:31
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 - 8 août 2013 à 10:28
bonjours à tous,

J'ai besoin de votre aide car je bloque completement.

Je récupère d'un formulaire des valeurs en méthode get. (ville et code postal)

je les passe dans deux variable et souhaite récupérer des informations en base mais la requête ne semble pas prendre en compte la variable $ville.

$requete = "SELECT ville FROM cp_autocomplete WHERE cp=".$cp." AND passage=".$passage." AND ville LIKE ".$ville." ";
$resultat = mysql_query($requete);
$total = mysql_num_rows ($resultat); 
echo $total;


Dès que je rajoute la ville dans le filtre $total devient vide et la requete semble ne plus fonctionner.

Merci d'avance pour votre aide.
A voir également:

2 réponses

ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
7 août 2013 à 15:36
Salut,

tel que tu as écris ton like, il n'y a aucun filtre, c'est comme si tu faisais :
ville = ".$ville."

regarde la doc : https://www.techonthenet.com/sql/like.php

n'oublie pas non plus que pour utiliser des chaines de caractères dans ton where, tu dois mettre tes valeurs entre quotes
0
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 13
7 août 2013 à 15:59
Merci pour ta rapidité.

Alors oui c'est volontaire, je souhaite que le nom de la ville soit identique car j'ai une autocompletion sur mon input. Le LIKE n'est donc pas important.

Pour ce qui est du des quotes je ne vois pas ou j'en ai oublié ? j'ai vu tellement de façon d'écrire les requetes en cherchant une solution que j'ai tout testé et je ne sais plus ce qui est bon.

Le souci c'est que cela fonctionne :

$requete = "SELECT ville FROM cp_autocomplete WHERE cp=".$cp." AND passage=".$passage." AND ville='thourotte' ";


mais pas cela

$ville='thourotte'

$requete = "SELECT ville FROM cp_autocomplete WHERE cp=".$cp." AND passage=".$passage." AND ville=".$ville." ";
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
7 août 2013 à 16:01
Oui, c'est tout à fait normal, dans ta requête avec $ville en variable, tu n'as pas de quote autour de $ville.

Si tu fais un echo $requete, tu t'en rendras compte tout de suite.
0
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 13
7 août 2013 à 16:11
de dieu ça fait 3 heure que je suis dessus a cause de ces quotes. Un grand merci.
Connaîtrais tu un bon site pour que j'apprenne une bonne fois pour toute LA façon d'utiliser les quotes dans les requêtes ? Parce que je t'assure que j'ai vu personne écrire de la meme façon

entre cp=$cp cp='$cp' et cp=".$cp." , les trois marche, mais pas pour ville
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
7 août 2013 à 16:23
Oui, parce que pour une valeur numérique, les quotes ne sont pas nécessaires.

Je ne connais pas vraiment de cours sur la question mais je peux te faire un petit topo :

Comme je l'ai dis, dans une requête, des quotes doivent impérativement encadrer des valeurs alphanumériques.
On peut utiliser quotes ou double quotes comme ceci :

$val = "valeur";
$string = "ceci est ma '$val'";

$val = 'valeur';
$string = 'ceci est ma \''.$val.'\'';


$val = 'valeur';
$string = 'ceci est ma "'.$val.'"';

$val = "valeur";
$string = "ceci est ma \"$val\"";


le slash servant de caractère d'échappement. Tu peux tester pour voir ce que ça donne.
Une bonne technique quand tu as un doute dans une requête, c'est de l'afficher, parfois la faute va te sauter aux yeux. Si tu ne vois pas, tu peux l'exécuter dans phpmyadmin, tu auras encore d'autres infos.
0
vermich89 Messages postés 63 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 19 mars 2015 13
8 août 2013 à 10:28
Merci beaucoup pour tes conseils. Bonne journée
0