begin process at 2012 02 15 23:54:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > LISTE DES ANNIVERSAIRES POUR LES N PROCHAINS JOURS, DANS L'ORDRE D'ARRIVEES (PHP+MYSQL)

LISTE DES ANNIVERSAIRES POUR LES N PROCHAINS JOURS, DANS L'ORDRE D'ARRIVEES (PHP+MYSQL)


 Information sur la source

Note :
8 / 10 - par 4 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date / Heure Classé sous :anniversaire, liste Niveau :Débutant Date de création :08/11/2004 Date de mise à jour :11/12/2006 15:27:30 Vu :9 081

Auteur : antoine129

Ecrire un message privé
Site perso
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Un bon exemple vaut mieux qu'un long discours (ici N=50 et nous sommes le 8/11/85) :
Le script affichera :

Emmanuelle aura 23 ans dans 10 jours (le 18 Nov.)
Fanny aura 16 ans dans 13 jours (le 21 Nov.)
Harold aura 14 ans dans 21 jours (le 29 Nov.)
Elisa aura 22 ans dans 29 jours (le 7 Dec.)
Arnaud aura 8 ans dans 32 jours (le 10 Dec.)
Agnès aura 48 ans dans 34 jours (le 12 Dec.)
Romain aura 21 ans dans 46 jours (le 5 Jan.)
Jean-Marc aura 43 ans dans 47 jours (le 6 Jan.)

La table doit contenir un/des champ nom/prénom et un champ date de naissance

