requete sql avec critère provenant d'un formulaire

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par trtr, 3 Juillet 2013.

  1. trtr
    trtr Nouveau WRInaute
    Inscrit:
    3 Juillet 2013
    Messages:
    2
    J'aime reçus:
    0
    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. L'utilisateur peut sélectionner aucun, 1 ou plusieurs critères. Quand j'arrive sur ma page, j'ai tableau remplis comme je souhaite et plus je met de critère et moins il doit y avoir de résultats et sa sa fonctionne pas. Ce que je voudrais et que j'arrive pas à faire c'est de mettre des parenthèses pour cette instruction
    Code:
    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 pour que sa soit soit cette période ou soit celle-ci

    Voici ma requete:
    Code:
    $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';
    

    Voici la fonction helper_sql
    Code:
    function helper_sql(&$sql_where, $champ, $connecteur, $valeur, $initialcar=''){
    if($sql_where != "")
    {
    $sql_where .= " AND";
    }
    else
    {
    $sql_where .= " WHERE";
    }
     
    if ($initialcar = '(')
    {
    $sql_where .= " ".$initialcar.$champ. " ".$connecteur."'".mysql_escape_string($valeur). "'";
    }
    else if ($initialcar = ')')
    {
    $sql_where .= " ".$champ. " ".$connecteur."'".mysql_escape_string($valeur). "'".$initialcar;
    }
    else
    {
    $sql_where .= " ".$champ. " ".$connecteur."'".mysql_escape_string($valeur). "'";
    }
    }


    un echo de ma requete avec un libelle stage sélectionné et deux case cochés
    2013-07-03SELECT 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.dateDebut >'2013-07-03' AND (stage.dateDebut <='2013-07-03' AND (stage.dateFin >='2013-07-03' AND (theme.id ='2'ORDER BY stage.numStage

    je voudrai avoir sa pour la fin de la requete
    WHERE stage.dateDebut >'2013-07-03' OR (stage.dateDebut <='2013-07-03' AND stage.dateFin >='2013-07-03') AND theme.id ='2'ORDER BY stage.numStage

    Merci de votre aide
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 182
    J'aime reçus:
    351
    PHP:
    <span class="syntaxdefault"></span><span class="syntaxkeyword">if&nbsp;(</span><span class="syntaxdefault">$initialcar&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxstring">'('</span><span class="syntaxkeyword">)&nbsp;</span><span class="syntaxdefault"></span>
    PHP:
    <span class="syntaxdefault"></span><span class="syntaxkeyword">else&nbsp;if&nbsp;(</span><span class="syntaxdefault">$initialcar&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxstring">')'</span><span class="syntaxkeyword">)&nbsp;</span><span class="syntaxdefault"></span>
    Là c'est une assignation, c'est pas la comparaison. Donc à coup sur ça renvoi true.

    NB: pense à te renseigner sur les injections SQL parce que là ...
     
  3. trtr
    trtr Nouveau WRInaute
    Inscrit:
    3 Juillet 2013
    Messages:
    2
    J'aime reçus:
    0
    Je vois pa comment faire aussi
    Et pour le or non plus
     
Chargement...
Similar Threads - requete sql critère Forum Date
Réunir 2 requetes sql (ORDER BY ASC et DESC) Développement d'un site Web ou d'une appli mobile 29 Août 2021
encodage texte sur requete mysql Demandes d'avis et de conseils sur vos sites 21 Octobre 2020
Requête MySql imbriquée Développement d'un site Web ou d'une appli mobile 8 Octobre 2020
Prestashop - Comportement bizarre d'une requête SQL e-commerce 1 Décembre 2018
Requête Mysql avec des string Développement d'un site Web ou d'une appli mobile 6 Février 2018
La syntaxe SQL permet-elle plusieurs mots-clefs dans une (sous-)requête identique ? Développement d'un site Web ou d'une appli mobile 17 Août 2017
Requete mysql Développement d'un site Web ou d'une appli mobile 30 Mai 2017
Problème requête mysql Développement d'un site Web ou d'une appli mobile 1 Mars 2017
Reduire et optimiser une requete sql Développement d'un site Web ou d'une appli mobile 8 Décembre 2016
Anomalie : beaucoup trop de requêtes SQL Administration d'un site Web 18 Novembre 2016
Besoin d'aide pour requête SQL PHP Développement d'un site Web ou d'une appli mobile 12 Novembre 2016
[php/mysql] Eviter de faire 20 requêtes pour un affichage Développement d'un site Web ou d'une appli mobile 19 Janvier 2016
requete Mysql et classement des résultats Administration d'un site Web 1 Novembre 2015
Mysql requête imbriquée Développement d'un site Web ou d'une appli mobile 1 Octobre 2015
Requetes SQL parfois lente : Selon show profile -> Pb opening table Développement d'un site Web ou d'une appli mobile 8 Juillet 2015
PDO Comment vérifier le SQL d'une Requête ??? Développement d'un site Web ou d'une appli mobile 4 Février 2015
Demande Requête SQL Développement d'un site Web ou d'une appli mobile 19 Janvier 2015
[MySQL] Requête SELECT et INSERT entre 3 tables liées+Aide Développement d'un site Web ou d'une appli mobile 30 Avril 2014
Redirection htaccess ou requête sql ? Netlinking, backlinks, liens et redirections 18 Janvier 2014
Optimisation Requete SQL Développement d'un site Web ou d'une appli mobile 14 Juin 2013