Pascale
2007-11-16 11:56:37 UTC
Je butte sur un problème agaçant.
Je suis en train de réécrire une application, ce qui veut dire que j'ai
récupéré des données anciennes issues de la version précédente.
Les gens qui s'inscrivent précisent leur région et leur pays. Dans la
version précédente du site, les données étaient enregistrées sans
mysql_real_escape_string, donc par exemple, on trouve dans la table, dans
le champ région : Côte d\'Azur.
Avec la nouvelle version, où l'entrée de données est protégée par
mysql_real_escape_string, cela donne bien sûr : Côte d'Azur.
Je propose aux visiteurs du site de visualiser les fiches de différentes
manières : toutes les fiches (aucun problème), pour un pays déterminé, et
pour une région déterminée. Dans ces deux derniers cas, ils choisissent
dans une liste déroulante.
Pour la région, par exemple, j'ai :
$sel2="SELECT region FROM fiches WHERE critere1='1' GROUP BY region";
$req2 = mysql_query($sel2) or die('<CENTER>Erreur SQL
!'.$sel2.'<br>'.mysql_error().'</CENTER>' );
<form name="formb" action=listereg.php method="post">
<h3>Sélection d\'une région</h3>
<p><select name="region" size="1">
<option selected value="0">Choisissez une région dans la liste</option>';
while ($data2=mysql_fetch_assoc($req2))
{$region=$data2['region'];
echo '<option value="'.$region.'">'.stripslashes($region).'</option>';}
echo '</select></p>
<p><input type="submit" name="envoi" value="Voir les fiches"></p></form>';
Et c'est après que ça se gâte, dans le programme listereg.php.
$nomregion=$_POST['region'];
// Et oui, c'est là que ça coince...
$region=?????????????????($nomregion);
echo '<h1>LISTE DE LA RÉGION '.stripslashes($nomregion).'</h1>
$sel3="SELECT id,prenom,region,descr from fiches WHERE critere1='1' AND
region='$region' ORDER BY id ASC";
$req3 = mysql_query($sel3) or die('<CENTER>Erreur SQL
!'.$sel3.'<br>'.mysql_error().'</CENTER>' );
(suivent les en-têtes du tableau et le while
($data3=mysql_fetch_assoc($req3)) permettant d'extraire toutes les fiches
correspondantes.
Mon souci est que je n'arrive pas à extraire les fiches correspondant à une
région enregistrée à la « nouvelle » manière. J'ai mis une série de points
d'interrogation dans le code pour bien montrer ma perplexité : par
exemple, écrire
$region=mysql_real_escape_string($nomregion); ne fonctionne pas, j'ai
essayé d'autres trucs sûrement pas plus logiques, et rien ne convient :
je ressors sans problème les vieux enregistrements (sur le mode « Côte
d\'Azur »), mais je n'arrive pas à extraire ceux qui sont enregistrés sur
le mode Côte d'Azur. Je n'ai pas de message d'erreur, simplement
aucune donnée n'est retournée.
J'allais oublier : les magic quotes sont désactivées.
Un peu d'aide serait la bienvenue...
Je suis en train de réécrire une application, ce qui veut dire que j'ai
récupéré des données anciennes issues de la version précédente.
Les gens qui s'inscrivent précisent leur région et leur pays. Dans la
version précédente du site, les données étaient enregistrées sans
mysql_real_escape_string, donc par exemple, on trouve dans la table, dans
le champ région : Côte d\'Azur.
Avec la nouvelle version, où l'entrée de données est protégée par
mysql_real_escape_string, cela donne bien sûr : Côte d'Azur.
Je propose aux visiteurs du site de visualiser les fiches de différentes
manières : toutes les fiches (aucun problème), pour un pays déterminé, et
pour une région déterminée. Dans ces deux derniers cas, ils choisissent
dans une liste déroulante.
Pour la région, par exemple, j'ai :
$sel2="SELECT region FROM fiches WHERE critere1='1' GROUP BY region";
$req2 = mysql_query($sel2) or die('<CENTER>Erreur SQL
!'.$sel2.'<br>'.mysql_error().'</CENTER>' );
<form name="formb" action=listereg.php method="post">
<h3>Sélection d\'une région</h3>
<p><select name="region" size="1">
<option selected value="0">Choisissez une région dans la liste</option>';
while ($data2=mysql_fetch_assoc($req2))
{$region=$data2['region'];
echo '<option value="'.$region.'">'.stripslashes($region).'</option>';}
echo '</select></p>
<p><input type="submit" name="envoi" value="Voir les fiches"></p></form>';
Et c'est après que ça se gâte, dans le programme listereg.php.
$nomregion=$_POST['region'];
// Et oui, c'est là que ça coince...
$region=?????????????????($nomregion);
echo '<h1>LISTE DE LA RÉGION '.stripslashes($nomregion).'</h1>
$sel3="SELECT id,prenom,region,descr from fiches WHERE critere1='1' AND
region='$region' ORDER BY id ASC";
$req3 = mysql_query($sel3) or die('<CENTER>Erreur SQL
!'.$sel3.'<br>'.mysql_error().'</CENTER>' );
(suivent les en-têtes du tableau et le while
($data3=mysql_fetch_assoc($req3)) permettant d'extraire toutes les fiches
correspondantes.
Mon souci est que je n'arrive pas à extraire les fiches correspondant à une
région enregistrée à la « nouvelle » manière. J'ai mis une série de points
d'interrogation dans le code pour bien montrer ma perplexité : par
exemple, écrire
$region=mysql_real_escape_string($nomregion); ne fonctionne pas, j'ai
essayé d'autres trucs sûrement pas plus logiques, et rien ne convient :
je ressors sans problème les vieux enregistrements (sur le mode « Côte
d\'Azur »), mais je n'arrive pas à extraire ceux qui sont enregistrés sur
le mode Côte d'Azur. Je n'ai pas de message d'erreur, simplement
aucune donnée n'est retournée.
J'allais oublier : les magic quotes sont désactivées.
Un peu d'aide serait la bienvenue...
--
Pascale
Pascale