Antislash récurrent...Au secours
Posté : 19 oct. 2007, 13:24
Bonjour à toutes et à tous!
Ayant fait une base de données "clients", je peux y faire des requêtes par une page de recherche avancée.
Dans le champ région, il est possible de selectionner plusieurs régions (boite de selection multiple)
Quand je ne choisis qu'une région le code fonctionne parfaitement avec la clause WHERE du select
Voici la requête générée
mais quand je selectionne plusieurs régions je me retrouve avec des antislash entre les guillemets générées par le champ caché "more" et pas d'antislash dans l'expression générée par le champ caché "parent_region"
Pourtant les deux variables "$parent_region" et "$more" subissent le même traitement!
Voici une partie du formulaire
Ayant fait une base de données "clients", je peux y faire des requêtes par une page de recherche avancée.
Dans le champ région, il est possible de selectionner plusieurs régions (boite de selection multiple)
Quand je ne choisis qu'une région le code fonctionne parfaitement avec la clause WHERE du select
Voici la requête générée
Code : Tout sélectionner
SELECT Nom_clients, Adr_client FROM france WHERE region='ile de france'; Code : Tout sélectionner
SELECT Nom_clients, Adr_client FROM france WHERE region='ile de france\' OR region=\'Picardie' ; Voici une partie du formulaire
<table>
<td>Région</td>
<td >=<input type="hidden" name="parent_region" value="=,','">
<input type="hidden" name="more" value="' OR region='"></span></td>
<td >
<?php
$regionList = "<select id='nom_region' name='nom_region[]' multiple>";
$sSql= "SELECT DISTINCT `region` FROM `france`
ORDER BY `region` Asc";
$res = mysql_query($sSql,$conn) or die("Echec lors de l'exécution de la requête à la ligne " . __LINE__ . ": " . error($conn) . '<br>SQL:' . $sSql);
if ($res) {
$row = 0;
while ($row = mysql_fetch_array($res)) {
$rowregion= explode(",",$region);
$x_regionList .= "<option value=\"" . htmlspecialchars($row[0]) . "\"";
foreach ($rowregion as $cntregion) {
if ($row["region"] == trim($cntregion)) {
$regionList .= " selected";
break;
}
}
$regionList .= ">" . $row["region"] . "</option>";
$row++;
}
}
mysql_free_result($row);
$regionList .= "</select>";
echo $regionList;
?></td>
</tr>
</table>
Et voici l'exécution aprés appui sur le bouton recherche<?php
$more = (get_magic_quotes_gpc()) ? stripslashes(@$_POST["more"]) : @$_POST["more"];
$region = @implode($more,@$_POST["nom_region"]);
$parent_region = (get_magic_quotes_gpc()) ? stripslashes(@$_POST["parent_region"]) : @$_POST["parent_region"];
$cherch = "";
if ($region <> "") {
$cherch .= "nom_region=" . urlencode($region);
$cherch .= "&parent_region=" . urlencode($parent_region);
}
if ($cherch <> "") {
if ($URL <> "") $URL .= "&";
$URL .= $cherch;
}
?>
Si quelqu'un a la solution...