Page 1 sur 1

recherche multicritères

Posté : 14 sept. 2010, 16:40
par resistenz76
bonjour,
je souhaite faire un formulaire pour permettre la recherche des formations en régions selon plusieurs critères département, secteur et type de diplôme
<form name="frm" method="post" action="cherche.php">
        Vous recherchez une formation en :<br>
        En r&eacute;gion <input type="radio" name="departement" value="*" checked><br>
        Haute-Corse <input type="radio" name="departement" value="1"><br>
        Corse-du-Sud <input type="radio" name="departement" value="2">
    <br>&nbsp;<br>
    Dans quel secteur d'activit&eacute; :
    <select name="secteur">
      <option value="*">Tous</option>
      <option value="1">Agriculture</option>
      <option value="2">B&acirc;timent</option>
      <option value="3">Commerce - Management - Services</option>
      <option value="4">Environnement</option>
      <option value="5">Industries</option>
      <option value="6">Informatique - Communication</option>
      <option value="7">M&eacute;tiers de bouche</option>
      <option value="8">M&eacute;tiers de l'automobile</option>
      <option value="9">Sant&eacute; - Hygi&egrave;ne - Soins à la personne</option>
      <option value="10">Sport</option>
    </select>
  <br>&nbsp;<br>
    Quel dipl&ocirc;me :
    <select name="diplome">
      <option value="*">Tous</option>
      <option value="1">CAPA</option>
      <option value="2">CAP</option>
      <option value="3">BEP</option>
      <option value="4">Bac pro</option>
      <option value="5">BP</option>
      <option value="6">Mentions compl&eacute;mentaires (MC)</option>
      <option value="7">BTS</option>
      <option value="8">DUT2</option>
      <option value="9">Licence pro</option>
      <option value="10">DU</option>
      <option value="11">Master</option>
    </select>
  <br>&nbsp;<br>
    
  <input type="hidden" name="combine" value="AND" checked>
    
    
  <input type="submit" name="submit" value="Rechercher">

</form>
<?
$db = mysql_connect('***', '***', '***'); 
mysql_select_db('***',$db); 

$ope=" ".@$_POST['combine']." ";
$sql="select * from formations WHERE 'AND'='".@$_POST['combine']."'";

if (@$_POST['departement']!="*") {$sql=$sql.$ope."departement=".@$_POST['departement'];}

if (@$_POST['secteur']!="*") {$sql=$sql.$ope."secteur=".@$_POST['secteur'];}

if (@$_POST['diplome']!="*") {$sql=$sql.$ope."diplome=".@$_POST['diplome'];}

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
while($data = mysql_fetch_array($req)) 
{
    echo '<tr><td>'.$data['nom'].'</td><td>'.$data['departement'].'</td><td>'.$data['secteur'].'</td><td>'.$data['diplome'].'</tr>';
}
mysql_close();
?>
le problème que je rencontre est le suivant : avec ce formulaire, lorsque l'utilisateur coche Corse-du-Sud les résultats n'affichent que les formations qui se déroulent SEULEMENT en Corse-du-Sud et pas les formations qui se déroulent dans les deux départements... :oops: je precise que j'ai créé un champ SET dans BdD

le problème vient de mon manque de compétences en php et que je me suis inspiré du tutorial...

voilà si quelqu'un peut m'aider...

Bonne soirée

Re: recherche multicritères

Posté : 14 sept. 2010, 21:53
par Ryle
Comment est-ce que tu identifies dans ta base de données les formations qui sont associées aux deux départements ?

Car effectivement, si dans ta requête tu ajoutes le critère " AND departement = 2 ", seuls les enregistrements pour lequel le champ departement a la valeur 2 seront retournés. Il faut donc peut être glisser un OR, ou remplacer le "=" par un IN (0, 2) en supposant que le 0 correspondant à toutes les régions, et le 2 au département sélectionné....

Re: recherche multicritères

Posté : 15 sept. 2010, 09:41
par resistenz76
Bonjour,

j'ai modifié depuis hier car je souhaiterai que la recherche se fasse par lycée...
Dans ma BdD j'ai crée un champ SET et si la formation est disponible dans plusieurs lycées, je sélectionne les lycées...

Peut être devrai-je créer un champ pour chaque lycée dans ma BdD et vérifier lors de la requête php si le lycée est coché ou pas ?