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

Signaler
Messages postés
34
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
15 décembre 2005
-
Messages postés
34
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
15 décembre 2005
-
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.

4 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
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']."'");
Messages postés
34
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
15 décembre 2005

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 !
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
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'
Messages postés
34
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
15 décembre 2005

Grand merci et bon aprés-midi