|
|
|
|
Répondre à psaikopat
|
Répondre à psaikopat
|
Bonjour
<?
/* --------------------------------------------------------------
FONCTION EstBissextile POUR SAVOIR SI L'ANNEE EST BISSEXTILE
-------------------------------------------------------------- */
function EstBissextile($annee) // RETOURNE 1 SI L'ANNEE EST BISSEXTILE
{
if($annee%4 == 0 AND $annee%100 != 0 OR $annee%400 == 0)
$bissextile = 1;
else
$bissextile = 0;
return $bissextile;
}
/* --------------------------------------------------------------
FONCTION PRINCIPALE (RETOUNE L'AGE)
-------------------------------------------------------------- */
function AgeJours($jour,$mois,$annee) // RETOURNE L'AGE (ans/mois et en jours) EN UTILISANT LE JOUR/MOIS/ANNEE DE LA DATE DE NAISSANCE
{
$age_en_jours = 0;
$annee_actuelle = date('Y');
$mois_actuel = date('m');
$jour_actuel = date('j');
$num_jour_actuel = date('z');
$nbr_annees = $annee_actuelle - $annee;
// On crée "timestamp_anniversaire" pour connaitre le numéro du jour de l'anniversaire
if(EstBissextile($annee))
{
$timestamp_anniversaire = mktime(0, 0, 0, $mois, $jour, 1996); // 1996 est bissextile
$nbr_jour_annee = 366;
}
else
{
$timestamp_anniversaire = mktime(0, 0, 0, $mois, $jour, 1997); // 1997 n'est pas bissextile
$nbr_jours_annee = 365;
}
$num_jour_anniv = date('z',$timestamp_anniversaire); // Numéro du jour de la naissance
if($mois > $mois_actuel) // On ne prend pas en compte l'année en cours
{
$nbr_annees--;
if($jour > $jour_actuel) // Un mois en moins
$nbr_mois = 12 - ($mois - $mois_actuel) - 1;
else
$nbr_mois = 12 - ($mois - $mois_actuel);
}
elseif($mois < $mois_actuel) // On prend en compte l'année actuelle
{
$nbr_mois = $mois_actuel - $mois;
if($jour > $jour_actuel) // Un mois en moins
$nbr_mois--;
}
elseif($mois == $mois_actuel) // On vérifie le jour du mois
{
if($jour > $jour_actuel) // On ne prend pas en compte l'année en cours
{
$nbr_annees--;
$nbr_mois = 11;
}
else
$nbr_mois = 0;
}
$age_en_jours += ($nbr_jours_annee - $num_jour_anniv + $num_jour_actuel)%$nbr_jours_annee;
for($i = 0 ; $i < $nbr_annees ; $i++)
{
$annee_i = $annee+$i;
if(EstBissextile($annee_i))
$age_en_jours += 366;
else
$age_en_jours += 365;
}
$age = $nbr_annees.' ans et '.$nbr_mois.' mois ('.$age_en_jours.' jours)';
return $age;
}
?>
2éme page: age.php <!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> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>calcule age</title> </head> <body> Saisissez Votre date de naissance: <form method="GET"> <select name="Jour" style="width: 56px"> <option value="0" selected="">Jour</option> <? for ( $i = 1; $i<=31 ; $i++){ echo '<option value="'.$i.'">'.$i.'</option>'; } ?> </select><select name="Mois" style="height: 23px"> <option value="0" selected="">Mois</option> <option value="1">Janvier</option> <option value="2">Février</option> <option value="3">Mars</option> <option value="4">Avril</option> <option value="5">Mai</option> <option value="6">Juin</option> <option value="7">Juillet</option> <option value="8">Août</option> <option value="9">Septembre</option> <option value="10">Octobre</option> <option value="11">Novembre</option> <option value="12">Décembre</option> </select><select name="Annee"> <option value="0" selected="" >Année</option> <? $annee = date("Y"); for ( $i = 1900; $i<=$annee; $i++){ echo '<option value="'.$i.'">'.$i.'</option>'; } ?> </select> <button name="calculer">Calculer</button></form> <? include 'functions.php'; if(isset($_GET['calculer'])){ $age = AgeJours($_GET['Jour'],$_GET['Mois'],$_GET['Annee']); echo 'Votre age est : '.$age; } ?> </body> </html> et si vous voulez afficher que l'age exemple Votre age est : 20 ans, dans le fichier funtions.php, changer $age = $nbr_annees.' ans et '.$nbr_mois.' mois ('.$age_en_jours.' jours)'; par
$age = $nbr_annees.' ans '; Cordialement |
Voici la partie de mon code source, comment j'obtiens l'age et comment je stock les variables dans la base de donnée MYSQL
<td style="height: 27px; width: 135px;">Date Naissance</td>
<td style="height: 27px"><select name="Jour" style="width: 56px">
<option value="0" selected="">Jour</option>
<?
for ( $i = 1; $i<=31 ; $i++){
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select> /<select name="Mois" style="height: 23px">
<option value="0" selected="">Mois</option>
<option value="1">Janvier</option>
<option value="2">Février</option>
<option value="3">Mars</option>
<option value="4">Avril</option>
<option value="5">Mai</option>
<option value="6">Juin</option>
<option value="7">Juillet</option>
<option value="8">Août</option>
<option value="9">Septembre</option>
<option value="10">Octobre</option>
<option value="11">Novembre</option>
<option value="12">Décembre</option>
</select> /<select name="Annee">
<option value="0" selected="" >Année</option>
<?
$annee = date("Y");
for ( $i = 1980; $i<=$annee; $i++){
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select></td>
et dans le calcule j'insere la fontion include '../includes/fonctions.php';qui contient la fonction ci-dessus de calcule d'age et par la suite je récupere en même temps les valeurs du combo box, et je les applique comme celà: $age = AgeJours($_POST['Jour'],$_POST['Mois'],$_POST['Annee']);et je stock la date de naissance dans la base de donnée comme celà $naisance = $_POST['Jour']."/".$_POST['Mois']."/".$_POST['Annee']; et si on a déjà des valeurs stocké dans la base de donnée, on fé commen ça
//des valeurs obtenus de la base de donnée
connexion;
$sql = "select `date` from `Membre` where `membre_id` = '5'"; // juste exemple
$result = mysql_query($sql)
while($row = mysql_fetch_array($result))
$DateNaissance = $row[0];//prendre le premier parametre de la requete sql, les parametre requete sql commence par 0,1,2..
//exemple:
$DateNaissance = "17-11-1985"; // date de mon naissance :d
$date = explode("-", $DateNaissance);
//on va avoir trois variable, par ce que la fonction explode return un tableau à ce qu'on a voulu limiter
echo $date[0]; // il nous affichera 17
echo $date[1]; // il nous affichera 11
echo $date[2]; // il nous affichera 1985
// ou bien
$Date($Jour,$Mois,$Annee) = explode("-", $DateNaissance);
echo $Jour; // il nous affichera 17
echo $Mois; // il nous affichera 11
echo $Annee; // il nous affichera 1985
//et on l'applique dans notre fonction comme ça
$age = AgeJours($date[0],$date[1],$date[2]);
//et là si on affiche $age
echo "Votre age est: ".$age." ans"; // Votre age est 21 ans
A retenir la fonction explode retourne un tableau de chaînes. Ce sont les sous-chaînes extraites de string, en utilisant le séparateur delimiter. Si limit est fourni, le tableau retourné aura un maximum de limit éléments, et le dernier élément du tableau contiendra le reste de la chaîne string. et autre limite de la fonction explode : $str = 'un|deux|trois|quatre';
// limite positive
print_r(explode('|', $str, 2));
// limite négative (depuis PHP 5.1)
print_r(explode('|', $str, -1));
et si on a ce genre de conrie $string = "";
$numbers = explode(",", $string);
echo $numbers; // va nous afficher que "" Enjoy, et si vous voulez autres choses, n'hésitez pas à poster ;) Dr.SoFtNaF |
S'cusez moi de vous embétez, mais y'en a qui ont pas dû lire le manuel PHP ;-)
$est_bissextile = date('L',mktime(0, 0, 0, 0, 0, 2000));
retourne true ou false. C'est pas bien compliqué, mais ca a l'inconvéniant de ne pas pouvoir se traduire en JS contrairement à la fonction de Dr.SoFtNaF, qui devient tout bêtement : function estBissextile(annee){
if(annee%4 == 0 && annee%100 != 0 || annee%400 == 0){
bissextile = true;
}else{
bissextile = false;
}
return bissextile;
}
Au passage, Dr.SoFtNaF est-ce qu'il n'est pas mieux d'utiliser les booléens plutôt que leurs valeures décimales (0,1) ? Je me pose la question car si tu as mis 0/1 c'est que tu dois avoir une raison (a moins que ca ne soit pour économiser 7 caractères ;-) ) |
Bonsoir encore une autre fois,
<?php
echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997)); // Jan-1-1998
echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997)); // Jan-1-1998
echo date("d-Y", mktime(0, 0, 0, 1, 1, 1998)); // 1-1998
echo date("Y", mktime(0, 0, 0, 1, 1, 98)); // 1998 : on peut la remplacer à la place de $annee;
?>
Donc pour moi, quand j'utilise les variables, et surtout au php, je cherche pas à compliqué les choses, j'utilise les O/1 c'est par ce qu'ils sont facile et compréhensible, et dans le Mr. PHP, on ne peut pas spécifier l'utilisation des varriables, comme je peux mettre $varriable = true ou false; $varriable = 1 ou 0; comm je peux mettre $varriable = NULL ou " "; je vais pas répondre comme l'utilsiation de certain variable soit en C/C++/C# ou Java pour dire ça prend de l'espace en mémoire, de 0/1 just 1 bit de 8 octets, mais on php c autre chose, le $ il s'occupe de la convertition de la valeur, donc j'ai utilisé 0/1 au hasard, et même tu peux utiliser true ou false, c'est la même chose ou même tu peux définir la variable sur $est_bissextile = "oui"; et tu testes sur oui ou non, if($est_bissextile == "oui")... en php on peut choisir ce qu'on veut, là où en veut, et quand on veut, ;) Dr.SoFtNaF |
Bonjour, j'ai vu 1 site internet qui affiche en tps réel des tas de données mondiales telles les naissances, les décès; il est possible de savoir en n'entrant que son age de l'obtenir en heures-min-sec. Il semblerait qu'il utilise 1 des formules dont vous parlez sur ce chat merci par avance...si vous connaissez ?!?
|
Bonjour,
|
Bonjouur!
|