Comment gérer les apostrophes d'un mot provenant d'un formulaire ? [Résolu]

cs_bonobos 34 Messages postés jeudi 22 avril 2004Date d'inscription 15 décembre 2005 Dernière intervention - 17 nov. 2005 à 13:21 - Dernière réponse : cs_bonobos 34 Messages postés jeudi 22 avril 2004Date d'inscription 15 décembre 2005 Dernière intervention
- 17 nov. 2005 à 15:12
Bonjour,
Dans un formulaire l'utilsateur entre le nom d'une commune par exemple :
L'isle Jourdain..
<td>Commune :</td>
<td>"></td>

Dans un tableau s'affiche le nom de la commune, au passage la souris le nombre de ventes dans cette commune et le lien pour acceder à toutes les ventes de cette commune.
<?php //affiche la commune, le nbre de ventes pour cette commune et le lien pour voir ttes les ventes de cette commune
$req = mysql_query("select * from vente where commune='$vente[commune]'");
$resultats = mysql_numrows($req);
echo '<td bgcolor='.$bgcolor.'>';?>
<?php $lien="index.php?liste=ventes&choix=commune&ville_choisi=".$vente['commune'];
{?>
<?php echo ('['.$lien.' '.$vente ['commune'].']');
}?>
</td>

Et je viens de m'apercevoir que les communes qui contiennent une apostrophe n'affichent pas le nombre de ventes ! Par contre celles qui ne contiennent pas d'apostrophes affichent correctement par exemple:
Il y a X constructions à Grenade
comment puis-je remédier à celà ? Merci.
Afficher la suite 

4 réponses

Répondre au sujet
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 17 nov. 2005 à 13:34
+3
Utile
Hello,

erreur fatale...
Tu aurais dû enregistrer tes commune,s dans ta base, en échappant les caractères dangereux, avec par exemple la fonction dédies : mysql_real_escape_string().

Ensuite, tu aurais "de-echappé" ces noms avant de les afficher dans ton champ texte.

Et lors de la saisie utilisateur, ben tu les aurais "re-échappées" avant d'effectuer la recherche dans ta table.

Là, en l'occurence, tu peux peut-être tricher...(mais pense à refaire ta table et les insertions, parce que c'est dangereux, en plus...) :
$commune = str_replace ("'", "%",$vente['commune']);
$req = mysql_query("select * from vente where commune LIKE $commune");

2 choses néanmoins :

on n'utilise pas select * !
Ensuite, c'est $vente['commune'] et pas $vente[commune]. Donc ta requête aurait dû être :

$req = mysql_query("select cequetucherches from vente where commune='".$vente['commune']."'");
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de malalam
cs_bonobos 34 Messages postés jeudi 22 avril 2004Date d'inscription 15 décembre 2005 Dernière intervention - 17 nov. 2005 à 14:15
0
Utile
Salut et merci pour la rapidité de la réponse...
Je t'ai entendu et fait ceci:
<?php //affiche la commune, le nbre de ventes pour cette commune et le lien pour voir ttes les ventes de cette commune
$commune = str_replace ("'", "%",$vente['commune']);
$req = mysql_query("select * from vente where commune LIKE $commune");
$resultats = mysql_numrows($req); <=== ici la ligne 168 mais je pense que c'est celle du dessus qui crée probléme !

Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in d:\easyphp\www\gbf\ventes.php on line 168

D'autre part entrer ttes les communes à la main dans une table serait un boulot de titan !
Commenter la réponse de cs_bonobos
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 17 nov. 2005 à 15:03
0
Utile
Je ne connaissais pas mysql_numrows...à ma connaissance, il n'y a que mysql_num_rows()



Essaye ta requête en dur : prends une de tes communes avec une
apostophe, remplace l'apostrophe par % et fais ta requête avec ce mot à
la place de $commune.



Ah oui...pas lapeine :

LIKE '$commune'
Commenter la réponse de malalam
cs_bonobos 34 Messages postés jeudi 22 avril 2004Date d'inscription 15 décembre 2005 Dernière intervention - 17 nov. 2005 à 15:12
0
Utile
Grand merci et bon aprés-midi
Commenter la réponse de cs_bonobos

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.