Biorythme avec affichage graphique

Description

Un style de BioRythme qui affiche une courbe sinusoïdale entre 2 dates.
C'est un jour ma copine qui m'a demandé si je ne serais pas capable de lui programmer un calendrier qui lui signalerait le jour des ragnoutes, soit environ tout les 28 jrs.

Donc il faut définir la date du dernier événement, ainsi que la récurrence (28 jrs) et le nombre de jours de prévision.
Pour la lecture du graphique: les phases les + hautes c'est les jours où l'on va le mieux, le + bas l'événement en question..

Le calendrier fait une toute petite erreur car il ne tient pas compte des années bissextiles, il fait juste 30-31-30...

Source / Exemple :


<html>
<head>
<title>BioRythme</title>
<body>
<?
$recurance = htmlentities ($_POST['recurance'], ENT_QUOTES);
if ($recurance == '')

{ $recurance = '15'; }
$depart = htmlentities ($_POST['depart'], ENT_QUOTES);
if ($depart == '')

{ $depart = '01.01.2010'; }
$prevision = htmlentities ($_POST['prevision'], ENT_QUOTES);
if ($prevision == '')

{ $prevision = '31'; }
echo '<font color=red>Prévisions pour '.$prevision.' jours, depuis aujourd\'hui ('.date("d-m-Y").'):</font><br><br>';

//calcul nb de jour:
$recurance = $recurance * 2; //multiplie par 2 car la formule du sinus est positive puis négative alors que j'ai une valeur absolue (voir + loin)
$date1=date("Y-m-d"); //a aujourd'hui
$JJ=substr($depart,0,2); //jour depart
$MM=substr($depart,3,2); //mois depart
$AA=substr($depart,6,4); //an depart
$date2 = $AA.$MM.$JJ; //depuis la date entrée
//$date2 = $an.'-01-'.$depart; //depuis X janvier 'YYYY (X étant le nb de jour et YYYY l'an en cours..)
$nbjours = round((strtotime($date1) - strtotime($date2))/(60*60*24)); //calcul de nombre de jours entre $date2 et aujourd'hui ($date1)

//calcul de la courbe sinus:
echo 'calcul avec laps de temps de '.($recurance/2).' jour(s)<br>';
echo 'date du dernier événement: '.$depart.'<br><br>';
$jour=substr($date1,8,2); //$jour=JJ d'aujoud'hui
$trente = '31'; //défini si c'est un mois à 30 ou 31 jours

echo '<center><table style="border:1px solid black" CELLPADDING=2 CELLSPACING=0><tr>';
for($i=0;$i < $prevision;$i++) //boucle de 31 jours pour afficher la courbe sin (31 par defaut mais choisi par l'utilisateur $prevision)
{
$courbe=sin(2*3.14*$nbjours/$recurance); //calcul le sin
$courbe = abs($courbe); //variable absolue (enleve le signe + ou -)
$courbe = round($courbe,2); //arrondi a 1 chiffre après la ,
$courbe = $courbe*150;
echo '<td align=center BGCOLOR="#ffffff" width=30 height=100><img src="barre.png" alt="" width="5" height='.$courbe.' /></td>';
$nbjours++;
}
echo '</tr><tr>';
for($i=0;$i < $prevision;$i++) //boucle pour afficher le calendrier
{
echo '<td align=center BGCOLOR="#CC3333" width=30>'.$jour.'</td>';
$jour++;
if (($jour == '31') && ($trente == '30'))

{ $jour = '1'; $trente = '31';

}
if (($jour == '32') && ($trente == '31'))

{ $jour = '1'; $trente = '30';

}
}
echo '</tr></table>';
?>
<br><br>
<form method='post' action='biorythme.php'>

<table border=0 CELLPADDING=0 CELLSPACING=0>
<tr>
<td align=right BGCOLOR="#CC3333" width=160><font size=2 color="#FFFFFF">Saisie&nbsp;</font></td>
<td align=left BGCOLOR="#CC3333" width=150><font size=2 color="#FFFFFF">Utilisateur</font></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td align=right width=160><font size=2 color=#CC3333><b>récurance:&nbsp;</b></font></td>
<td align=left width=150>&nbsp;<INPUT STYLE='Text-ALIGN:center' TYPE='text' NAME='recurance' SIZE=2 MAXLENGTH=3 VALUE='15'><font size=1>&nbsp;Tout les X jours</font></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td align=right width=160><font size=2 color=#CC3333><b>dernier événement:&nbsp;</b></font></td>
<td align=left width=150>&nbsp;<INPUT STYLE='Text-ALIGN:center' TYPE='text' NAME='depart' SIZE=8 MAXLENGTH=10 VALUE='31.12.2010'></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td align=right width=160><font size=2 color=#CC3333><b>nb jours prévision:&nbsp;</b></font></td>
<td align=left width=150>&nbsp;<INPUT STYLE='Text-ALIGN:center' TYPE='text' NAME='prevision' SIZE=2 MAXLENGTH=3 VALUE='31'><font size=1>&nbsp;A afficher</font></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td align=right width=160>&nbsp;</td>
<td align="left" width=150>&nbsp;<input name="submit" type="submit" value="Calculer"></td>
</tr>
</table></form>
</center><br><br>
<font color=green size=2><u>Points importants:</u><br>Lors de la saisie de la date de dernier événement, préférer choisir un mois a 31 jours<br>Lecture de la courbe: elle défini la date entree par le point le + bas sur la courbe! (le + élevé défini là ou on est le mieux..)<br>Lors d'une saisie de date: ne pas oublier le 0 dans 01.12.2000 et non 1.12.2000..</font>
</body>
</html>

Conclusion :


Pour conclure, je me souviens que quand j'étais jeune et plein de boutons sur la gu**** j'avais l'impression que j'avais une poussée toutes les 3-4 semaines et que ca allait mieux entre deux, ca aurait été marrant de vérifier avec un graph :)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.