Aide script date
amenosyla
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Alain_42 Messages postés 5413 Statut Membre -
Alain_42 Messages postés 5413 Statut Membre -
Bonjour, je suis éleveur félin et je voudrais mettre en place un calendrier de gestation. J'ai trouvé un script qui fonctionne parfaitement à un détail près. Il ne tient pas compte des années bissextile :(
La gestation chez un chat dure entre 63 et 70 jours.
exemple: si j'entre une date de saillie telle que 06/02/2010 + 63 jours il me retourne en résultat, pour la mise bas, 10/04/2010 ce qui est faux car ce devrait être le 12/04/2010. Donc comment modifier ce script ?
La gestation chez un chat dure entre 63 et 70 jours.
exemple: si j'entre une date de saillie telle que 06/02/2010 + 63 jours il me retourne en résultat, pour la mise bas, 10/04/2010 ce qui est faux car ce devrait être le 12/04/2010. Donc comment modifier ce script ?
<?php
if ($submit == 'Calculer') {
if ($compute == 'sub') {
$day = $day - $days;
} elseif ($compute == 'add') {
$day = $day + $days;
}
$echo = date($output, mktime (0,0,0,$month,$day,$year)); //ceci est la date calculée
}
echo "
<form action=\"\" method=post>
<table border=0 cellspacing=1 cellpadding=2 bgcolor=blue width=300>
<tr>
<td bgcolor=blue><font color=white face=arial><B>Date Calculée"; if (!empty($echo)) {echo " - Résultat: $echo";} echo "</B></font></td>
</tr>
<tr>
<td bgcolor=white>
<table border=0 cellpadding=3 cellspacing=0>
<tr>
<td aligin=left><font color=blue face=arial>Choisir date: </font></td><td aligin=left><select name=day>";
getoption(1, 31, date("d"));
echo "</select><select name=month>";
getoption(1, 12, date("m"));
echo "</select><select name=year>";
getoption(1970, 2020, date("Y"));
echo "</select></td>
</tr>
<tr>
<td aligin=left><font color=blue face=arial>Additionner</font></td><td aligin=left><select name=compute><option value=add>+<option value=sub>-</select>
<input type=text name=days size=4 maxlength=4><font color=blue face=arial> jour(s)</font></td>
</tr>
<tr>
<td aligin=left><font color=blue face=arial>Format de sortie: </font></td><td aligin=left><select name=output><option value=\"d-m-Y\">dd-mm-YYYY<option value=\"l, d M Y\">weekday, dd mm yyyyy</select></td>
</tr>
<tr>
<td aligin=left colspan=2><input type=submit name=submit value=Calculer></td>
</tr>
</table>
</td></tr></table></form>";
function getoption($start, $end, $if) {
for ($i=$start;$i<=$end;$i++) {
echo "<option value=$i"; if ($i == $if) { echo " selected";} echo ">$i";
}
}
?>
3 réponses
-
<?php //il faut recuperer les valeurs dans le $_POST car si dans ton php.ini Register Global est à off ça ne marcherait pas if (isset($_POST['submit']) && $_POST['submit'] == 'Calculer') { extract($_POST); //transforme tous les $_POST des champs en une variable correspondante au nom du champ //en passant par le timestamp ça résoud le pb des mois 30 / 31 / 28 /29 //calcul du timestamp date saisie $timestamp_date_saisie=mktime (0,0,0,$month,$day,$year); if ($compute == 'sub') { $timestamp_date_calculee=$timestamp_date_saisie - ($days*3600*24); } elseif ($compute == 'add') { $timestamp_date_calculee=$timestamp_date_saisie + ($days*3600*24); } $resultat = date($output,$timestamp_date_calculee); //ceci est la date calculée //ce n'est pas très judicieux de choisir des noms de variables correspondant a des noms réservés php comme echo etc.... } echo " <form action=\"\" method=post> <table border=0 cellspacing=1 cellpadding=2 bgcolor=blue width=300> <tr> <td bgcolor=blue><font color=white face=arial><B>Date Calculée"; if (!empty($resultat)) {echo " - Résultat: $resultat";} echo "</B></font></td> </tr> <tr> <td bgcolor=white> <table border=0 cellpadding=3 cellspacing=0> <tr> <td aligin=left><font color=blue face=arial>Choisir date: </font></td><td aligin=left><select name=day>"; getoption(1, 31, date("d")); echo "</select><select name=month>"; getoption(1, 12, date("m")); echo "</select><select name=year>"; getoption(1970, 2020, date("Y")); echo "</select></td> </tr> <tr> <td aligin=left><font color=blue face=arial>Additionner</font></td><td aligin=left><select name=compute><option value=add>+<option value=sub>-</select> <input type=text name=days size=4 maxlength=4><font color=blue face=arial> jour(s)</font></td> </tr> <tr> <td aligin=left><font color=blue face=arial>Format de sortie: </font></td><td aligin=left><select name=output><option value=\"d-m-Y\">dd-mm-YYYY<option value=\"l, d M Y\">weekday, dd mm yyyyy</select></td> </tr> <tr> <td aligin=left colspan=2><input type=submit name=submit value=Calculer></td> </tr> </table> </td></tr></table></form>"; function getoption($start, $end, $if) { for ($i=$start;$i<=$end;$i++) { echo "<option value=$i"; if ($i == $if) { echo " selected";} echo ">$i"; } } ?> -
J'ai rectifié un peu ton code, chez moi ça marche nickel
les valeurs des arguments dans les balises HTML doivent tous être entre "
dans les listes <select il faut <option value="....">xxxxxx</option>
et mis un echo pour voir si on passe bien dans le if
<?php //fonction php function getoption($start, $end, $if) { for ($i=$start;$i<=$end;$i++) { echo "<option value=$i"; if ($i == $if) { echo " selected";} echo ">$i</option>"; } } //fin fonction if (isset($_POST['submit']) && $_POST['submit'] == 'Calculer') { extract($_POST); //transforme tous les $_POST des champs en une variable correspondante au nom du champ // TEST echo "date saisie :".$day."-".$month."-".$year; //fin TEST //en passant par le timestamp ça résoud le pb des mois 30 / 31 / 28 /29 //calcul du timestamp date saisie $timestamp_date_saisie=mktime (0,0,0,$month,$day,$year); if ($compute == 'sub') { $timestamp_date_calculee=$timestamp_date_saisie - ($days*3600*24); } elseif ($compute == 'add') { $timestamp_date_calculee=$timestamp_date_saisie + ($days*3600*24); } $resultat = date($output,$timestamp_date_calculee); //ceci est la date calculée //ce n'est pas très judicieux de choisir des noms de variables correspondant a des noms réservés php comme echo etc.... } ?> <form name="form1" action="" method="post"> <table border="0" cellspacing="1" cellpadding="2" bgcolor="blue" width="300"> <tr> <td bgcolor="blue"><font color="white" face="arial"><b>Date Calculée <?php if (!empty($resultat)) {echo " - Résultat: ".$resultat;} ?> </b></font></td> </tr> <tr> <td bgcolor="white"> <table border=0 cellpadding=3 cellspacing=0> <tr> <td aligin="left"><font color="blue" face="arial">Choisir date: </font></td> <td aligin="left"> <select name="day"> <?php getoption(1, 31, date("d")); echo "</select><select name=month>"; getoption(1, 12, date("m")); echo "</select><select name=year>"; getoption(1970, 2020, date("Y")); echo "</select></td>"; ?> </tr> <tr> <td aligin="left"><font color="blue" face="arial">Additionner</font></td> <td aligin="left"> <select name="compute"> <option value="add">+</option> <option value="sub">-</option> </select> <input type="text" name="days" size="4" maxlength="4"><font color="blue" face="arial"> jour(s)</font> </td> </tr> <tr> <td align="left"><font color="blue" face="arial">Format de sortie: </font></td> <td align="left"> <select name="output"> <option value="d-m-Y">dd-mm-YYYY</option> <option value="l, d M Y">weekday, dd mm yyyyy</option> </select> </td> </tr> <tr> <td aligin="left" colspan="2"><input type="submit" name="submit" value="Calculer"></td> </tr> </table> </td> </tr> </table> </form> -
Et aussi, tu n'avait peut être pas modifié la ligne:
<td bgcolor=blue><font color=white face=arial><B>Date Calculée"; if (!empty($echo)) {echo " - Résultat: $echo";} echo "</B></font></td>
par:
<td bgcolor=blue><font color=white face=arial><B>Date Calculée"; if (!empty($resultat)) {echo " - Résultat: $resultat";} echo "</B></font></td>