Aller au contenu

trouver l'age en php


bernard.hericher

Sujets conseillés

bonjour, j'administre un site pour anciens combattants et j'affiche dans des ifram des info en php à partir d'une base de données Mysql.

J'ai créé un tableau m'affichant les anniversaires des 30 prochains jours et je recherche comment faire pour d'une part remettre les dates d'anniversaire du format YY-MM-JJ en  JJ-MM-YY.

Et d'autre part j'ai créé une nouvelle colonne pour y afficher l'âge des adhérents mais je bloque sur ces deux points. Merci pour votre aide.

voici mon code :

// Requete sql sur la table "galette_adherents, colonne "ddn_adh"(qui veut dire date de naissance) pour vérification si anniversaire J+30
        $reponce = mysql_query("SELECT nom_adh,prenom_adh,ddn_adh            
        FROM galette_adherents
        WHERE DATE_FORMAT(ddn_adh,'%m%d%y')
        BETWEEN DATE_FORMAT(CURDATE(), '%m%d%y')
        AND DATE_FORMAT(DATE_ADD(CURDATE(),
        INTERVAL 30 DAY), '%m%d%y')
        ORDER BY ddn_adh DESC");
        
        // compte le nombre d'adherents dont l'anniveraire se situe dans les 30 prochains jours.
        $query = "SELECT count(id_adh)
        FROM galette_adherents
        WHERE ddn_adh IS NOT NULL";
    $result = mysql_query($query) or die (mysql_error());
    $resultat=mysql_fetch_row($result);    
    
        // Affiche l'entete du tableau avec les resultats
        ?>         
           <table>        
                <tr>      
                    <th>NOM</th>
                    <th>PRENOM</th>                           
                    <th>ANNIVERSAIRE</th>
                    <th>AGE</th
                    
                </tr>
            <?php            
                        
            //On affiche les lignes du tableau une à une à l'aide d'une boucle

            while($donnees = mysql_fetch_array($reponce))
            {
              ?>
              
                <tr>                                       
                    <td><?php echo $donnees['nom_adh'];?></td>
                    <td><?php echo $donnees['prenom_adh'];?></td>                                
                    <td><?php echo $donnees['ddn_adh'];?></td>                    
                </tr>
                <?

 

anniversaires.JPG

Lien vers le commentaire
Partager sur d’autres sites

Un grand merci pour cette réponse très détaillée.

j'ai essayé plusieurs solutions avec votre code mais je bloque.

j'ai un retour :

Warning : mysql_fetch_array() attend le paramètre 1 ressource, boolean dans C:\wamp\ www\php_site \test_anniversaire.php sur la ligne 40

quand au tableau

<tr>                                       
                    <td><?php echo $donnees['nom_adh'];?></td>
                    <td><?php echo $donnees['prenom_adh'];?></td>                                
                    <td><?php echo $donnees['ddn_adh'];?></td>                    
                </tr>

comment faire pour entrer les données, je dois vous avouer que je suis super novice en php.

j'arrive à construire mes fichiers grâce à vos conseils et à une pile de bouquins.

Dans mon petit village, aucune personne pour m'aider ou me former.

Merci

Lien vers le commentaire
Partager sur d’autres sites

oui avec plaisir,

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml

<head>
        <title> Base de donnees uncmimizan</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />    <style type="text/css">
    body,td,th {
	font-size: 15px;
	color: #000;	}
{
	font-size: 14px;	}
    </style>
    </head>
    <body>
        <?php
		
		//Connection avec la BDD.
        mysql_connect("localhost", " root", "")or die ('Erreur :'.mysql_error());
        mysql_select_db("uncmimiz_membres")or die ('Erreur :'.mysql_error());
				
		// Requete sql sur la table "galette_adherents, colonne "ddn_adh" pour vérification si anniversaire J+30
		

		$reponce = mysql_query("SELECT nom_adh,prenom_adh,ddn_adh			
        FROM galette_adherents
		WHERE DATE_FORMAT(ddn_adh,'%m%d%y')
		BETWEEN DATE_FORMAT(CURDATE(), '%m%d%y')
		AND DATE_FORMAT(DATE_ADD(CURDATE(),
		INTERVAL 30 DAY), '%m%d%y')
		ORDER BY ddn_adh DESC");
		
		// compte le nombre d'adherents dont l'anniveraire se situe dans les 30 prochains jours.
		$query = "SELECT count(id_adh)
		FROM galette_adherents
		WHERE ddn_adh IS NOT NULL"; 
	$result = mysql_query($query) or die (mysql_error());
	$resultat=mysql_fetch_row($result);	
	
		// Affiche l'entete du tableau avec les resultats 
        ?>     	
           <table>		
                <tr>       
					<th>NOM</th>
                    <th>PRENOM</th>                   		
					<th>ANNIVERSAIRE</th>
					<th>AGE</th
					
                </tr>
            <?php			
						
			//On affiche les lignes du tableau une à une à l'aide d'une boucle
            while($donnees = mysql_fetch_array($reponce))
			{
              ?>
			  
                <tr>                   					
					<td><?php echo $donnees['nom_adh'];?></td>
                    <td><?php echo $donnees['prenom_adh'];?></td>                    			
					<td><?php echo $donnees['ddn_adh'];?></td>					
                </tr>
				<?
		?>			
<style type="text/css">
<table>
{
border-style:double;border-min-wigth 30%: 3px;border-color: yellow;background-color:yellow;
border-collapse: collapse;
min-width: 30%;
}
th
{
font-family: Arial;
border-style:double;
min-width: 30%;
padding: 5px;
background-color:yellow;
}
td 
{font-family: sans-serif;
border-style:double;
min-width: 30%;
margin:auto
text-decoration: none;  color: yellow;padding: 5px;text-align: left;background-color: blue;caption font-family: sans-serif;}
</style>,
<?php
}
		//fin de la boucle, le tableau contient toute la BDD
		//deconnection de mysql
mysql_close(); 
 ?>
 </table>
</body>
</html>

voilà, j'espère que ça va vous aider. Merci d'avance.

Bernard.

Lien vers le commentaire
Partager sur d’autres sites

Désolé, une petite erreur

voici votre code inséré dans le mien :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml

<head>
        <title> Base de donnees uncmimizan</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />    <style type="text/css">
    body,td,th {
	font-size: 15px;
	color: #000;	}
{
	font-size: 14px;	}
    </style>
    </head>
    <body>
        <?php
		
		//Connection avec la BDD.
        mysql_connect("localhost", "root", "")or die ('Erreur :'.mysql_error());
        mysql_select_db("uncmimiz_membres")or die ('Erreur :'.mysql_error());
				
		// Requete sql sur la table "galette_adherents, colonne "ddn_adh" pour vérification si anniversaire J+30

$reponce = mysql_query("SELECT nom_adh, prenom_adh, ddn_adh, DATE_FORMAT(ddn_adh, '%d-%m-%y') as formatedDate, FLOOR(DATEDIFF(CURDATE(), ddn_adh)/365) as age
FROM galette_adherents 
WHERE (DAY(ddn_adh) >= DAY(CURDATE()) AND MONTH(ddn_adh) = MONTH(CURDATE())) 
OR (DAY(ddn_adh) <= DAY(CURDATE()) AND MONTH(ddn_adh) = MONTH(CURDATE())+1");

// Affiche l'entete du tableau avec les resultats 
        ?>     	
           <table>		
                <tr>       
					<th>NOM</th>
                    <th>PRENOM</th>                   		
					<th>ANNIVERSAIRE</th>
					<th>AGE</th>
				</tr>
            <?php
//On affiche les lignes du tableau une à une à l'aide d'une boucle
            while($donnees = mysql_fetch_array($reponce))
			{
              ?>
			  
                <tr>                   					
					<td><?php echo $donnees['nom_adh'];?></td>
                    <td><?php echo $donnees['prenom_adh'];?></td>                    			
					<td><?php echo $donnees['ddn_adh'];?></td>					
                </tr>
				<?
							
  		?>	
		<style type="text/css">
<table>
{
border-style:double;border-min-wigth 30%: 3px;border-color: yellow;background-color:yellow;
border-collapse: collapse;
min-width: 30%;
}
th
{
font-family: Arial;
border-style:double;
min-width: 30%;
padding: 5px;
background-color:yellow;
}
td 
{font-family: sans-serif;
border-style:double;
min-width: 30%;
margin:auto
text-decoration: none;  color: yellow;padding: 5px;text-align: left;background-color: blue;caption font-family: sans-serif;}
</style>,
<?php
}
		//fin de la boucle, le tableau contient toute la BDD
		//deconnection de mysql
mysql_close(); 
 ?>
 </table>
</body>
</html>

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour, après plusieurs tentatives, je n'ai toujours pas trouver la solution.

voici le code que j'ai modifié et la capture d'écran de ce que j'aimerai avoir mais dans la colonne "age",

c'est la date d'aujourd'hui qui s'affiche. Toujours pas trouvé non plus comment affiché la date de naissance au format  "jj-mm-AAAA.

Merci pour l'aide.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml

<head>
        <title> Base de donnees uncmimizan</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />    <style type="text/css">
    body,td,th {
	font-size: 15px;
	color: #000;
	font-size: 14px;	}
    </style>
    </head>
    <body>
        <?php
		
		//Connection avec la BDD.
		
        mysql_connect("localhost", "", "")or die ('Erreur :'.mysql_error());
        mysql_select_db("")or die ('Erreur :'.mysql_error());
				
		//Calcul pour afficher l'age
		
		
		$aujourdhui=strftime('%m%d%Y');
		$age=$aujourdhui-$donnees['ddn_adh'];
		
		// Requete sql sur la table "galette_adherents, colonne "ddn_adh" pour vérification si anniversaire J+30
		
		$reponce = mysql_query("SELECT nom_adh,prenom_adh,ddn_adh,id_adh		
        FROM galette_adherents
		WHERE DATE_FORMAT(ddn_adh,'%m%d%y')		
		BETWEEN DATE_FORMAT(CURDATE(),'%m%d%y')
		AND DATE_FORMAT(DATE_ADD(CURDATE(),
		INTERVAL 30 DAY), '%m%d%y')		
		ORDER BY ddn_adh ");
		
		// compte le nombre d'adherents dont l'anniveraire se situe dans les 30 prochains jours.
		
		$query = "SELECT count(id_adh)
		FROM galette_adherents
		WHERE ddn_adh IS NOT NULL "; 
	$result = mysql_query($query) or die (mysql_error());
	$resultat=mysql_fetch_row($result);	
	
		// Affiche l'entete du tableau avec les resultats 
        ?>     	
           <table>		
                <tr>       
					<th>NOM</th>
                    <th>PRENOM</th>                   		
					<th>ANNIVERSAIRE</th>
					<th>AGE</th
					
                </tr>
            <?php			
						
			//On affiche les lignes du tableau une à une à l'aide d'une boucle
            while($donnees = mysql_fetch_array($reponce))			
			{
              ?>
			  		  
                <tr>                   					
					<td><?php echo $donnees['nom_adh'];?></td>
                    <td><?php echo $donnees['prenom_adh'];?></td>                    			
					<td><?php echo $donnees['ddn_adh'];?></td>
					<td><?php echo $age;?></td>
                </tr>
				<?
				
		?>			
<style type="text/css">
<table>
{
border-style:double;border-min-wigth 30%: 3px;border-color: yellow;background-color:yellow;
border-collapse: collapse;
min-width: 30%;
}
th
{
font-family: Arial;
border-style:double;
min-width: 30%;
padding: 5px;
background-color:yellow;
}
td 
{font-family: sans-serif;
border-style:double;
min-width: 30%;
margin:auto
text-decoration: none;  color: yellow;padding: 5px;text-align: left;background-color: blue;caption font-family: sans-serif;}
</style>,
<?php
}
		//fin de la boucle, le tableau contient toute la BDD
		//deconnection de mysql
mysql_close(); 
 ?>
 </table>
</body>
</html>

 

ages.JPG

Lien vers le commentaire
Partager sur d’autres sites

C'est toujours votre ancien code, il n'y a aucun correctif comparé l'une des premières versions et ne contient aucune ligne de ma requête SQL ^^

Pensez à bien vérifier d'être à jour avant d'aller plus loin, ça règle souvent les problèmes ;)

Lien vers le commentaire
Partager sur d’autres sites

oui, je me suis emmêlé les pinceaux, désolé :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml
  <head>
      <title> Base de donnees uncmimizan</title>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />    
      <style type="text/css">
        body,td,th {
	    font-size: 15px;
	    color: #000;        
      </style>
  </head>
  <body>
  <?php
		//Connection avec la BDD.
    mysql_connect("localhost", "", "")or die ('Erreur :'.mysql_error());
    mysql_select_db("")or die ('Erreur :'.mysql_error());
    
    // Requete sql sur la table "galette_adherents, colonne "ddn_adh" pour vérification si anniversaire J+30
    $reponce = mysql_query("SELECT nom_adh, prenom_adh, ddn_adh 
	DATE_FORMAT(ddn_adh, '%d-%m-%y') as formatedDate, 
	FLOOR(DATEDIFF(CURDATE(), ddn_adh)/365) as age 
	FROM galette_adherents 
	WHERE (DAY(ddn_adh) >= DAY(CURDATE()) 
	AND MONTH(ddn_adh) = MONTH(CURDATE())) 
	OR (DAY(ddn_adh)<= DAY(CURDATE()) 
	AND MONTH(ddn_adh) = MONTH(CURDATE())+1)");
	
    // Affiche l'entete du tableau avec les resultats 
  ?>     	
<table>		
        <tr>       
		<th>NOM</th>
        <th>PRENOM</th>                   		
		<th>ANNIVERSAIRE</th>
		<th>AGE</th>
		</tr>
</table>
  <?php
	// dans la dernière ligne "echo" je ne vois pas ce que je peux insérer pour afficher l'âge.
    //On affiche les lignes du tableau une à une à l'aide d'une boucle
    while($donnees = mysql_fetch_array($reponce)) {
  ?>
  <table>
        <tr>                   					
        <td><?php echo $donnees['nom_adh'];?></td>
        <td><?php echo $donnees['prenom_adh'];?></td>                    			
		<td><?php echo $donnees['ddn_adh'];?></td>
		<td><?php echo $donnees[''];?></td> 
        </tr>
</table>		
  <?
    }	// Fermeture de la boucle ici, car précédement, la boucle se terminait après la balise style, ce qui ajoutait du style à chaque ligne affichée.
    mysql_close();
  ?>
    
    <style type="text/css">      
	  {
        border-style:double;border-min-wigth 30%: 3px;border-color: yellow;background-color:yellow;
        border-collapse: collapse;
        min-width: 30%;
      }
      th
	  {
        font-family: Arial;
        border-style:double;
        min-width: 30%;
        padding: 5px;
        background-color:yellow;
      }
      td
	  {
        font-family: sans-serif;
        border-style:double;
        min-width: 30%;
        margin:auto
        text-decoration: none;  color: yellow;padding: 5px;text-align: left;background-color: blue;caption font-family: sans-serif;
      }
    </style>	

 

Lien vers le commentaire
Partager sur d’autres sites

  • 1 year later...

Bonjour,

bonne année à tous.

Après plusieurs mois je reviens vers vous.

Toujours sur le calcul des âges. J'ai bien évoluer grâce à vous tous mais j'ai un problème.

Lorsque j'approche de la fin de l'année en cours, le fichier ne me donne plus d'information.

Sur la ligne  : INTERVAL 30 DAY), '%m%d%y'), je suis obligé de diminuer l’intervalle pour arriver à 1

et attendre le début de l'année suivante pour remettre l'intervalle à 30.

Comment puis-je faire pour qu'il n'y ai pas d'interruption au passage du 31 décembre au 1er janvier.

Je vous met en pièce-jointe le fichier php complet.

Merci

anniversaires.php

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

J'ai fusionné ton dernier message avec le post initial... sans cela il aurait été difficile de s'y retrouver.

 

Dan

 

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...