Biorythme avec affichage graphique

Soyez le premier à donner votre avis sur cette source.

Vue 6 582 fois - Téléchargée 525 fois

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

Ajouter un commentaire Commentaires
Messages postés
65
Date d'inscription
samedi 29 octobre 2005
Statut
Membre
Dernière intervention
8 août 2011

Le calcul de date est faux, mais aussi les cyles : (Wikipedia)
En 1904, le médecin (de)Hermann Swoboda, professeur en psychologie à l'université de Vienne met en évidence un cycle physique de 23 jours et un cycle émotionnel de 28 jours. Au même moment, à Berlin, le médecin biologiste Wilhelm Fliess arrive aux mêmes conclusions. C'est en 1920, que le cycle de l'intellect d'une durée de 33 jours est mis en évidence à Innsbrück par Alfred Teltscher, professeur en génie mécanique qui, pendant des années, notait ses observations sur le comportement cérébral de ses étudiants.
Tu peux ajouter :
En particulier, les cycles qui ont été ajoutés aux cycles reconnus (sommeil ou cycle reproductif chez la femme) tel que le cycle intuitif de 38 jours, le cycle esthétique de 43 jours et le cycle spirituel de 53 jours, voire un "cycle de la passion", sont généralement considérés comme des produits de l'imagination. La science expérimentale a mis en évidence un certain nombre de rythmes dans le cadre de la "chronobiologie". Ces rythmes n'ont pas la fixité mécanique des biorythmes définis dans la théorie présentée dans cet article.

Tu peux en discuter avec ta copine...
Mais bravo pour les courbes.
Dom Efis
Messages postés
261
Date d'inscription
mardi 2 juillet 2002
Statut
Membre
Dernière intervention
10 mars 2014
2
Tcho undertaker4000, merci pour ton message

Oui tu as raison d'habitude les biorythmes affichent 3 courbes, mais moi je voulais juste n'en afficher qu'une, dont je choisis la date de départ (au lieu de la date de naissance) et de pouvoir modifier le nombre de jour (les biorythmes d'habitude ont 3 courbes de 20, 23 et 25 jours).

sinon pour les années bissextiles ca fait pas une grande erreur, 4 jours au max sur 1 an, donc j'ai pas jugé utile d'aller + loin ;)

Ce que j'ai amélioré dans mon script depuis, c'est de pouvoir enregistrer des dates en faisant appel à une base de donnée, si qqun est intéressé je peux mettre à jour ma source..

voilou-voilou, A++
Messages postés
11
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
14 février 2012

Bonjour mailliam,
Bel effort mais il existe de tels programmes qui offrent un affichage bien plus complexe en prenant en compte - et en affichant - d'autres courbes physiologiques.

Deux petites questions :
- Pourquoi ne pas approfondir tes recherches sur ces rythmes biologiques et ainsi compléter ton programme ?

- Tu signales que ton programme ne tient pas compte des années bissextiles. Qu'attends-tu pour corriger cela ?

Bel exercice sur les sinus.

A+

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.