Source

  • /* Script by mOut - http://mout.fr/
  • $CONFIG['hostname'] = "localhost"; //mettez les paramètres de votre base
  • $CONFIG['database'] = "nomdemabase"; //la meme chose que username pour free
  • $CONFIG['username'] = "monlogin";
  • $CONFIG['password'] = "monpassword";
  • $CONFIG['table'] = "matable";
  • $n = 50; //nombre de jours de prévision
  • $sql = mysql_connect($CONFIG['hostname'], $CONFIG['username'], $CONFIG['password']) or die(mysql_error());
  • mysql_select_db($CONFIG['database'], $sql);
  • $result = mysql_query("SELECT
  • prenom,
  • nom,
  • DATE_FORMAT(date, '%e %b.') AS datef,
  • (YEAR(CURRENT_DATE)-YEAR(date)) - (RIGHT(CURRENT_DATE,5)<=RIGHT(date,5)) +1 AS age,
  • TO_DAYS(CONCAT(LEFT(CURRENT_DATE,5), RIGHT(date, 5))) - TO_DAYS(CURRENT_DATE) AS diff,
  • DATE_FORMAT(CONCAT('31-12-',YEAR(CURRENT_DATE)), '%j') AS nbj
  • FROM ".$CONFIG['table']) or die(mysql_error());
  • $i=0;
  • while($row = mysql_fetch_array($result)){
  • if($row['diff']<0) $row['diff'] = $row['diff'] + $row['nbj'];
  • if($row['diff']<$n){
  • $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'];
  • }
  • $i++;
  • }
  • //tri sur $tab[][0] :
  • sort($tab);
  • //tout est proprement rangé dans $tab maintenant
  • //formatage à votre guise (ex: si 0 jours mettre en rouge :))) :
  • foreach($tab as $ligne) echo "<b>".$ligne['nom']."</b> aura ".$ligne['age']." ans dans ".$ligne['dans']." jours (le <b>".$ligne['date']."</b>)<br />";
/* Script by mOut - http://mout.fr/

$CONFIG['hostname'] = "localhost";  //mettez les paramètres de votre base
$CONFIG['database'] = "nomdemabase";  //la meme chose que username pour free
$CONFIG['username'] = "monlogin";
$CONFIG['password'] = "monpassword";
$CONFIG['table'] = "matable";
$n = 50; //nombre de jours de prévision


$sql = mysql_connect($CONFIG['hostname'], $CONFIG['username'], $CONFIG['password']) or die(mysql_error());
mysql_select_db($CONFIG['database'], $sql);
$result = mysql_query("SELECT
   prenom, 
   nom, 
   DATE_FORMAT(date, '%e %b.') AS datef, 
   (YEAR(CURRENT_DATE)-YEAR(date)) - (RIGHT(CURRENT_DATE,5)<=RIGHT(date,5)) +1 AS age, 
   TO_DAYS(CONCAT(LEFT(CURRENT_DATE,5), RIGHT(date, 5))) - TO_DAYS(CURRENT_DATE) AS diff, 
   DATE_FORMAT(CONCAT('31-12-',YEAR(CURRENT_DATE)), '%j') AS nbj

FROM ".$CONFIG['table']) or die(mysql_error());

$i=0;
while($row = mysql_fetch_array($result)){
	if($row['diff']<0) $row['diff'] = $row['diff'] + $row['nbj'];
	if($row['diff']<$n){
		$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'];
	}
	$i++;
}
//tri sur $tab[][0] :
sort($tab); 

//tout est proprement rangé dans $tab maintenant

//formatage à votre guise (ex: si 0 jours mettre en rouge :))) :
foreach($tab as $ligne) echo "<b>".$ligne['nom']."</b> aura ".$ligne['age']." ans dans ".$ligne['dans']." jours (le <b>".$ligne['date']."</b>)<br />";

 Conclusion

- Ici je considère qu'il y a un champ "prenom", un champ "nom" et un champ "date" de type DATE, mais vous pouvez adapter le code a votre guise...

- 'nbj' renvoie 365 ou 366 selon l'année

- vous pouvez changer le format dans DATE_FORMAT() (cf. www.mysql.com)



 Historique

08 novembre 2004 14:31:20 :
Niveau initié -> expert
08 novembre 2004 18:32:52 :
expert -> initié (LOL) catégorie -> date/heure
11 décembre 2006 15:27:31 :
antispam

 Sources du même auteur

CLASSE MYSQL SIMPLE (ABSTRACTION DES REQUÊTES SQL)
Source avec Zip MINI LISTE GÉNÉRIQUE AFFICHANT UNE TABLE MYSQL ET PERMETTANT...
Source avec Zip MINI LISTE DE COURSES SIMPLE MAIS EFICACE EN UN SEUL SCRIPT ...
MINI PARSER DE LOG QUAKE 3 (BASEQ3/GAMES.LOG) : MAP ET SCORE...
Source avec Zip Source avec une capture BASE DE DONNÉES DE FICHIERS : LISTAGE ET AJOUT MYSQL, ET REC...

 Sources de la même categorie

Source avec une capture AGENDA GRAPHIQUE SIMPLE (DÉBUTANT) À INTÉGRER par NicomakM
CALCUL DU NOMBRE DE JOURS CONTENUS DANS L'INTERSECTION DE DE... par curphey
CALENDRIER EN 70 LIGNES par tchconst
Source avec Zip CALENDRIER par gabay
CALENDRIER SIMPLE par manuche

 Sources en rapport avec celle ci

DIFFÉRENCE ENTRE DEUX DATE EN JOURS (LISTE RÉCUPÉRÉE DANS UN... par DevilTN
SEARCH QUERY COMPOSER par Centauriel
Source avec Zip Source avec une capture RECHERCHE ET LISTE par liptibilly
Source avec Zip LISTER LES TERMES RECHERCHÉS DANS GOOGLE OU YAHOO POUR ARRIV... par inc002
GÉNÉRATEUR DE LISTE DÉROULANTE par caviar

Commentaires et avis

Commentaire de ehmarc le 08/11/2004 10:07:14

salut

bonne utilisation des dates sous mysql

seul petit reproche dans ta requete ca serait pas plus simple et plus rapide de mettre une clause where ca eviterait de faire du traitement pour certain anniversaire dans le cas d'une grosse base (ca evite de tout parcourir) ce qui optimiserait le code ca evite
if($row['diff']<$n){} cette condition

mais pour moi un code comme ca c plus intermediaire que initié

++

Commentaire de antoine129 le 08/11/2004 14:29:27

oui mais mon problème était pour trier par délai, car au départ j'avais fait un where mais le tri était impossible dans ce cas précis (ou trop compliqué pour moi :P)
Donc j'ai décomposé en un tableau :)
Mais c'est vrai que ça manque d'optimisation
Et pour le niveau tu as raison je vais changer ça.

Commentaire de ehmarc le 08/11/2004 18:18:37

C surement pas le niveau expert que je voulai dire plutot debutant+ (donc initié)

ton code ne présente qu'un simple affichage de donnée et une belle requete (il est vrai tas deja du plancher dessus un peu) avec une utilisatin des fonctions dates de mysql qui pourrait etre optimisée mais bon...

En fait sur le premier message je pensait que initié c'étè le niveau expert (c donc moi qui ai fait une erreur)
désolé...

Commentaire de gleyne le 26/12/2004 16:09:46

Bonjour,
j'ai testé ce programme et j'ai des résultats étonnants
voici le début de ma liste
matahali aura 23 ans dans -5 jours (le 2 Jan.)
eloise aura 29 ans dans -3 jours (le 4 Jan.)
sheeryas aura 24 ans dans -3 jours (le 4 Jan.)
doriane aura 20 ans dans -2 jours (le 5 Jan.)
lili aura 20 ans dans -1 jours (le 6 Jan.)
caroline aura 22 ans dans 0 jours (le 7 Jan.)
irielle aura 20 ans dans 0 jours (le 26 Dec.)
pamela aura 28 ans dans 0 jours (le 26 Dec.)
eva aura 20 ans dans 1 jours (le 27 Dec.)
monia aura 34 ans dans 1 jours (le 27 Dec.)
pauline aura 17 ans dans 1 jours (le 8 Jan.)
ghania aura 25 ans dans 2 jours (le 28 Dec.)
clara aura 18 ans dans 3 jours (le 10 Jan.)
flora aura 18 ans dans 3 jours (le 29 Dec.)
geraldine aura 24 ans dans 3 jours (le 10 Jan.)
henda aura 21 ans dans 4 jours (le 30 Dec.)
nadia aura 30 ans dans 4 jours (le 11 Jan.)
solange aura 19 ans dans 4 jours (le 30 Dec.)
alia aura 20 ans dans 5 jours (le 31 Dec.)
christine aura 22 ans dans 5 jours (le 12 Jan.)
kalliopi aura 30 ans dans 5 jours (le 12 Jan.)

y a t'il une modif à faire
merci
cordialement
gleyne@free.fr

Commentaire de gleyne le 26/12/2004 17:01:34

dans votre exemple, il n'y a pas 47 jours entre le 8/11/85 et le 6/01/86

Commentaire de katsuhito le 09/10/2005 00:24:01

En réponse à GLEYNE. Pour exclure les dates expirées, tu peux effectuer la manipulation suivante :

modifier la ligne 26 :
    if($row['diff']<$n){

par :
    if(($row['diff']<$n)&&($row['diff']>=0)){

Si tu souhaites malgré tout conserver les dates expirées et mieux organiser le tout, il faut adapter la ligne 41 en effectuant des tests sur la valeur $ligne['dans'], du type :

if($ligne['dans']=0) {
echo "<b>".$ligne['nom']."</b> a ".$ligne['age']." ans aujourd'hui (le <b>".$ligne['date']."</b>)<br />";
}

Commentaire de doublemetre le 29/07/2007 00:15:25

Mais comment exclure les membres qui n'on pas entré de date de naissance ?
J'aimerais afficher seulement les anniversaires.

Commentaire de negfreddy le 24/07/2008 10:03:13

j'ai trouver sa si tu veux si , sa peut t'aidai regarde

<?php
$date=date('m-d');
$date_match="%$date";
$sql_annif=mysql_query("SELECT pseudo, date_naiss, genre_mb FROM membre WHERE genre_mb NOT LIKE 'groupe' AND date_naiss LIKE '$date_match' ORDER BY date_naiss DESC");
while ($annif = mysql_fetch_row($sql_annif)) {
$pseudo=$annif[0];
$date=$annif[1];
list($annee, $mois, $jour) = explode('-', $date);
$today['mois'] = date('n');
$today['jour'] = date('j');
$today['annee'] = date('Y');
$annees = $today['annee'] - $annee;
  if ($today['mois'] <= $mois) {
    if ($mois == $today['mois']) {
      if ($jour > $today['jour']) {
      $annees--;
      }
    } else {
  $annees--;
  }
}
list($annee,$mois,$jour) = explode('-',$date);
$ddn = "$jour/$mois/$annee";
$genre_mb=$annif[2];
  if ($genre_mb == 'femme') {
  $e="e";
  } else {
  $e="";
  }
  echo "\t<tr>\n
  \t\t<td><b>$pseudo</b></td>
  \t\t<td align=\"right\">né$e le </td>
  \t\t<td>$ddn&nbsp;&nbsp;($annees ans)</td>
  \t</tr>\n";
}
mysql_close($connect); ?>
</table>

Commentaire de GillesWebmaster le 02/08/2008 21:53:02 10/10

Si c'est pas beau la vie!
10/10

Commentaire de cha7ri le 19/05/2009 18:13:09 10/10

merci,tu mérite mieux mais je n'ai trouvé que 10 au maximum

Commentaire de cha7ri le 20/05/2009 12:39:33

et aussi 10/10 pour negfreddy

mais  ce dernier script ne donne juste ceux qui vont fêter l'anniversaire aujourd'hui......

j'aimerai bien être averti avant ,,, c'est à dire j'aimerai bien avoir une liste des users qui vont fêter l'anniversaire cette semaine.....

merci ;)

Commentaire de allamah le 10/04/2010 05:19:15

Bonjour, Je suis un peu nouveau en php et j'ai voulu utiliser cette source. A l'exécution j'ai cette erreur qui s'affiche. Merci de m'indiquer quoi faire."Warning: Invalid argument supplied for foreach() in D:\xampp\htdocs\RTC_Riviera\site\accueil.php on line 101"
la ligne en questio : " foreach($tab as $ligne) echo "<b>".$ligne['nom']."</b> aura ".$ligne['age']." ans dans ".$ligne['dans']." jours (le <b>".$ligne['date']."</b>)<br />";
"

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

­­±Joyeux Anniversaire Nix­­± [ par k@se ] Bah simplement pour te souhaité un joyeux Anniversaire..Merci de proposé tous ces outils aux dévelloppeurs ...k@se <img src=/imgs2/smile_big.gif bord Zone de liste [ par Joez ] voila j'ai une table MysqlNumNomPrenomcomment remplir une zone de liste sur une page php ?Cette liste doit contenir le nom et le prenom sur la meme li liste deroulante liées entre elle [ par jodenki ] J'aimerais lier deux liste déroulantes entre elle :C'est à dire que quand je selectionne un element dans la première, la deuxième soit automatiquement Liste déroulante lié a une base MySQL [ par pi0up51 ] Je sais faire ça en asp mais pas en php, ça doit pas être bien compliqué mais si qqn peut m'aider ;)@tte et bonn' prog'pi0up51http://www.progotop.ht.s zone de liste dynamique [ par pheno ] est ce que qqun sait comment on fait pour mettre dans une zone de liste le contenu d un champ d une base de donnee mysql ????ce que j ai fait &lt;sel liste deroulante liée [ par pheno ] bonjour comment est ce k on peut faire pour lier 2 zone entre elles ????Merci d avanceChevalier Pheno Starboard, membre de la Freeman-Corp prob avec des listes deroulantes [ par toto99 ] voila mon prob est le suivante:-------------------------------------------j'ai une premiere liste deroulante qui ce remplit directement par raport a m boucle [ par toto99 ] voila je recupe des dates dans une liste deroulante suvant un choix qui ce trouve dans une autre liste deroulante, tous les deux sont alimenter par un J'ai du mal j'ai besoin d'aide [ par satanik_mike ] Bonjour, je viens vous demander de l'aide car je bloque sur un truc qui paraît bête mais qui me fait c..... En fait mon problème se pose sur une page Boite à liste conditionnée par une autre boite [ par olive59 ] Source en PHP avec base MySqlJ'alimente une boite à liste avec une base MySQL. Jusque là, tout va bien! (Par un SELECT * FROM ...)J'aimerais pouvoir a


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,246 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales