Problème disabled

naroco Messages postés 4 Date d'inscription lundi 8 février 2010 Statut Membre Dernière intervention 24 février 2010 - 24 févr. 2010 à 09:07
tpoinsot Messages postés 345 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 octobre 2014 - 24 févr. 2010 à 22:53
bonjour
je créé un formulaire de collecte d'heures.
je propose au collecteur la date du jour ou une autre date via un bouton radio.
s'il s'agit d'une autre date, j'ai créé trois zones de listes (année, mois, jour)
Le problème est le suivant :

quand je sélectionne le mois, une variable $m devient paire ou impaire selon le nombre de jours dans le mois (30 ou 31 jours)
je voudrais masquer le jour 31 dans ma liste si le mois est paire (exemple : avril = 30 jours)
ci-dessous mon code :
merci d'avance
$date1=$_POST['date'];
$mois=$_POST['mm'];
$jour=$_POST['jj'];
$m="paire";
?>
<form method="post" action="#"/>
<label>Aujourd'hui:</label> />
<label>Autre Date:</label>/>
<label>ANNEE: </label><select name="aa"><option value=2010 <?php echo "selected='selected'";?>/>2010</option></select>
<label>MOIS: </label><select name="mm"><option value="01" <?php if ($mois=="01"){echo "selected='selected'";$m="impaire";}?>/>Janvier</option>
   <option value="02" <?php if ($mois=="02"){echo "selected='selected'";$m="fev";}?>/>Février</option>
   <option value="03" <?php if ($mois=="03"){echo "selected='selected'";$m="impaire";}?>/>Mars</option>
   <option value="04" <?php if ($mois=="04"){echo "selected='selected'";$m="paire";}?>/>Avril</option>
   <option value="05" <?php if ($mois=="05"){echo "selected='selected'";$m="impaire";}?>/>Mai</option>
   <option value="06" <?php if ($mois=="06"){echo "selected='selected'";$m="paire";}?>/>Juin</option>
                                       <option value="07" <?php if ($mois=="07"){echo "selected='selected'";$m="impaire";}?>/>Juillet</option>
                                       <option value="08" <?php if ($mois=="08"){echo "selected='selected'";$m="impaire";}?>/>Aout</option>
   <option value="09" <?php if ($mois=="09"){echo "selected='selected'";$m="paire";}?>/>Septembre</option>
   <option value="10" <?php if ($mois=="10"){echo "selected='selected'";$m="impaire";}?>/>Octobre</option>
                                   <option value="11" <?php if ($mois=="11"){echo "selected='selected'";$m="paire";}?>/>Novembre</option>
                                   <option value="12" <?php if ($mois=="12"){echo "selected='selected'";$m="impaire";}?>/>Décembre</option></select>

 <label>Jour: </label><select name="jj"><option value="01" />01</option>
<option value="02" />02</option>
<option value="03" />03</option>
<option value="04" />04</option>
<option value="05" />05</option>
<option value="06" />06</option>
<option value="07" />07</option>
<option value="08" />08</option>
<option value="09" />09</option>
<option value="10" />10</option>
<option value="11" />11</option>
<option value="12" />12</option>
<option value="13" />13</option>
<option value="14" />14</option>
<option value="15" />15</option>
<option value="16" />16</option>
<option value="17" />17</option>
<option value="18" />18</option>
<option value="19" />19</option>
<option value="20" />20</option>
<option value="21" />21</option>
<option value="22" />22</option>
<option value="23" />23</option>
<option value="24" />24</option>
<option value="25" />25</option>
<option value="26" />26</option>
<option value="27" />27</option>
<option value="28" />28</option>
<option value="29" />29</option>
<option value="30" />30</option>
<option value="31" <?php if ($m=="paire"){echo "disabled='disabled'";}?> />31</option></select>
</form>

5 réponses

tpoinsot Messages postés 345 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 octobre 2014 4
24 févr. 2010 à 13:47
Bonjour,

<?php if ($m != "paire") { ?>
<option value="31" />31</option>
<? } ?>


Idem pour l'input.

Et tu fais quoi pour février ?

thip
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
24 févr. 2010 à 19:30
Salut,

Je pense que tu te compliques la vie. Procéder ainsi va t'amener inévitablement à des bugs, comme celui qu'expose Tpoinsot.
PHP propose plusieurs solutions pour valider "automatiquement" les dates, mais le mieux à mon sens reste de passer par du JS. Les solutions ne manquent pas de ce côté, et certaines sont paramétrables à souhait.

Cordialement,


Kohntark -
0
naroco Messages postés 4 Date d'inscription lundi 8 février 2010 Statut Membre Dernière intervention 24 février 2010
24 févr. 2010 à 19:46
Je débute en php et je ne connais pas le javascript.
as-tu une solution en php ?
pour info j'ai simplifié mon code à l'aide d'un tableau des mois et des jours.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
24 févr. 2010 à 20:15
J'en profites pour re poser la question de Tpoinsot qui n'a pas eu de réponse :
Et tu fais quoi pour février ?



as-tu une solution en php ?

Il doit exister nombre de scripts tout fait sur la toile.
Si tu veux coder ça toi même regarde les possibilités de mktime() / date() (afin de valider automatiquement des dates) et la class datetime si ton hébergeur le permet.


je ne connais pas le javascript

Il y a des solutions toutes faites et relativement bien documentées qui permettent une mise en place rapide sans grandes compétences en la matière. Si tu n'as jamais touché à javascript tu risques effectivement de galérer mais le jeux en vaut la chandelle.
Par ex : http://www.dynarch.com/projects/calendar/

Cordialement,


Kohntark -
0

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

Posez votre question
tpoinsot Messages postés 345 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 octobre 2014 4
24 févr. 2010 à 22:53
En général, quand on fait soi-même, on crée un tableau de 12 nombres contenant le nombre de jours par mois en utilisant la date du premier jour de chaque mois - 1. Tu suis ?
Après, on fait une brave boucle pour l'affichage.

Sinon, on remplit les 12 mois à la main et on calcule pour février en fonction de l'année (multiple de 4 - multiple de 100 + récup des multiples de 400) au cas où elle serait bissextile (si tous les mois avaient 30 jours ce serait quand même plus simple)
0
Rejoignez-nous