Champs date + liste déroulante php

Résolu
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   -  
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Dans ma page j'ai deux calender qui me permet dans les champs d'afficher deux date ex : entre :12/08/2010 et 08/09/2011 et une liste déroulante qui m'affiche les lignes selon mon choix(la liste fonctionne) maintenant je voudrais selon les choix des dates et le choix de la liste pouvoir afficher les lignes correspondantes ,je ne sais pas comment m'y prendre voici mon code :
<td height="35" colspan="5" align="center"  style="font-size:24px" >Statistiques de consommation   
 <tr> 
   <form id="service2" name="service2" method="POST" action="index.php?idpage=3"> 
        
     <td height="30" colspan="5" align="center"><label>Entre : </label> 
      <input type="text" id="datepicker" name="DATE_SORTIE" value="<?php echo date('d/m/Y'); ?>" /> 
      <label>Et : </label> 
      <input type="text" id="datepicker1" name="DATE_SORTIE" value="<?php echo date('d/m/Y'); ?>" /> 
      <label></label></td> 
     </form>  
    </tr>    
 <tr> 
   <td height="32" colspan="5" align="left"> 
    <form  name="service" method="post" action="index.php?idpage=3"> 
      <select  name="service"  onchange="submit">  
        <option selected> Choisissez un service</option> 
        <?php 
        $requete = "SELECT distinct service FROM servcart order by service"; 
      $req  = mysql_query($requete) or die( mysql_error() ) ;    
   
       while ($donnees=mysql_fetch_array($req)) 
          {           
         
     $service = $donnees['service']; 
    ?> 
        <!-- affichage de la liste déroulante --> 
        <option value="<?php echo $service ?>" <?php if ($service == $v_service) { echo 'Selected' ; } ?> ><?php echo $service?></option> 
        <?php 
                   } 
         ?> 
      </select>       
      <input  type="submit"  value="Rechercher" /> 
    </form> 

Quelqu'un a-t-il la réponse de la manière de s'y prendre ??? Merci
A voir également:

145 réponses

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
salut,

voir les remarques et modifs
ensuite est ce que ton champ qui contient les dates est bien de type dDATE dans ta BDD, regardes comment sont affichées tes dates dans la BDD.
et regardes si c'est le même format que celles affichées par l'echo date_debut date_fin
donnes nous le résultat

<?php
//gestion de la ligne selectionnée
   if (isset($_POST['uf']))
        {$uf=$_POST['uf'];
	 }
   else
        {$uf="";}
                	
   if (isset($_POST['service']))
	{$v_service=$_POST['service'];
	 }
   else
	{$v_service="";}					
?>	

      <table width="580" height="209" border="3">  
       <form  name="rechercher" method="post" action="index.php?idpage=3">       
      <tr>
       <td height="35" colspan="5" align="center"  style="font-size:24px" >Statistiques de consommation </td> 
      </tr>    
      
      <tr> 
       <td height="32" colspan="5" align="left">   
        <select  name="service" > 
         <option> Choisissez un service</option> <!-- tu ne doit pas mettre selected ici car par php plus bas si tu en as un autre ça fait conflit de toute façon par défaut c'esttjs la première ligne qui est selected -->
<?php
      $requete = "SELECT distinct service FROM servcart order by service";
      $req     = mysql_query($requete) or die( mysql_error() ) ; 		
		
	 while ($donnees=mysql_fetch_array($req))
	      {			       			     
	        $service = $donnees['service'];
?>
           <!-- affichage de la liste déroulante -->
         <option value="<?php echo $service ?>" <?php if ($service == $v_service) { echo 'Selected' ; } ?> ><?php echo $service?></option>
 <?php
                }
?>
      </select>
       </td> 
      </tr>
      
      <tr>         
       <td height="30" colspan="5" align="center">      
        <label>Entre : </label>   
        <input type="text" id="datepicker" name="date_debut" />    
        <label>Et : </label>
        <input type="text" id="datepicker1" name="date_fin" />    		       
       </td>
      </tr>
         
      <tr>
       <th height="28" colspan="5" scope="row" align="center">
         <input  type="submit"  value="Rechercher" />  
       </th>
      </tr>
                  
      <tr>    
       <th width="52" height="36" bgcolor="#5ab9d8" scope="col">UF</th>
       <th width="159" bgcolor="#5ab9d8" scope="col">SERVICE</th>
       <th width="191"  bgcolor="#5ab9d8" scope="col">CARTOUCHE</th>
       <th width="77"  bgcolor="#5ab9d8" scope="col">DATE</th>
       <th width="63"  bgcolor="#5ab9d8" scope="col">SORTIE STOCK</th>
      </tr>
   
<?php 	 
    if (isset($_POST['date_debut']) AND isset($_POST['date_fin']))
	{                        
		$date_debut=$_POST['date_debut'];   
		$date_fin=$_POST['date_fin'];
			//un petit echo pour voir la forme de tes dates
			echo "date debut: ".$date_debut;
			echo "     date fin: ".$date_fin;		
			
			///
		
		$requete2 = "SELECT uf,service,cartouche,sortie_stock,date_sortie FROM servcart WHERE  date_sortie BETWEEN '$date_debut' and '$date_fin' and uf='$uf' order by date_sortie ";						   
		$req2 = mysql_query($requete2) or die( mysql_error() ) ; 
		
		while ($donnees2=mysql_fetch_array($req2))
		{ 	   
?>
			  <tr>
			   <td height="22"><?php echo $donnees2['uf']; ?></td>
			   <td><?php echo $donnees2['service']; ?></td>
			   <td><?php echo $donnees2['cartouche']; ?></td>
			   <td><?php echo $donnees2['date_sortie']; ?></td>
			   <td><?php echo $donnees2['sortie_stock']; ?></td>
			  </tr>             
<?php           		          
		}
    }
?> 
    </form>          
  </table>
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
bonjour Alain_42
J'ai dans ma bdd la colonne date_sortie est type DATE, dans ma colonne c'est format us ensuite après echo j'ai ceci:
date debut: 01/09/2011 date fin: 08/09/2011
0
bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
bah voila,le format est en fr et dans la BDD en us,normal qu'il ne t'affiche rien.tu dois envoyer dans ta BDD la date en format US afin que la comparaison se fasse
«Il faut avoir déjà beaucoup appris de choses pour savoir demander ce qu'on ne sait pas.»
Jean-Jacques ROUSSEAU
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
comment je dois faire?????
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
au format US c a d 2009-09-15

donc tu dois transformer tes dates debut et fin pour qu'elle soient au même format comme tu as fiat dans un post plus haut
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
comme ceci !!!

$to_date = explode("/", $date_debut);
$date_debut = $to_date[2]."-".$to_date[1]."-".$to_date[0];

$to_date = explode("/", $date_fin);
$date_fin = $to_date[2]."-".$to_date[1]."-".$to_date[0];
mais cela ne fonctionne pas
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
est ce que les echo date_debut et fin sont bien ùaintenant au format mysql

et essayes avec la requette comme ça:

$requete2 = "SELECT uf,service,cartouche,sortie_stock,date_sortie FROM servcart WHERE  date_sortie BETWEEN ".$date_debut." AND ".$date_fin." AND uf='$uf' ORDER BY date_sortie 
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
non car je ne sais pas comment faire j'ai essayé le code du post où je te posais la question si c'était dans ce style..mais cela ne marche pas..
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
j'ai fait ceci pour avoir mon echo date debut et fin en mysql
<?php
function convertionDate($dateEur){
$rsl = explode ('/',$dateEur);
$rsl = array_reverse($rsl);
return implode($rsl,'-');
}
//gestion de la ligne selectionnée
	 if (isset($_POST['uf']))
         {$uf=$_POST['uf'];
		 }
         else
         {$uf="";}                	
	if (isset($_POST['service']))
		{$v_service=$_POST['service'];
		}
		else
		{$v_service="";}					
    ?>	


et ca :
<?php 
	 if (isset($_POST['date_debut'])               		
		and isset($_POST['date_fin']))  
          {                     	    	   						    		             		    							
		$date_debut=convertionDate($_POST['date_debut']);
        $date_fin=convertionDate($_POST['date_fin']);
			
			echo "date debut: ".$date_debut;
			echo "     date fin: ".$date_fin;
		
		 $requete2 = "SELECT uf,service,cartouche,sortie_stock,date_sortie FROM servcart WHERE date_sortie BETWEEN ".$date_debut." AND ".$date_fin."  and uf='$uf' order by date_sortie ";						   
	     $req2 = mysql_query($requete2) or die( mysql_error() ) ; 
			while ($donnees2=mysql_fetch_array($req2))
	{ ?>
      <tr>
	   <td height="22"><?php echo $donnees2['uf']; ?></td>
	   <td><?php echo $donnees2['service']; ?></td>
	   <td><?php echo $donnees2['cartouche']; ?></td>
       <td><?php echo $donnees2[' date_sortie']; ?></td>
	   <td><?php echo $donnees2['sortie_stock']; ?></td>
      </tr>             
     <?php           		          
		    }
		 }
		  ?> 
et dans mon echo j'ai cela :

date debut: 2011-09-01 date fin: 2011-09-08 mais toujours pas de lignes
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
essaye comme ça:

 $requete2 = "SELECT uf,service,cartouche,sortie_stock,date_sortie FROM servcart WHERE date_sortie BETWEEN '".$date_debut."' AND '".$date_fin."'  and uf='".$uf."' order by date_sortie


et fais un petit echo de $uf pour voir si il correspond bien a la colonne dans la BDD
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
j'ai mis echo '$uf'; ici
$req2 = mysql_query($requete2) or die( mysql_error() ) ; 
			while ($donnees2=mysql_fetch_assoc($req2))
	echo '$uf';
	{ ?>

et j'ai en retour une ligne vide qui s'affiche
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
j'ai trouvé la solution en faîte dans ma requête il y avait un souci dans la condition where uf=$uf avec déclaration de variable donc en enlevant la déclaration et cette condition maintenant j'ai le résultat voulu...
Merci à vous deux de m'avoir aider
0
bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
ouf,très content que ce problème trouve une solution.n'hésite pas à revenir en cas de besoin!
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour
J'ai crié victoire trop vite car je me suis rendu compte en testant qu'il ne tenait pas compte de ma liste déroulante..je m'explique en enlevant dans le where uf='$uf', effectivement cela me récupérais la plage de date mais cela me récupère aussi tous les services par rapport à cette plage enfin de compte je n'ai même pas besoin de faire de sélection dans la liste déroulante car ce n'est que mes champs date qui sont pris en compte...et quand je remets cette condition dans ma requête je n'ai plus de lignes qui s'affichent..je deviens dingue, selon comme je code soit choix par liste et cela m'affiche le service avec toutes les dates donc non plage soit par champs dates et j'ai tous la plage date mais avec tous les services...je peux l'un ou l'autre mais pas les deux en même temps ..Au secours!!!!
0
bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
Salut!
j'avais déjà bu le champagne!!! bref,bien faisons un test:
comme pour les dates,fais un echo de $uf pour voir ce que cette variable contient à l'envoi.
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
Tu as pris un peu d'avance pour le champagne..si nous y arrivons ,je t'envoye la caisse... c'est mieux..lol
Bon, j'ai fait echo "uf: ".$uf; après mes variables et rien ne se passe
0
bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
Je reprends ton code
<?php 
	 if (isset($_POST['date_debut'])               		
		and isset($_POST['date_fin']))  
          {                     	    	   						    		             		    							
		$date_debut=convertionDate($_POST['date_debut']);
        $date_fin=convertionDate($_POST['date_fin']);
			
			echo "date debut: ".$date_debut;
			echo "     date fin: ".$date_fin;
                                      echo "     UF: ".$uf;
 
		
		 $requete2 = "SELECT uf,service,cartouche,sortie_stock,date_sortie FROM servcart WHERE date_sortie BETWEEN ".$date_debut." AND ".$date_fin."  and uf='$uf' order by date_sortie ";						   
	     $req2 = mysql_query($requete2) or die( mysql_error() ) ; 
			while ($donnees2=mysql_fetch_array($req2))
	{ ?>
      <tr>
	   <td height="22"><?php echo $donnees2['uf']; ?></td>
	   <td><?php echo $donnees2['service']; ?></td>
	   <td><?php echo $donnees2['cartouche']; ?></td>
       <td><?php echo $donnees2[' date_sortie']; ?></td>
	   <td><?php echo $donnees2['sortie_stock']; ?></td>
      </tr>             
     <?php           		          
		    }
		 }
		  ?> 

donc tu me dis que ça ne t'affiche rien au niveau de UF,c'est bien ça?

Merci pour la caisse,je l'attends
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
oui...pas d'echo rien..il me faudra ton adresse pour la livraison..lol
0
bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
si rien ne s'affiche,donc ta variable n'est pas postée.vérifie bien la déclaration de tes variables.
pour l'adresse de livraison,je te l'envoyerai en MP quand tout sera ok (je sent que ça va marcher).
0
fauve1512 Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   1
 
j'ai déclaré ainsi

if (isset($_POST['date_debut']) and isset($_POST['date_fin'])and isset($_POST['uf'])) {
$date_debut=convertionDate($_POST['date_debut']);
$date_fin=convertionDate($_POST['date_fin']);
$uf=$_POST['uf'];
je ne vois pas comment les déclarer différamment
0