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...