PHP5

Bonjour,

je développe un module de gestion de caisse avec php5 et mysql, donc j'ai un problème au niveau de la fonction recherche, la recherche se fait en fonctionde 5 parametres soit on peut les avoir tous sopit qlque 1 soit aucun mias en tt cas la recherche doit nous donner un resultat alors est-ce-qu'il y a qeulqu'1 qui peut me donner la requette mysql qui permet de verefier si les champs sont rempli donc on affiche tt les info sinn on test et la rechechre se fait en fonction les champs remplis
MERCI

4 réponses

  1. Bonjour,

    Il suffit de construire ta requête SQL pour n'inclure dans la clause WHERE que les paramètres définis.

    Par exemple :
    $sql = 'SELECT * FROM table ';
    $premierChamp = true;
    
    if (isset($param1) && $param1 != '')
    {
        $debut = ($premierChamp) ? 'WHERE ' : 'AND ';
        $premierChamp = false;
        $sql .= $debut . "champ1 = '$param1' ";
    }
    
    if (isset($param2) && $param2 != '')
    {
        $debut = ($premierChamp) ? 'WHERE ' : 'AND ';
        $premierChamp = false;
        $sql .= $debut . "champ2 = '$param2' ";
    }
    
    if (isset($param3) && $param3 != '')
    {
        $debut = ($premierChamp) ? 'WHERE ' : 'AND ';
        $premierChamp = false;
        $sql .= $debut . "champ3 = '$param3' ";
    }
    
    ...
    
    mysql_query($sql);


    Xavier
    0
    1. Reivax962
      Merci pour votre reponse mais voila la solution que j'ai pu faire et ca a marché

      function ListeMouvement ( $nature_id, $executeur_id, $responsable_id, $date_debut, $date_fin){

      $data = $this->connexion->DB;

      try{

      $query = " SELECT c.*,n.nature_intitule FROM nature n JOIN caisse c " ;

      $WHERE = "1";
      if(!is_numeric($nature_id)) $WHERE .= " AND nature_id =".$nature_id;
      if(!is_numeric($executeur_id)) $WHERE .= " AND executeur_id=".$executeur_id;
      if(!is_numeric($responsable_id)) $WHERE .= " AND responsable_id=".$responsable_id;
      if(!empty($date_debut)) $WHERE .= " AND date_debut=".$date_debut;
      if(!empty($date_fin)) $WHERE .= " AND date_fin=".$date_fin;

      $query .= $WHERE;

      $result = $data->Execute( $query );
      return ( $result );

      }
      catch( Exception $e ){
      return $e;
      }
      }
      0