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 vous tiendrai au courant si ca vous int�resse pas la suite.

a+

piregwan (agent mad fanatique lvl 1 - )
49 ans (chamb�ry, 73)
krakoukas@piregwan-genesis.com | 91327470
http://www.piregwan-genesis.com

" s'il vous plait mademoiselle, j'aurais voulu prendre une le�on particuli�re avec anne laurencin " JCD





  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]


angel2k (exil� fanatique - )
42 ans (Amiens)
angel2k@piregwan.com | 110643996

cet espace est � vendre ! mise � prix � 518�





  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 !

Naxos (mickey - )
46 ans (Suresnes)
mail@fbouju.net | 20473598
http://www.fbouju.net

CTRL-Z is the key ;)





  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"

angel2k (exil� fanatique - )
42 ans (Amiens)
angel2k@piregwan.com | 110643996

cet espace est � vendre ! mise � prix � 518�





  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

Naxos (mickey - )
46 ans (Suresnes)
mail@fbouju.net | 20473598
http://www.fbouju.net

CTRL-Z is the key ;)





  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),


sylozof (jouet en plastok lvl 1 - )
43 ans (S�lestat)
syl82@laposte.net | 148310108

Autant l'hiver �clate que l'h�t�roclyte
Eric et Ramzy





  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+

Remake (homme averti qu'en vaut deux lvl 1 - )
45 ans (Creil / Saint-Denis)
remake@hotmail.com
http://hymedia.free.fr

"Toute paix, est un embryon de guerre" Patlabor 2.





  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

-FREAKER- (membre - )
40 ans (Lille)
freaker3d@hotmail.com | 85570231
http://www.freaker.fr.st

cet espace est � vendre ! mise � prix � 87�





  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 @+

asdesign (mickey - )
39 ans
junfanlee@hotmail.com
http://asdesign.free.fr

Celui qui veut faire son devoir doit faire un peut plus que son devoir
"Bruce Lee"





  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 aucune n'est convenable, elles utilisent les timestamps unix.

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 � +- 1 mois pres

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 cette fonction utilisateur fait surement appelle aux timestamps. elle convertit les 2 dates en timestamps unix, et elle fait la diff�rence. easy. et comment tu fais la diff�rence entre la date courante (2002 sur le calendrier l�murien) et une date ant�rieure a 1970 ? sans les timestamps ? tu fais comme moi. tu faiblis.

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)! ;)

piregwan (agent mad fanatique lvl 1 - )
49 ans (chamb�ry, 73)
krakoukas@piregwan-genesis.com | 91327470
http://www.piregwan-genesis.com

" s'il vous plait mademoiselle, j'aurais voulu prendre une le�on particuli�re avec anne laurencin " JCD





  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.

o0o (roi du pixel fanatique lvl 1 - )
52 ans (Limbo - ^^)
info@o0o.ch | 167155058
http://www.o0o.ch

   o            0          �      
O o O o
O o O o O








  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 ? ^^

-FREAKER- (membre - )
40 ans (Lille)
freaker3d@hotmail.com | 85570231
http://www.freaker.fr.st

cet espace est � vendre ! mise � prix � 87�





  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 ???

Deviljonz (apprenti ange noir en sursis fanatique lvl 1 - )
42 ans (Antony near Paris)
deviljonz@deviljonz.com | 85754277
http://www.deviljonz.com

" Je crois au moment . Et si ya pas le moment � ce moment l�, il faut arriver � ce moment l�, au moment qu'on veut ! Tu comprends ? "





  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 merci mon bon freaker.

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> ";
    }
?>

piregwan (agent mad fanatique lvl 1 - )
49 ans (chamb�ry, 73)
krakoukas@piregwan-genesis.com | 91327470
http://www.piregwan-genesis.com

" s'il vous plait mademoiselle, j'aurais voulu prendre une le�on particuli�re avec anne laurencin " JCD





  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

-FREAKER- (membre - )
40 ans (Lille)
freaker3d@hotmail.com | 85570231
http://www.freaker.fr.st

cet espace est � vendre ! mise � prix � 87�


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 en face de son intervention. Enfin si vous voulez inviter quelqu'un � r�agir, utilisez les appeaux ci-dessous. Seuls les membres logu�s peuvent utiliser les appeaux et seuls les membres actifs peuvent �tre appeaut�s ^^. Bonne notification !

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.