Champs date + liste déroulante php

Résolu/Fermé
fauve1512 Messages postés 206 Date d'inscription mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 - Modifié par fauve1512 le 12/09/2011 à 12:03
fauve1512 Messages postés 206 Date d'inscription mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 - 26 sept. 2011 à 13:31
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

145 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 sept. 2011 à 11:45
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
21 sept. 2011 à 11:59
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 vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 712
Modifié par bissdebrazza le 21/09/2011 à 12:02
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
21 sept. 2011 à 12:02
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 sept. 2011 à 12:07
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
21 sept. 2011 à 12:10
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 sept. 2011 à 13:49
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
21 sept. 2011 à 13:59
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
21 sept. 2011 à 14:27
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 sept. 2011 à 15:08
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
21 sept. 2011 à 15:24
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
21 sept. 2011 à 16:03
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 vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 712
21 sept. 2011 à 16:07
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
22 sept. 2011 à 10:53
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 vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 712
22 sept. 2011 à 11:05
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
22 sept. 2011 à 11:13
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 vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 712
22 sept. 2011 à 11:22
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
Modifié par fauve1512 le 22/09/2011 à 11:24
oui...pas d'echo rien..il me faudra ton adresse pour la livraison..lol
0
bissdebrazza Messages postés 2065 Date d'inscription vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 712
22 sept. 2011 à 11:54
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 mercredi 7 septembre 2011 Statut Membre Dernière intervention 6 décembre 2011 1
22 sept. 2011 à 12:00
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