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
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);
}
Et mettre des OR entre les cases à cocher

Voici ma requête
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';
Ma fonction utilisé
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). "'";
}
un echo de ma requête avec une valeur sélectionnée dans une liste et deux case à coché sélectionnées
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
il faudrait qu'il y ai des parenthèses là:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
stage.dateDebut <='2013-07-02' AND stage.dateFin >='2013-07-02'
et un or :
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')
Merci de votre aide