![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 30 05 2002 � 06:03 ![]() | ![]() ![]() ![]() ![]() |
![]() | salut j'ai une table membres avec les dates de naissance sur 3 champs (jour, mois, ann�e). j'aimerais recevoir une notif quotidienne avec les anniversaires a venir, par exemple : * devil aura 11 ans dans 4 jours * line renaud aura 244 ans dans 1 semaine * yoda aura 901 ans demain existe-il en mysql une fonction permettant de calculer un intervalle entre deux dates (parce qu'en php j'ai pas trouv� et c'est passablement TRES TRES compliqu� entre les heures d'�t� et d'hiver, les ann�es bissextiles et le reste) ? sinon il faudra �crire cette maudite fonction et il y aura surement des bugs a tout va le 29 f�vrier, en d�but et en fin d'ann�e ![]() a+ | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 30 05 2002 � 06:18 ![]() | ![]() ![]() ![]() ![]() |
![]() | Je sais que MySQL a dez fonctions de traitement de date donc je vais jeter un oeil et je te tiens au courant. bonne journ�e. [Edit] Fonction Mysql : http://dev.nexen.net/docs/mysql/annotee/manuel_... Fonctions PHP : Il existe un librairie nomm�e MCAL mais je sais pas si elle est dispo chez Online ... Regarde l� : http://dev.nexen.net/docs/php/annotee/ref.mcal.... [End Edit] | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 30 05 2002 � 07:25 ![]() | ![]() ![]() ![]() ![]() |
![]() | Avec PHP tu peux passer en date "absolue" (nombre de ms depuis je-sais-plus-quand-dans-les-ann�es 70) Unix, �a peut faire l'affaire ? Tu fais la diff�rence entre les deux dates absolues, petite conversion en jours et hop ! | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 30 05 2002 � 07:40 ![]() | ![]() ![]() ![]() ![]() |
![]() | Ca r�gle pas vraiment le gros probl�me des trous spatio-temporels cr��s par f�vrier et les ann�es bissextiles... "Beam me up Scotty" | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 30 05 2002 � 07:43 ![]() | ![]() ![]() ![]() ![]() |
![]() | Ben, si la fonction PHP (c'est mktime il me semble ?) est pas trop d�bile, elle "sait" quelle ann�e est bissextile et tout et tout, je vois pas trop o� est le soucis $date1 = mktime(param�tres qui vont bien) $date2 = mktime(param�tres qui vont bien) $nb_jours_int = ($date1 - $date2) / (24*3600*1000) ou un truc dans le style ![]() | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 30 05 2002 � 08:52 ![]() | ![]() ![]() ![]() ![]() |
![]() | en SAL tu as une fonction qui s'appelle MONTH_BETWEEN ou quelque chose comme ca, qui renvoie le nombre de mois entre 2 dates, et en MYSQL tu as PERIOD_DIFF qui fait la meme chose PERIOD_DIFF(P1,P2) Returns the number of months between periods P1 and P2. P1 and P2 should be in the format YYMM or YYYYMM. Note that the period arguments P1 and P2 are not date values: mysql> SELECT PERIOD_DIFF(9802,199703); -> 11 je fais encore d'autres recherches, parce que j'ai d�ja utilis� ce genre de fonction et je suis sur que ca existe (ou alors j'avais combin� plusieurs fonctions), | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 30 05 2002 � 09:32 ![]() | ![]() ![]() ![]() ![]() |
![]() | Je crois qu'il existe une fonction, voici la syntaxe : $intervalle=entre_deux_dates($date1,$date2); elle retourne le nombre de milli-secondes �coul�s entre date1 et date2. $date1 et $date2 sont de la forme aaaa/mm/jj. ![]() ![]() ![]() A+ | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 30 05 2002 � 12:11 ![]() | ![]() ![]() ![]() ![]() |
![]() | hello, Comme �a m'interressait aussi, j'ai fait un tit script. En fait pour les dates en php, tout tourne autour de mktime et de strftime. mktime retourne le nombre de secondes depuis le 1er janvier 1970 � partir de variables donn�es en param�tre. (jour, mois, ann�es, heures, minutes, secondes) strftime joue le r�le inverse : il convertie le nombre de secondes donn� en param�tre et renvoie une date format�e. // definition du jour de la naissance de l'individu : $mois_naissance = 9; $jour_naissance = 20; $annee_naissance = 1984; $naissance_s = mktime(0,0,0,$mois_naissance,$jour_naissance,$anne e_naissance); $aujourdhui_s = mktime(0,0,0,date("m"),date("d"),date("Y")); $anniversaire_s = mktime(0,0,0,$mois_naissance,$jour_naissance,date( "Y")); $intervale_s = $anniversaire_s - $aujourdhui_s; if ($intervale_s < 0) { $annee_prochaine = date ("Y"); $annee_prochaine++; $anniversaire_s = mktime(0,0,0,$mois_naissance,$jour_naissance,$anne e_prochaine); $intervale_s = $anniversaire_s - $aujourdhui_s; } // maintenant intervale_s est le temps en secondes avant le prochain anniversaire de l'individu. // CONVERSION en jours $intervale_j = $intervale_s / (60 * 60 * 24); echo "L'anniversaire de l'individu est dans ".$intervale_j." jours. <br> "; // CONVERSION en jours ET mois : $intervale_nbr_de_jours = strftime("%d",$intervale_s); $intervale_nbr_de_mois = strftime("%m",$intervale_s); echo " <br> L'anniversaire de l'individu est aussi dans ".$intervale_nbr_de_jours." jours, ".$intervale_nbr_de_mois." mois. <br> "; Note que pour la conversion en jours ET mois, j'ai du tricher un peu et le r�sultat n'est pas garantie � 100% lors des cas particuliers (ann�es bisextiles etc ...) Par contre, je viens d'avoir une id�e pour avoir un r�sultat garantie � 100%. Je retourne en cours, je cherche pis je te donne la r�ponse ce soir ;) [edit : ] le script fonctionne bien, apparemment ... j'aurais 18 balais dans 4 mois et 24 jours : http://www.netplayergames.com/test.php | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 30 05 2002 � 15:07 ![]() | ![]() ![]() ![]() ![]() |
![]() | Salut pg essaie �a: //Verification si une ann�e est bissextile ou pas Function bissextile($annee) { $i = $annee; if(($i % 4 == 0)&&(($i % 100 != 0)||($i % 400 == 0))) { return true; } else { return false; } } //Calcul du nombre de jours pour chaque ann�e s�parant les deux dates Function nbjourannee($date1, $date2) { $a1 = $date1[2]; $a2 = $date2[2]; If ($a1 == $a2) { $nbjourannee = 0; } else { $i = $a2; $nbjourannee = 0; While ($i < $a1) { $nbjourannee = $nbjourannee + 365; If (bissextile($i)) { $nbjourannee = $nbjourannee + 1; } $i++; } } return $nbjourannee; } //Calcul du nombre de jours par rapport au premier janvier de la date Function nbjanvier($ldate) { $nbmois = Array("","0","31","59","90","120","151","181","212 ","243","273","304","334"); $j = $ldate[0]; $m = $ldate[1]; $a = $ldate[2]; $nbjanvier = $nbmois[$m] + $j; If ((bissextile($a)) && ($m > 2)) { $nbjanvier = $nbjanvier + 1; } return $nbjanvier; } //Calcul du nombre de jours entre deux dates Function nbjour($date1, $date2) { $nbjourannee = nbjourannee($date1, $date2); $nbjanvier1 = nbjanvier($date1); $nbjanvier2 = nbjanvier($date2); return $nbjour = $nbjourannee + $nbjanvier1 - $nbjanvier2; } voila c un peut long mais... aller @+ | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 30 05 2002 � 15:35 ![]() | ![]() ![]() ![]() ![]() |
![]() | angel " Je sais que MySQL a dez fonctions de traitement de date " period_add period_diff curdate curtime date_add date_format date_sub dayname unix_timestamp to_days... je me suis renseign� faut pas croire ![]() naxos " Unix, �a peut faire l'affaire ? " les timestamps unix sont absolument parfaits. perso j'adore. j'adorais jusque-l�. un timestamp unix est un entier repr�sentant le nombre de secondes �coul�es depuis le 1 janvier 1070. parfait. parfait sauf que la fonction retourne -1 pour les dates ant�rieures et cas particulier : comment je fais pour calculer l'age d'un membre n� avant le 1er janvier 1970 hein ??? ben ca plante �videmment. timestamp caca pour bosser avec des dates ant�rieures � 1970. sinon du bonheur en boite ce format. naxos " Avec PHP tu peux passer en date "absolue" " je veux pas le faire avec php. il faurdrait que je s�lectionne tous les enregistrements (plusieurs milliers) pour les traiter en php. NON. je veux faire ma s�lection directe en mysql et limiter la s�lection � 15-20 membres (on anticipe les anniversaires sur 10 jours) angel " Ca r�gle pas vraiment le gros probl�me des trous spatio-temporels cr��s par f�vrier et les ann�es bissextiles " on s'en fout ! on calcule des anniversaires. on se moque de l'ann�e. on travaille que sur le jour et le mois. juste il faut faire attention. exemple : anniversaire le 1er mars. on est le 28 fevrier. si c'est bissextile, il faut pas dire "anniversaire demain!!!". il faut juste savoir si l'ann�e en cours est bissextile ou pas. les autres (entre l'ann�e courante et l'ann�e de naissance, on s'en moque) patrouilleur " en MYSQL tu as PERIOD_DIFF qui fait la meme chose " c'est de la crotte. ca calcule in intervalle exprim� en mois entre deux dates exprim�es en mois aussi. bonjour la pr�cision pour les anniversaires ![]() ![]() remake " Je crois qu'il existe une fonction entre_deux_dates($date1,$date2); " c'est une blague n'est-ce pas ? huhu tr�s drole ![]() freaker tout pareil. curieux de voir le r�sultat avec une date de naissance ant�rieure a 1970 ;) asdesign merci pour toutes ces fonctions !! a tester de suite maudits timestamps ! maudits vieux (> 32 ans)! ;) | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 30 05 2002 � 15:49 ![]() | ![]() ![]() ![]() ![]() |
![]() | pourquoi pas mettre une var fant�me sur les vieux et remonter leur �ge � 1970 �a change rien pour leur anniversaire...une bonne cure de rajeunissement...sinon j'y comprends rien � tout �a je m'en retourne jouer de la fl�te. | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 30 05 2002 � 16:25 ![]() | ![]() ![]() ![]() ![]() |
![]() | arf gwan, mon script fonctionne tr�s bien avec les vieux de plus de 32 ans ;) essaye-l� avant de dire quoi que ce soit : Le timestamp sera tout simplement n�gatif ... et alors ? on s'en fout ![]() exemple : $naissance_s = mktime(0,0,0,9,20,1954); echo $naissance_s; donnera : -482288400 ce qui ne changera rien au fonctionnement de la fonction ! Sinon, j'ai cherch� pour avoir l'intervale en jours ET en mois mais la m�thode est fastidieuse. euh ... avoir le r�sultat en jours uniquement c'est d�j� bien nan ? ^^ | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 30 05 2002 � 17:10 ![]() | ![]() ![]() ![]() ![]() |
![]() | JC > lol ki a dit que j'aurai 11 ans ds 4 jours??? lol ![]() lol g un gato ou d smarties ??? ![]() | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 30 05 2002 � 17:24 ![]() | ![]() ![]() ![]() ![]() |
![]() | j'ai test� un petit truc tout a l'heure, sans faire appel aux timestamps. la fonction travaille uniquement sur les jours et les mois avec des tableaux de valeurs pr�d�finies http://www.piregwan.com/maintenance/afficher_an... je teste ta fonction de suite freaker... ... ... ay� c'est test�. mince ca marche meme avec un gars n� en 1515 ;) bon ben toutes mes excuses, je vais faire un meltingpot avec les deux fonctions ![]() la mienne etait plus couille molle ;) jette un oeil : <?php $mois_suivants = array ( "01" => "02", "02" => "03", "03" => "04", "04" => "05", "05" => "06", "06" => "07", "07" => "08", "08" => "09", "09" => "10", "10" => "11", "11" => "12", "12" => "01" ); $nb_jours_par_mois = array ( "01" => "31", "02" => "28", "03" => "31", "04" => "30", "05" => "31", "06" => "30", "07" => "31", "08" => "31", "09" => "30", "10" => "31", "11" => "30", "12" => "31" ); $jour_courant=date("d"); $mois_courant=date("m"); $mois_suivant=$mois_suivants[$mois_courant]; function afficher_anniversaire($jour_anni, $mois_anni, $nb_jours_anticipation, $cle_membre) { // $jour_anni : jour de l'anniversaire du membre // $mois_anni : mois de l'anniversaire du membre // $nb_jours_anticipation : anticipation pour feter l'anniversaire du membre en nb de jour // $nb_jours_anticipation doit etre compris entre 2 et 27 jours // $cle_membre : cl� du membre global $mois_suivant; global $nb_jours_par_mois; global $jour_courant; global $mois_courant; global $mois_suivant; if ($mois_anni==$mois_courant) { // ANNIVERSAIRE DANS LE MOIS COURANT $nb_jours_avant_anni=$jour_anni-$jour_courant; return verifier_anniversaire($nb_jours_avant_anni, $nb_jours_anticipation, $cle_membre); } else if ($mois_anni==$mois_suivant) { // ANNIVERSAIRE DANS LE MOIS SUIVANT $nb_jours_avant_anni=($nb_jours_par_mois[$mois_cou rant]-$jour_courant)+$jour_anni; return verifier_anniversaire($nb_jours_avant_anni, $nb_jours_anticipation, $cle_membre); } return "le membre $cle_membre a son anniversaire dans trop longtemps (2) <br> "; } ?> | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 30 05 2002 � 18:32 ![]() | ![]() ![]() ![]() ![]() |
![]() | houla ![]() ![]() ![]() pas mal le coup du tableau avec le nombre de jours par mois ! Mais t'aurais eu un d�calage d'un jour lors d'une ann�e bissextile non ? En plus, ya pas d'ann�e bissextile tous les 400 ans ... et tous les 2000 ans yen a quand m�me ^^ (chapeau Asdesign pour la fonction : elle est de toi ?) Heureusement qu'elles sont l� quand m�me, les fonctions mktime et strftime ... pfiou ![]() | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() | Pour r�pondre � ce sujet (et notifier automatiquement son auteur), cliquez sur le bouton REPONDRE A CE SUJET. Si vous voulez en plus avertir de votre r�ponse une personne qui a particip� � ce sujet, cliquez sur le bouton ![]() Vous n'�tes pas membre ou vous n'�tes pas logu�(e) ou les appeaux sont d�sactiv�s dans votre profil. Vous ne pouvez pas utiliser les appeaux. | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |