Reqête numéros de rue

legniarf
Invité n'ayant pas de compte PHPfrance

31 mai 2006, 12:41

Bonjour,

J'ai créé une base de donnée des rues de Paris. Dans un formulaire, les utilisateurs tapent le numéro et le nom de leur rue et en réponse ils ont l'hôpital dont ils dépendent.

Tout marchait bien et au moment de mettre la dernière patte à mon code PHP, il ne trouve pas de réponse quand on tape un numéro compris entre 10 et 20. Les autres numéros fonctionnent parfaitement.

J'ai réduit ma base MySQL et mon code PHP au strict minimum pour isoler l'erreur, mais je ne l'ai pas trouvée.

J'ai créé une table intitulée "rues", dans laquelle il y a 4 champs : "nom_de_la_voie" VARCHAR(255), "reponse" VARCHAR(8), "pair_min"
VARCHAR(4) et "pair_max" VARCHAR(4). Je les ai respectivement remplis avec les données suivantes : "HAUTEVILLE", "XX", "2" et "9998".

J'ai écrit la requête SQL suivante :

Code : Tout sélectionner

$sql = "SELECT reponse FROM rues WHERE nom_de_la_voie = 'HAUTEVILLE' AND pair_min <= '8' AND pair_max >= '8'"; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $data = mysql_fetch_array($req); mysql_free_result ($req); mysql_close (); if(empty($data['reponse'])) {echo '<font color="red">Réponse non trouvée. Vérifiez l\'exactitude des informations que vous avez saisies.</font>';} else {echo 'La réponse est '.$data['reponse'].'.';}
Dans ce cas la réponse est trouvée. Idem si je mets à la place du 8 un 6, un 24 ou un 31. Mais si je mets un chiffre compris entre 10 et 19, ça affiche ma phrase d'erreur :
Réponse non trouvée. Vérifiez l'exactitude des informations que vous avez saisies.
(De plus, hier la réponse était trouvée quand je rentrais un chiffre impair compris entre 11 et 19 !)

Et tout ça ça le fait aussi bien en local sur mon Macintosh que sur mon espace web chez Free.

Mammouth du PHP | 19672 Messages

31 mai 2006, 13:10

Le type de champ en VARCHAR pour les numéros de rue, ce n'est peut-être pas le choix le plus approprié : un type SMALLINT UNSIGNED aurait probablement été plus judicieux et t'aurait laissé non seulement une marge suffisante mais permettrait même des calculs directement en SQL, chose inenvisageable avec un VARCHAR...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

legniarf
Invité n'ayant pas de compte PHPfrance

31 mai 2006, 13:21

Super ! Merci beaucoup ! J'ai mis les numéros de rues en SMALLINT UNSIGNED et ça marche.