Champs date + liste déroulante php
RésoluDans 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
Un utilisateur cherche à afficher des lignes selon une plage de dates et un service sélectionné via une liste déroulante, en combinant deux calendriers et un champ select sur une page PHP. La solution proposée souligne qu'il faut convertir les dates entrées (jour/mois/année) en format date US (année-mois-jour) avant de les envoyer à la requête BETWEEN sur la colonne date_sortie. D'autres précisions utiles indiquent d'aligner les noms des inputs ($_POST['date_debut'] et $_POST['date_fin']) avec les variables de traitement et d'éviter les doublons lors des mises à jour. En cas de test, il est conseillé d'évaluer le passage par une page intermédiaire pour vérifier le format et la cohérence des requêtes.
-
en faite ..j'ai fait un autre topic...
-
Bonjour,J'espere que tu as passé un bon w.e..
alors tu ne vas pas me croire mais le problème vennait de ma bdd, archives étaient décalées dans la colonne donc si l' on regarde bien l'echoc cela donnait 9 de longueur alors que archives c'est 8....le problème c'est que je ne comprends pas pourquoi cela c'est décalé...donc mon code est bon cela marche maintenant..deux semaines de perdues rien que pour ce petit problème...j'en rage quand même..merci de ton aide bissdebrazza...
Je sais que ce n'est pas le bon topic..mais est_ce que tu saurais comment faire pour imprimer ma page en pdf et seulement ce que je désire...car je ne connais pas du tout..j'ai regardé ce w.e mais sur le net ,il y a de tout et rien...donc je te dois une caisse de champagne car c'est grace à toi que j'ai vu l'erreur avec ta copie d'écran....lol -
Contributeuroui,en effet j'ai pas encore dormi.j'étais d'astreinte cette nuit,donc...
regarde la copie d'écran pour la requête que j'ai exécuté chez moi. -
cela peut arriver ..c'est bientôt le w.e alors relax...lol
je pense d'ailleur que je vais travailler car il ne me reste plus que ce problème à régler et mon application est terminée...car la semaine prochaine elle doit_être mise en test grandeur nature -
Contributeuroui c'est vrai,j'ai fait une grosse boulette. j'ai récupéré ta table et les quatre enregistrements,j'ai testé avec phpmyadmin,j'ai bien le résultat attendu
-
tu dois être mal réveillé car je compte bien 6 colonnes service est bien troisième position
(222, '4517 ', ' Archives', 1, '1720', '2011-09-08'),
(224, '4517 ', ' Archives', 10, '4096 A 2100 2200', '2011-09-14'),
(225, '4517 ', ' Archives', 1, ' BCI 6 E 520 Cyan', '2011-09-01'),
ensuite service dans ma table est en 3 et dans mes colonnes aussi
(223, '4517 ', ' Archives', 10, '343 Couleur', '2011-09-07'), -
ContributeurSalut!
j'ai bien analysé ta table et tes enregistrements,j'ai trouvé une petite incohérence:
regarde la table:'id_service' int(5) NOT NULL AUTO_INCREMENT, 'uf' varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, 'service' varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, 'sortie_stock' int(5) DEFAULT NULL, 'cartouche' varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, 'date_sortie' date DEFAULT NULL, PRIMARY KEY ('id_service') ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=236 ;
et maintenant les enregistrements:(222, '4517 ', ' Archives', 1, '1720', '2011-09-08'), (223, '4517 ', ' Archives', 10, '343 Couleur', '2011-09-07'), (224, '4517 ', ' Archives', 10, '4096 A 2100 2200', '2011-09-14'), (225, '4517 ', ' Archives', 1, ' BCI 6 E 520 Cyan', '2011-09-01'),
ta table a 6 colonnes (id_service,uf,service,sortie_stock,cartouche,date_sortie) alors que tes enregistrements ont 7 colonnes (222,4517,vide, Archives,1,1720,2011-09-08) or le service dans ta table c'est la colonne "3" et dans tes enregistrements, c'est la colonne 4. bizarre!
Regarde bien,tu a dû oublié quelque chose. -
j'ai besoin de cette variable car si tu regardes bien dans mon select de la liste, je fais une boucle..donc je ne peux la déclarer que comme ça..ensuite j'ai changé le ceci : and isset($_POST['service']))
{
$v_service=$_POST['service']; et remis :
WHERE service=' $v_service' and et dans mes echo, j'ai ce résultat :
service: Archives date fin: 2011-09-08 date debut: 2011-09-01
mais pas de lignes... -
bonjour,
Peux-tu m'en dire plus... -
Contributeurbizarre ton problème.j'ai vu ta variable $service, tu la déclare lorsque tu fais un select dans ta BDD afin de l'afficher dans la liste déroulante.or au début de ton code,tu déclare $v_service comme une variable postée.il y a deja un souci là!
-
j'ai testé avec la variable du début de mon code
if (isset($_POST['SERVICE'])) {$v_service=$_POST['SERVICE'];} else {$v_service="";}
donc dans monWHERE service='$v_service'
j'ai ca dans mon echo
service: date debut: 2011-09-01date fin: 2011-09-08 -
c'est l'alias pour date_format..si je l'enlève cela ne change rien au problème
-
ContributeurDateTemps c'est quoi?
-
Je remets le code en entier :
<?php function convertionDate($dateEur){ $rsl = explode ('/',$dateEur); $rsl = array_reverse($rsl); return implode($rsl,'-'); } //gestion de la ligne selectionnée 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> <?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> <code> <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'])and isset($_POST['service'])) { $date_debut=convertionDate($_POST['date_debut']); $date_fin=convertionDate($_POST['date_fin']); $service=$_POST['service']; echo "service: ".$service; echo "date debut: ".$date_debut; echo "date fin: ".$date_fin; $requete2 = "SELECT uf, service,cartouche,sortie_stock,DATE_FORMAT(date_sortie,'%d/%m/%Y') AS DateTemps FROM servcart WHERE date_sortie BETWEEN '$date_debut' and '$date_fin' and service='$service' order by DateTemps "; $req2 = mysql_query($requete2) or die( mysql_error() ) ; while ($donnees2=mysql_fetch_assoc($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['DateTemps']; ?></td> <td><?php echo $donnees2['sortie_stock']; ?></td> </tr> <?php }} ?> </form> </table></code> -
oui.....
(222, '4517 ', ' Archives', 1, '1720', '2011-09-08'),
(223, '4517 ', ' Archives', 10, '343 Couleur', '2011-09-07'),
(224, '4517 ', ' Archives', 10, '4096 A 2100 2200', '2011-09-14'),
(225, '4517 ', ' Archives', 1, ' BCI 6 E 520 Cyan', '2011-09-01'), -
Contributeurok! donc tu me confirmes que tu as bien "Archives" comme service dans les enregistrements de ta table?
-
-- Structure de la table 'servcart'
-
Contributeursi avec uf=... tu as des résultats et que avec service=... tu n'as rien,moi je comprends que dans ta BDD les services ne sont pas enregistrés avec la plage d'adresse correspondante. donne moi la structure de ta table concernée stp!
-
uf c'est une colonne qui représente l'unité du service et service est rattaché à cette unité..mais pour la liste je n'ai pas besoin de l'uf et en plus j'ai fait une colonne identifiant autoincrémentée..;
-
Contributeurc'est quoi la différence entre UF et SERVICE ?
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8