Bonjour à tous,
Nouvelle question, et j'espère, la dernière. On va dire que j'abuse :)
J'ai donc une page PHP dans la quelle s'affiche une liste d'adhérents. Cette liste est obtenue par la construction, on va dire dynamique, d'une requete SQL. Cette requête est construite par concaténation à l'aide d'un formulaire.
Le soucis est que j'aimerais pouvoir utiliser, parmi les différents éléments du formulaire, ue liste déroulante à selection multiple. Seulement, à l'image des autres éléments du formulaire j'aimerais pouvoir ajouter LES différentes sélections dans ma requête SQL.
Etant donné qu'il y a 29 sélection possible, des SI sont impensables à mon avis.
J'ai donc pensé à utiliser un array, ca fonctionne mais je n'arrive pas à insérer les OR entre mes valeurs, je n'ai que des AND.
Vous allez mieux comprendre avec l'extrait de script ci-dessous.
Ma question est : Avez vous une idée comment insérer des OR à la place des AND entre chaque canton='blabla' dans le cas de selections multiples dans la liste déroulante.
D'avance merci à vous pour votre aide.
Le code :
<?php
$host="";
$user="";
$pass="";
$database="";
$canton=array();
$canton=($_POST['canton']);
$nom=($_POST['nom']);
$circonscription=($_POST['circonscription']);
$comitedepartemental=($_POST['comitedepartemental']);
$bureau=($_POST['bureau']);
$deleguedecanton=($_POST['deleguedecanton']);
$AJ=($_POST['AJ']);
$POJP=($_POST['POJP']);
$cotisation=($_POST['cotisation']);
$tri=($_GET['tri']);
$connect=mysql_connect($host,$user,$pass) or die('Base de données indisponible : ' . mysql_error());
mysql_select_db($database) or die('Base de données non trouvée');
$query="select * FROM adherents WHERE 1=1 ";
if (is_array($canton))
foreach ($canton as $valeur)
{
if ($valeur !='') {
$query .=' AND `Canton`="'.$valeur.'"';
$canton2=''.$valeur.'';
}
}
if ($nom!='') {
$query .=' AND `Nom` LIKE "'.$nom.'"';
$nom2=''.$nom.'';
}
if ($circonscription!='') {
$query .=' AND `Circonscription`="'.$circonscription.'"';
$circonscription2=''.$circonscription.'';
}
if ($comitedepartemental!='') {
$query .=' AND `Comité Départemental`="'.$comitedepartemental.'"';
$comitedepartemental2=''.$comitedepartemental.'';
}
if ($bureau!='') {
$query .=' AND `Bureau`="'.$bureau.'"';
$bureau2=''.$bureau.'';
}
if ($deleguedecanton!='') {
$query .=' AND `Délégué Canton`="'.$deleguedecanton.'"';
$deleguecanton2=''.$deleguedecanton.'';
}
if ($AJ!='') {
$query .=' AND `AJ`="'.$AJ.'"';
$AJ2=''.$AJ.'';
}
if ($POJP!='') {
$query .=' AND `POJP`="'.$POJP.'"';
$POJP2=''.$POJP.'';
}
if ($cotisation!='') {
$query .=' AND `2008`!=""';
$cotisation2=''.$cotisation.'';
}
if ($tri !='') {$query .=' ORDER BY '.$tri.'';}
$result = mysql_query($query) or die('Probleme avec les tables de données' . mysql_error());
$nb_enreg = mysql_num_rows($result);
?>
Le nom du select à selections multiple est donc "canton" dans notre cas.
Les variables $....2 et $tri n'ont pas de rapport avec le problème posé.