Obdc : créer une requête : plage de date ??

Fermé
razily Messages postés 250 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 4 décembre 2013 - 17 juin 2010 à 17:09
Bonjour à tous ;

voilà j'exploite une base access ; et voilà mon problème : ma mission c'est d'afficher tous les listes de contrat suivant un palge de date pour cela alors j'ai créé un formulaire :


<!--
ici on traite la recherche avancée selon le choix de l'utilisateur .
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <title>Recherche Avancée Date</title>
        <link rel="stylesheet" media="screen"type="text/css"
                  title="styleAuto" href="RechercheAvancDate.css"/>
    </head>
    <body>

        <h2 id="titre" >Recherche Avancée Date </h2>
          <a href="Acceuil.php">Accueil</a>






<?php
$datecontrat = array(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);
$moiscontrat = array("1"=>"Janvier","2"=>"Février","3"=>"Mars","4"=>"Avril","5"=>"Mai","6"=>"Juin","7"=>"Juillet",
    "8"=>"Août","9"=>"Septembre","10"=>"Octobre","11"=>"Novembre","12"=>"Décembre");
$anneecontrat = array(1990,1991,1992,1993,1994,1995,1996,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,
        2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,
    2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050);

?>
        <form action="ResultatAvancDate.php" method="GET">

        <div class ="periode" align="center">
            <label>Periode 1 </label>

            <select name="jour1">

                    <?php
                        foreach ($datecontrat as $val){
                            echo  "<option value=\"$val\">$val</option>";

                        }
                    ?>
            </select>
        

        
           <!-- <label>mois 1 :</label> -->

            <select name="mois1">

                    <?php
                        foreach ($moiscontrat as $cle=>$val){
                            echo  "<option value=\"$cle\">$val</option>";

                        }
                    ?>
            </select>

        

        
          <!--  <label>Annee 1 :</label> -->

            <select name="annee1">

                    <?php
                        foreach ($anneecontrat as $val){
                            echo  "<option value=\"$val\">$val</option>";

                        }
                    ?>
            </select><br />
        

        

            <!-- la periode 2 -->

            
            <label>Periode 2 </label>

            <select name="jour2">

                    <?php
                        foreach ($datecontrat as $val){
                            echo  "<option value=\"$val\">$val</option>";

                        }
                    ?>
            </select>



           <!-- <label>mois 1 :</label> -->

            <select name="mois2">

                    <?php
                        foreach ($moiscontrat as $cle=>$val){
                            echo  "<option value=\"$cle\">$val</option>";

                        }
                    ?>
            </select>




          <!--  <label>Annee 1 :</label> -->

            <select name="annee2">

                    <?php
                        foreach ($anneecontrat as $val){
                            echo  "<option value=\"$val\">$val</option>";

                        }
                    ?>
            </select>


         

            </div>



               <div class="Etat" align="center">

            <h5>Etat police</h5>


         

            <select name="etat"  size=\"5\"  >

                <option value="0" selected="selected">Tous</option>

                 <?php
               $etat = array("1"=>"En cours","2"=>"Attente A.N","3"=>"Attente REV","4"=>"Résil Sinistre","5"=>"Résil Client",
                   "6"=>"Résil Ctx","7"=>"Résil interne","8"=>"Sans effet",
                          "9"=> "Susp Client","10"=>"Attente Résil","11"=>"Fin de garantie",
                   "12"=>"Attente Dont acte","13"=>"Attente Avenant","14"=>"Projet","15"=>"Temporaire","16"=>"Attente Susp","17"=>"Résil Compagnie");



                       foreach ($etat as $val=>$donnee){
                          echo "  <option value=\"$val\">$donnee</option>";

                       }

                 ?>

                 </select>

                </div>

           
             <input class="valider" type="submit" value="Valider" name="ok" />

        </form>


  </body>
</html>




maintenant on récupère
<?php

// c'est pour l'utilisation de datefr
require("fonction.php");
/* 
 * le resultat après avoir fourni les donnéess dans le fichier rechercheAvancDate.php
 * on recupere les parametres
 */





      $etat = ($_GET['etat']);

    $jour = $_GET['jour1'];
     $mois = $_GET['mois1'];
      $annee = $_GET['annee1'];

      $jour2 = $_GET['jour2'];
     $mois2 = $_GET['mois2'];
      $annee2 = $_GET['annee2'];

   

        // on transforme le resultat selon le format de la base 
       // la date effet est de ce format 01-août-02 sous acces  format (Date, réduit )
       $recherhe = $jour.'-'.$mois.'-'.$annee ;
        $limite = $jour2.'-'.$mois2.'-'.$annee2 ;


  // la requête :

    $sql = "SELECT NumPol, IDCabinet ,Codeclient,Denomination,Dateeffet,Typedepolice,CodeCompagnie ,NumPolice, Codeetatpolice FROM PoliceClientphp
            where Dateeffet between  #$recherhe#  and  #$limite#
             GROUP BY CodeCompagnie,Codeetatpolice,NumPolice,Typedepolice,IDCabinet,Codeclient,Denomination,Dateeffet,NumPol";

  $requete = odbc_do($cnx, $sql) ;


            while($result=odbc_fetch_array($requete))

      {

                  $dateeffet=(string)($result['Dateeffet']);
                   datefr($dateeffet);

     }

   



fonction datefr (1 fonction qui affiche la date sous format français
</code>
function datefr($valeur){

list($annee, $mois, $jour1) = explode("-", $valeur);

// on récupère le vrai jour
$jour = explode(" ",$jour1);

echo $jour[0].'/'.$mois.'/'.$annee;



}

</code>

le problème ici et le réel souci , c'est que la requête affiche des données qui ne sont pas juste ; plutôt manquante par exemple si je sélectionne

periode 1 : 1 janvier 2010

periode 2 : 1 juin 2010

etat : en cours

j'ai l'impression qu'il n'affiche que le mois de janvier , alors que si je passe
dans la periode 2 à 30 juin
[CODE]periode 1 : 1 janvier 2010

periode 2 : 30 juin 2010/CODE

etat en cours :
il affiche des contrat entre janvier et juin (février ..)
alors je ne sais pas quoi qu'est ce qui cloche ?? :arf:
ou le fait que :

[CODE]between #$recherhe# and #$limite#/CODE

soit en chaîne de caractère où il faudrait l'adapter en format date

merci d'avance c'est vraiment urgent