Fêter anniversaire en PHP
Résolu/Fermé
cha7ri
Messages postés
205
Date d'inscription
samedi 15 mars 2008
Statut
Membre
Dernière intervention
20 mars 2011
-
18 mai 2009 à 18:53
cha7ri Messages postés 205 Date d'inscription samedi 15 mars 2008 Statut Membre Dernière intervention 20 mars 2011 - 21 mai 2009 à 13:04
cha7ri Messages postés 205 Date d'inscription samedi 15 mars 2008 Statut Membre Dernière intervention 20 mars 2011 - 21 mai 2009 à 13:04
Bonjour,
je veux savoir comment peut on avoir une liste de mes adhérents qui vont fêter leurs anniversaire cette semaine à partir de leurs date de naissance, ....... y t il qlq un qui peut me donner un exemple qui illustre ce principe
merci d'avance
je veux savoir comment peut on avoir une liste de mes adhérents qui vont fêter leurs anniversaire cette semaine à partir de leurs date de naissance, ....... y t il qlq un qui peut me donner un exemple qui illustre ce principe
merci d'avance
A voir également:
- Fêter anniversaire en PHP
- Easy php - Télécharger - Divers Web & Internet
- Joyeux anniversaire en creole ✓ - Forum Loisirs / Divertissements
- Anniversaire facebook disparu - Forum Facebook
- Etre averti de l'anniversaire de mes amis sur ma page facebook - Forum Facebook
- Joyeux anniversaire journal de naissance gratuit a imprimer - Télécharger - Histoire & Religion
13 réponses
Mins
Messages postés
43
Date d'inscription
mardi 31 juillet 2001
Statut
Membre
Dernière intervention
28 mai 2009
9
18 mai 2009 à 19:01
18 mai 2009 à 19:01
Si tu stockes les dates de naissances dans la DB avec les adhérents, tu peux utiliser between dans ta requète SQL.
Un exemple plus précis. Tu stockes la date de naissance en tant que timestamp dans la DB
Tu transformes la date du jour en timestamp.
Tu fais un select sur la table avec la date de naissance entre le timestamp courant et le timestamp courant + 7 * 24 * 60 * 60
^^'
Je suis très clair dans ma tête, mais je me demande si je vais me faire comprendre :)
Min's
Un exemple plus précis. Tu stockes la date de naissance en tant que timestamp dans la DB
Tu transformes la date du jour en timestamp.
Tu fais un select sur la table avec la date de naissance entre le timestamp courant et le timestamp courant + 7 * 24 * 60 * 60
^^'
Je suis très clair dans ma tête, mais je me demande si je vais me faire comprendre :)
Min's
Mins
Messages postés
43
Date d'inscription
mardi 31 juillet 2001
Statut
Membre
Dernière intervention
28 mai 2009
9
20 mai 2009 à 16:22
20 mai 2009 à 16:22
Désolé, je passe, mais pas tous les quarts d'heure :)
Quand je demandais une structure c'était avec les types de champs, mais on va faire avec :)
Par contre, si ta date de naissance est choisie à partir de selectboxes et que tu calcule le TS à minuit, tu peux juste faire un + (7*24*60*60) plutôt que (8*24*60*60)-1 ^^
au cas ou ton champ date de naissance serait un varchar, il faut penser à mettre des ' ' en plus autour des timestamps
Ca "doit" marcher comme ça. Ou alors que quelqu'un me corrige :)
Quand je demandais une structure c'était avec les types de champs, mais on va faire avec :)
$timestamp_today = mktime(0,0,0); // Aujourd'hui à Minuit $timestamp_in_a_week = $timestamp_today + ( 8 * 24 * 60 * 60) -1 //Le timestamp dans 8 jours - une seconde comme ça on reste dedans. $query = "SELECT * FROM adherents WHERE date_naissance BETWEEN ".$timestamp_today." AND ".$timestamp_in_a_week." ORDER BY Nom";
Par contre, si ta date de naissance est choisie à partir de selectboxes et que tu calcule le TS à minuit, tu peux juste faire un + (7*24*60*60) plutôt que (8*24*60*60)-1 ^^
au cas ou ton champ date de naissance serait un varchar, il faut penser à mettre des ' ' en plus autour des timestamps
$timestamp_today = mktime(0,0,0); // Aujourd'hui à Minuit $timestamp_in_a_week = $timestamp_today + ( 8 * 24 * 60 * 60) -1 //Le timestamp dans 8 jours - une seconde comme ça on reste dedans. $query = "SELECT * FROM adherents WHERE date_naissance BETWEEN '".$timestamp_today."' AND '".$timestamp_in_a_week."' ORDER BY Nom";
Ca "doit" marcher comme ça. Ou alors que quelqu'un me corrige :)
cha7ri
Messages postés
205
Date d'inscription
samedi 15 mars 2008
Statut
Membre
Dernière intervention
20 mars 2011
29
20 mai 2009 à 17:05
20 mai 2009 à 17:05
le timestamp de la date de naissance serai tjrs inférieurs à la date d'aujourd'hui , le test [BETWEEN ".$timestamp_today." AND ".$timestamp_in_a_week." ORDER BY Nom"] sera toujours false
puisque le timestamp désigne le nombre de secondes écoulées depuis le 1er janvier 1970......
j'espére que je bien expliquer le probléme...........@+
puisque le timestamp désigne le nombre de secondes écoulées depuis le 1er janvier 1970......
j'espére que je bien expliquer le probléme...........@+
Mins
Messages postés
43
Date d'inscription
mardi 31 juillet 2001
Statut
Membre
Dernière intervention
28 mai 2009
9
20 mai 2009 à 18:32
20 mai 2009 à 18:32
ARf... Crétin...
J'y réfléchis, je te réponds d'ici quelques minutes... ^^'
J'y réfléchis, je te réponds d'ici quelques minutes... ^^'
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
cha7ri
Messages postés
205
Date d'inscription
samedi 15 mars 2008
Statut
Membre
Dernière intervention
20 mars 2011
29
19 mai 2009 à 17:38
19 mai 2009 à 17:38
ça marche pas........ même l'idée est erronée ,mais l'utilisation des timestamp est sur
Mins
Messages postés
43
Date d'inscription
mardi 31 juillet 2001
Statut
Membre
Dernière intervention
28 mai 2009
9
19 mai 2009 à 19:19
19 mai 2009 à 19:19
Euh... non, l'idée est correcte normalement, c'est toujours comme ça que j'ai fait.
Donns plutôt alors la structure de ta base de données et je te donnerai la requête php/mysql qui te faudra.
Donns plutôt alors la structure de ta base de données et je te donnerai la requête php/mysql qui te faudra.
cha7ri
Messages postés
205
Date d'inscription
samedi 15 mars 2008
Statut
Membre
Dernière intervention
20 mars 2011
29
20 mai 2009 à 11:07
20 mai 2009 à 11:07
La structure de ma base est simple
une table adhérent(Nom ,Prenom, Date_naissance)
et merci........
une table adhérent(Nom ,Prenom, Date_naissance)
et merci........
cha7ri
Messages postés
205
Date d'inscription
samedi 15 mars 2008
Statut
Membre
Dernière intervention
20 mars 2011
29
20 mai 2009 à 15:17
20 mai 2009 à 15:17
up please
cha7ri
Messages postés
205
Date d'inscription
samedi 15 mars 2008
Statut
Membre
Dernière intervention
20 mars 2011
29
20 mai 2009 à 16:17
20 mai 2009 à 16:17
SVP
Mins
Messages postés
43
Date d'inscription
mardi 31 juillet 2001
Statut
Membre
Dernière intervention
28 mai 2009
9
20 mai 2009 à 19:01
20 mai 2009 à 19:01
Hum.
Méthode inverse alors, mais si tu as 15000 utilisateurs ça va pas le faire.
Mais je suis pas convaincu et j'ai le cerveau en bouillie après la journée de boulot donc j'ai difficile de faire mieux......
:$
Méthode inverse alors, mais si tu as 15000 utilisateurs ça va pas le faire.
$today=mktime(0,0,0); $limit=$today + (7 * 24 * 60 * 60); $query="SELECT * FROM adherents ORDER BY date_naissance"; $res=mysql_query($query); while ($row==mysql_fetch_assoc($res)) { $naiss=mktime(0,0,0,date("n", $row['date_naiss']), date('j', $row['date_naiss'])); if (($naiss >= today) AND ($naiss <= $limit)) { //Il a sa date dans les temps } }
Mais je suis pas convaincu et j'ai le cerveau en bouillie après la journée de boulot donc j'ai difficile de faire mieux......
:$
cha7ri
Messages postés
205
Date d'inscription
samedi 15 mars 2008
Statut
Membre
Dernière intervention
20 mars 2011
29
20 mai 2009 à 19:02
20 mai 2009 à 19:02
ok je t'attend
Mins
Messages postés
43
Date d'inscription
mardi 31 juillet 2001
Statut
Membre
Dernière intervention
28 mai 2009
9
21 mai 2009 à 10:04
21 mai 2009 à 10:04
Euh tu as essayé la méthode juste au dessus de ta réponse ? :)
cha7ri
Messages postés
205
Date d'inscription
samedi 15 mars 2008
Statut
Membre
Dernière intervention
20 mars 2011
29
21 mai 2009 à 13:04
21 mai 2009 à 13:04
je crois que ça marcheras pas......mais j'ai trouvé une solution ........
<?php
$req = " SELECT prenom, nom,DATE_FORMAT(Date_naissance, '%e %b.') AS datef,
(YEAR(CURRENT_DATE)-YEAR(Date_naissance)) - (RIGHT(CURRENT_DATE,5)<=RIGHT(Date_naissance,5)) +1 AS age,
TO_DAYS(CONCAT(LEFT(CURRENT_DATE,5), RIGHT(Date_naissance, 5))) - TO_DAYS(CURRENT_DATE) AS diff,
DATE_FORMAT(CONCAT('31-12-',YEAR(CURRENT_DATE)), '%j') AS nbj FROM adherents";
$res = mysql_query($req, $connection) or die(mysql_error());
$tab = mysql_fetch_assoc($res);
$Rows_tab = mysql_num_rows($res);
<?
et dans le BODY:
<table>
<?php
$n = 15; //nombre de jours de prévision
$i=0;
while($row = mysql_fetch_array($res)){
if($row['diff']<0) $row['diff'] = $row['diff'] + $row['nbj'];
if(($row['diff']<$n)&&($row['diff']>=0)){
$tab[$i][0] = $row['diff'];
$tab[$i]['nom'] = $row['prenom'];
$tab[$i]['age'] = $row['age'];
$tab[$i]['dans'] = $row['diff'];
$tab[$i]['date'] = $row['datef'];
?>
<tr>
<td> <? echo $row['prenom'] ." aura "; ?></td>
<td> <? echo $row['age']."ans dans"; ?></td>
<td> <? echo $row['diff']; ?></td>
<td> <? echo "jours (" .$row['datef'] .")" ;?></td>
</tr>
<?
}
$i++;
}
?>
</table>
merci d'avance tu m'as en moin donner par quoi débuterai ma recherche.......thinks
<?php
$req = " SELECT prenom, nom,DATE_FORMAT(Date_naissance, '%e %b.') AS datef,
(YEAR(CURRENT_DATE)-YEAR(Date_naissance)) - (RIGHT(CURRENT_DATE,5)<=RIGHT(Date_naissance,5)) +1 AS age,
TO_DAYS(CONCAT(LEFT(CURRENT_DATE,5), RIGHT(Date_naissance, 5))) - TO_DAYS(CURRENT_DATE) AS diff,
DATE_FORMAT(CONCAT('31-12-',YEAR(CURRENT_DATE)), '%j') AS nbj FROM adherents";
$res = mysql_query($req, $connection) or die(mysql_error());
$tab = mysql_fetch_assoc($res);
$Rows_tab = mysql_num_rows($res);
<?
et dans le BODY:
<table>
<?php
$n = 15; //nombre de jours de prévision
$i=0;
while($row = mysql_fetch_array($res)){
if($row['diff']<0) $row['diff'] = $row['diff'] + $row['nbj'];
if(($row['diff']<$n)&&($row['diff']>=0)){
$tab[$i][0] = $row['diff'];
$tab[$i]['nom'] = $row['prenom'];
$tab[$i]['age'] = $row['age'];
$tab[$i]['dans'] = $row['diff'];
$tab[$i]['date'] = $row['datef'];
?>
<tr>
<td> <? echo $row['prenom'] ." aura "; ?></td>
<td> <? echo $row['age']."ans dans"; ?></td>
<td> <? echo $row['diff']; ?></td>
<td> <? echo "jours (" .$row['datef'] .")" ;?></td>
</tr>
<?
}
$i++;
}
?>
</table>
merci d'avance tu m'as en moin donner par quoi débuterai ma recherche.......thinks