Conservation de la valeur liste déroulante

Fermé
bbk91 - 13 août 2007 à 17:43
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 - 16 août 2007 à 20:36
Bonjour j'ai une question sur les listes déroulantes,

J'ai 3 listes déroulantes: une pour pour la date(qui est en fait composé de 3 listes déroulantes pour le jour, le mois et l'année) , une liste pour des processus et une pour des procédures.

A savoir que les deux dernières listes sont liées entre elles.

Mon problème est que lorsqu'une fois que j'ai sélectionné la date et que je passe à une autre liste, ma date sélectionnée n'est pas conservée et se remt en valeur par défaut.

Comment faut-il faire pour que ca ne se produise pas et que je puisse renvoyer la date dans une base de données?

<tr>
<p>
<label>La <em>date</em> de votre demande est le</label>
<select name="day" id="day">

<?php
echo "<option>1</option>";
echo "<option>2</option>";
echo "<option>3</option>";
echo "<option>4</option>";
echo "<option>5</option>";
echo "<option>6</option>";
echo "<option>7</option>";
echo "<option>8</option>";
echo "<option>9</option>";
echo "<option>10</option>";
echo "<option>11</option>";
echo "<option>12</option>";
echo "<option>13</option>";
echo "<option>14</option>";
echo "<option>15</option>";
echo "<option>16</option>";
echo "<option>17</option>";
echo "<option>18</option>";
echo "<option>19</option>";
echo "<option>20</option>";
echo "<option>21</option>";
echo "<option>22</option>";
echo "<option>23</option>";
echo "<option>24</option>";
echo "<option>25</option>";
echo "<option>26</option>";
echo "<option>27</option>";
echo "<option>28</option>";
echo "<option>29</option>";
echo "<option>30</option>";
echo "<option>31</option>";
?>

</select>

<label>-</label>

<select name="month" id="month">
<?php
echo "<option>Janvier</option>";
echo "<option>Février</option>";
echo "<option>Mars</option>";
echo "<option>Avril</option>";
echo "<option>Mai</option>";
echo "<option>Juin</option>";
echo "<option>juillet</option>";
echo "<option>Aoucirc</option>";
echo "<option>Septembre</option>";
echo "<option>Octobre</option>";
echo "<option>Novembre</option>";
echo "<option>Décembre</option>";
?>

</select>

<label>-</label>

<select name="year" id="year">
<?php
echo "<option>1988</option>";
echo "<option>1989</option>";
echo "<option>1990</option>";
echo "<option>1991</option>";
echo "<option>1992</option>";
echo "<option>1993</option>";
echo "<option>1994</option>";
echo "<option>1995</option>";
echo "<option>1996</option>";
echo "<option>1997</option>";
echo "<option>1998</option>";
echo "<option>1999</option>";
echo "<option>2000</option>";
echo "<option>2001</option>";
echo "<option>2002</option>";
echo "<option>2003</option>";
echo "<option>2004</option>";
echo "<option>2005</option>";
echo "<option>2006</option>";
echo "<option>2007</option>";
echo "<option>2008</option>";
echo "<option>2009</option>";
echo "<option>2010</option>";
echo "<option>2011</option>";
echo "<option>2012</option>";
echo "<option>2013</option>";
echo "<option>2014</option>";
echo "<option>2015</option>";
echo "<option>2016</option>";
echo "<option>2017</option>";
echo "<option>2018</option>";
echo "<option>2019</option>";
echo "<option>2020</option>";
?>

</select>
</p>

</tr>

<?php

$req = "SELECT * FROM processes ORDER BY heading ASC"; 
$res = $db->Execute($req);

?>
		<tr>
        <td><label for="pros1">Veuillez sélectionner le <em>processus</em> concerné</label> :</td>
        <td><select name="pros1" id="id_pros1" onChange="submit()">
		<option>-- Choisissez --</option>
		
<?php
			while ($data=$res->FetchRow()){
			
?>
....


Merci d'avance

CDLT

bbk91

3 réponses

Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
15 août 2007 à 17:21
Salut,

Il manque la déclaration du formulaire pour comprendre si c'est normal que la date se perd après la sélection du processus (c'est bien à ce moment là qu'elle se perd non ?) mais de manière générale, le script qui s'exécute sur le submit de ton champ "pros1" doit récupérer les champs "day", "month" et "year".

Maintenant quand tu envoies un formulaire, lors du réaffichage de la page c'est normal que tu perdes toutes les infos jusque là encodées. Ton script PHP, en plus de récupérer la date et alimenter le champ des procédures, doit placer explicitement le jour, le mois et l'année à la bonne valeur au travers de la propriété/valeur selected="selected".

Au fait, pourquoi tu t'amuses à générer tes listes séquentielles en PHP sans utiliser de boucle ? Moi j'aurais plutôt fait comme ça :
for($i=1; $i<=31; $i++)
  {
  echo '<option value="' . $i . '">' . $i . '</option>';
  }

Parce qu'en plus il faut que chaque option contienne un attribut value ; c'est la valeur de cet attribut qui va être envoyée au formulaire, pas le texte se trouvant dans la balise option.

Ainsi ben quand par exemple le formulaire reçevra le jour de la date par $_POST['day']; il te faudra, dans ta boucle, tester si la variable $i correspond au jour envoyé et dans ce cas placer l'attribut selected avec la valeur selected (c'est pas fort optimal comme algorithme mais c'est pour l'idée*). Et là normalement il devrait sélectionner automatiquement le bon jour.


* Un algorithme optimal viserait à créer une boucle contenant un nombre d'itérations inférieur à la position devant être sélectionnée, à écrire ensuite cette option avec la propriété selected et continuer la boucle jusqu'à sa fin.

Voilà.
0
ted470 Messages postés 28 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 27 février 2009 19
16 août 2007 à 07:11
salut,
peut-être que ce lien pourra t'aider :
http://www.roodali.com/index.php?2007/06/26/4-3-listes-deroulantes-liees-avec-ajax-php-mysql
0
merci pour ton aide, j'ai pu faire autrment...

bbk974
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
16 août 2007 à 20:36
Comment ? :-)
0