Bonjour,
J'ai un formulaire avec des listes, case à cocher, etc. Et mon problème et quand je sélectionne plusieurs case à cocher, on me dit que je n'ai pas de résultats correspondant au critères sélectionnés. Ce que je voudrais et que j'arrive pas à faire c'est de mettre des parenthèses pour cette instruction
Et mettre des OR entre les cases à cocher
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if ((isset($_POST['enCours'])==true) && $_POST["enCours"]!="") { helper_sql($requete_where, 'stage.dateDebut','<=', $date); helper_sql($requete_where, 'stage.dateFin','>=', $date); }
Voici ma requête
Ma fonction utilisé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 $requete_select = "SELECT numStage, stage.libelle AS libelleStage, DATE_FORMAT(dateDebut,'%d/%m/%Y') AS dateDebut, DATE_FORMAT(dateFin,'%d/%m/%Y') AS dateFin, theme.libelle AS themeStage, DATE_FORMAT(dateLimite,'%d/%m/%Y') dateLimite, nbMax, specialite.libelle AS libelleSpe FROM stage INNER JOIN theme ON stage.id_Theme = theme.id INNER JOIN specialite ON stage.id_Specialite = specialite.id LEFT OUTER JOIN inscrire ON inscrire.numStage_Stage = stage.numStage LEFT OUTER JOIN personnel ON personnel.id = inscrire.id_Personnel "; $requete_where = ""; if ((isset($_POST['passe'])==true) && $_POST["passe"]!="") helper_sql($requete_where, 'stage.dateFin','<', $date); if ((isset($_POST['aVenir'])==true) && $_POST["aVenir"]!="") helper_sql($requete_where, 'stage.dateDebut','>', $date); if ((isset($_POST['enCours'])==true) && $_POST["enCours"]!="") { helper_sql($requete_where, 'stage.dateDebut','<=', $date); helper_sql($requete_where, 'stage.dateFin','>=', $date); } if(isset($_POST["themeStage"]) && $_POST["themeStage"]!="") helper_sql($requete_where, 'theme.id', '=', $_POST["themeStage"]); if(isset($_POST["nomPrenomVisiteur"]) && $_POST["nomPrenomVisiteur"]!="") helper_sql($requete_where, 'inscrire.id_Personnel', '=', $_POST["nomPrenomVisiteur"]); if(isset($_POST["dateDebut"]) && $_POST["dateDebut"]!="") { $dateDebut = conversionDateFrançaisVersMySql($_POST["dateDebut"]); helper_sql($requete_where, 'stage.dateDebut', '=',$dateDebut); } if(isset($_POST["dateFin"]) && $_POST["dateFin"]!="") { $dateFin = conversionDateFrançaisVersMySql($_POST["dateFin"]); helper_sql($requete_where, 'stage.dateFin','=', $dateFin); } $requete = $requete_select.' '.$requete_where. 'ORDER BY stage.numStage';
un echo de ma requête avec une valeur sélectionnée dans une liste et deux case à coché sélectionnées
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 // Fonction qui permet de vérifier s'il s'agit du premier critère sélectionné ou non function helper_sql(&$sql_where, $champ, $connecteur, $valeur){ if($sql_where != "") $sql_where .= " AND"; else $sql_where .= " WHERE"; $sql_where .= " ".$champ. " ".$connecteur."'".mysql_escape_string($valeur). "'"; }
il faudrait qu'il y ai des parenthèses là:2013-07-02SELECT numStage, stage.libelle AS libelleStage, DATE_FORMAT(dateDebut,'%d/%m/%Y') AS dateDebut, DATE_FORMAT(dateFin,'%d/%m/%Y') AS dateFin, theme.libelle AS themeStage, DATE_FORMAT(dateLimite,'%d/%m/%Y') dateLimite, nbMax, specialite.libelle AS libelleSpe FROM stage INNER JOIN theme ON stage.id_Theme = theme.id INNER JOIN specialite ON stage.id_Specialite = specialite.id LEFT OUTER JOIN inscrire ON inscrire.numStage_Stage = stage.numStage LEFT OUTER JOIN personnel ON personnel.id = inscrire.id_Personnel WHERE stage.dateFin <'2013-07-02' AND stage.dateDebut <='2013-07-02' AND stage.dateFin >='2013-07-02' AND theme.id ='2'ORDER BY stage.numStage
et un or :
Code : Sélectionner tout - Visualiser dans une fenêtre à part stage.dateDebut <='2013-07-02' AND stage.dateFin >='2013-07-02'
Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part WHERE stage.dateFin <'2013-07-02' OR (stage.dateDebut <='2013-07-02' AND stage.dateFin >='2013-07-02')
Partager