Problème disabled

Signaler
Messages postés
4
Date d'inscription
lundi 8 février 2010
Statut
Membre
Dernière intervention
24 février 2010
-
Messages postés
345
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 octobre 2014
-
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

Messages postés
345
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 octobre 2014
3
Bonjour,

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


Idem pour l'input.

Et tu fais quoi pour février ?

thip
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
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 -
Messages postés
4
Date d'inscription
lundi 8 février 2010
Statut
Membre
Dernière intervention
24 février 2010

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.
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
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 -
Messages postés
345
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 octobre 2014
3
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)