Date en php

Fermé
Lynne - 15 juil. 2004 à 22:29
 RaSim - 23 mai 2008 à 10:05
Bonjour,
j'ai un formulaire dans lequel certaines personnes entre leur date de naissance !
je souhaiterai savoir comment faire pour pour connaitre l'age de la personne a partir de sa date de naissance pour le moment dans ma base de donnée (MYSQL) j'ai pas mis de type particulier mais je suppoz que se sera de type date...!!??
en fait je dois a partir de la date de naissance savoir si la personne a moins de 18ans ou pas...
si elle a moins de 18ans lui afficher qq'chose du type
echo "vs avez moins de 18ans";
sinon
echo "vs avez plus de 18ans";
Lynne
A voir également:

8 réponses

Allez Hop!!
function dateValide(dateJ, dateM, dateA, texte){
        if((dateJ.value == 'nc') || (dateM.value == 'nc') || (dateA.value == 'nc')){
                // On est dans le cas ou on ne veut pas mettre de date
                var confirmation = confirm("Votre date "+texte+" n'etant pas remplie totalement,\nelle ne sera donc pas enregistrée.\nContinuer?");
                if(confirmation){
                        return true;
                }else{
                        return false;
                }
        }else{
                // Ici, tous les champs de la date sont remplis, on vérifie sa validité.
                if((dateA.value<1900) || (dateA.value>2100) || isNaN(dateA.value)){
                        alert("L'année "+texte+" indiquée n'est pas valide.");
                        return false;
                }else{
                        // Vérification de l'existence de la date (30 février...)
                        // De toute facon, Janvier (01), Mars (03), Mai (05), Juillet (07), Août (08), Octobre (10) et Décembre(12)
                        // sont valides (31 jours cahque année).
                        if((dateM.value == 1) || (dateM.value == 3) || (dateM.value == 5) ||
                        (dateM.value == 7) || (dateM.value == 8) || (dateM.value == 10) ||
                        (dateM.value == 12)){
                                return true;
                        }
                        // On vérifie Avril (04), Juin (06), Septembre (09) et Novembre (11) qui ont toujours 30 jours
                        if((dateM.value == 4) || (dateM.value == 6) || (dateM.value == 9) || 
                        (dateM.value == 11)){
                                if(dateJ.value > 30){
                                        alert("La date "+texte+" indiquée n'est pas valide : ce mois ne compte pas 31 jours.");
                                        return false;
                                }else{
                                        return true;
                                }
                        }

                        // Année bissextile (donc a un 29 février) si multiple de 4 et pas de 100, ou de 400
                        if((((dateA.value % 4) == 0) && !((dateA.value % 100) == 0)) || ((dateA.value % 400) == 0)){
                                // L'année indiquée est bissextile
                                if((dateM.value == 2) && (dateJ.value > 29)){
                                        alert("La date "+texte+" indiquée n'est pas valide : Février "+dateA.value+" compte 29 jours.");
                                        return false;
                                }else{
                                        return true;
                                }
                        }else{
                                // L'année indiquée n'est pas bissextile
                                if((dateM.value == 2) && (dateJ.value > 28)){
                                        alert("La date "+texte+" indiquée n'est pas valide : Février "+dateA.value+" compte 28 jours.");
                                        return false;
                                }else{
                                        return true;
                                }
                        }
                }
        }
        return false;
}


Y'a des options inutiles, mais à toi d'adapter. 
Et n'oublie pas de mettre <option value=1>Janvier</option> et ainsi de suite. 
A+ 

Trouvé je ne sais où et jamais testé.
Merci à son auteur.
3
Merci beaucoup ric...
mais je veux qu'il l'entre sous la forme jj/mm/aaaa ==> ( 12/06/2004)
mais je vais essayer de me servir de ce que tu m'a donné ki a l'air très bien j'esperes pouvoir l'adapter pour en faire e que j'veux :-)
merci encore
Lynne
0
grofwa Messages postés 440 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 21 juillet 2006 479
15 juil. 2004 à 22:35
Salut,

Tu peux utiliser la fonction DATEDIFF(expr,expr2) qui te donne le nombre de jours entre deux dates

Michael.

Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]
0
DATEDIFF(expr,expr2)
expr ==> c'est la date de naissance
et expr2 ==> est la date actuel je suppose?
mais j'aimerais savoir si dans ma base de donné tt les champs doivent etre définie en, type DATE et je dois imposé un façon de tapé la date au utilisateur genre
xx/xx/xxxx
xxxx/xx/xx etc.....?
Merci de m'avoir répondu
Lynne
0
grofwa Messages postés 440 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 21 juillet 2006 479
16 juil. 2004 à 13:53
La manière dont tu enregistres les données dans ta base dépendant principalement du langage de programmation que tu utilises. Mais c'est clair qu'il faut enregistrer en type DATE.
DATEDIFF te retourne le nombre de jours entre les deux dates, peu importe l'ordre dans lequel tu mets les dates, tu n'a qu'à prendre la valeur absolue.

m.

Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]
0
Donc en clair moi ki utilise un formalaire PHP avec une base de donnée MySQL je devrais enregistrer mes dates sous kel format??
après qq recherche j'ai vue que MySQL ne prennais pas en charge le format FR ==> jj/mm/AAAA
ça a un rapport?
Lynne
0
grofwa Messages postés 440 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 21 juillet 2006 479
16 juil. 2004 à 14:07
Pour info, par défaut, les dates en PHP sont formattées YYYY-MM-DD.

Ne vous souciez pas de n'être pas remarqué ; cherchez 
plutôt à faire quelque chose de remarquable [Confucius]
0
mouè...ok!!!
Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour
--> grofwa
YYYY-MM-DD est le format de date de MySql, mais en PHP je dirai que la date est exprimée en millisecondes.
0
oula,
euh...c gentil de me compliké le tout toi lol
se serais bien si vous avez un exple de script qui envoie une date dans un base de donnée ou ki traite une date dans un formulaire PHP si qq'1 en avait se serais cool
en tt cas je vous remercie
Lynne
0
Prenons le problème à l'entrée.
Dans ton formulaire, les gens peuvent saisir n'importe quoi comme date de naissance (par exemple 37 février 2012).
Tu dois donc vérifier la validité de la date saisie.
Une fois cela fait, ce devrait être un jeu d'enfant de la mettre sous la forme yyyy-mm-dd avant de l'enregistrer dans ta base.
Désolé de te compliquer la vie.

Un exemple de code
<?php
$mois=6;
$date=19;
$annee=2004;
if( checkdate($mois,$date,$annee))
	{
	echo "la date est bonne<br>\n";
	$date_mysql="$annee-$mois-$date"; // je crois même que MySql rajoute des zéros si nécessaire sinon tu le fais toi-même
	echo "$date_mysql<br>\n";
	}
else
	{
	echo "la date est fausse Recommencez la saisie<br>\n";
	}
?>

Tu peux bien sûr valider la date en javascript.
0
En javascript tu as un format de date qui n'a pas besoin d'être le même qu'en MySql.
Et pour calculer l'âge utilise les fonctions de MySql.
0
comment calculer l'age à partir de la date de naissance et la date actuel en PHP/Mysql?
C'est urgent!!!!!
-1