IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Comparaison 2 dates 1948-2013 par timestamp


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 135
    Points : 69
    Points
    69
    Par défaut Comparaison 2 dates 1948-2013 par timestamp
    bonjour,

    je cherche à comparer deux dates par un timestamp, seulement, j'utilise la fonction mktime pour des dates de naissance, et la fonction me retourne une erreur sous EasyPHP alors que cela fonctionne correctement sous Wamp.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    $doublon=0;
    $message_doublon="";
     
    $timestamp_naissance = mktime(0, 0, 0, $mois_naissance, $jour_naissance, $annee_naissance);
     
    //verif des ages minimum avant tout traitement
    $age_minimum_inscription=$donnees_variables['age_minimum_inscription'];
    $annee_minimum_inscription=date("Y")-$age_minimum_inscription;//annee naissance minimum inscription
    $valeur_age_mini = mktime(0, 0, 0, date("m"), date("d"), $annee_minimum_inscription);//definit la date minimale
     
    //verif des ages maximum avant tout traitement
    $age_maximum_inscription=$donnees_variables['age_maximum_inscription'];
    $date_atteinte_age_maximum=$donnees_variables['date_atteinte_age_maximum'];//date de base calcul maximum inscription
    list($annee_maxi, $mois_maxi, $jour_maxi) = explode("-",$date_atteinte_age_maximum);
    $annee_maximum_inscription=$annee_maxi-$age_maximum_inscription;//annee naissance maximum inscription
    $valeur_age_maxi = mktime(0, 0, 0, $mois_maxi, $jour_maxi, $annee_maximum_inscription);//definit la date minimale
     
    //si la date de naissance est superieure a la date mini alors on refuse la candidature - - de 18 ans le jour J
    if($timestamp_naissance>$valeur_age_mini)
    {
    	//timestamp naissance doit etre plus grand que timestamp mini
    	$doublon=1;
    	$message_doublon="Nous vous remercions de votre intérêt pour ce poste, mais nous ne pouvons malheureusement pas donner une suite favorable à votre candidature."; 
    } 
    //si la date de naissance est inferieur a la date maxi alors on refuse la candidature - + de 65 ans a la date butoire
    elseif($timestamp_naissance<$valeur_age_maxi)
    {
    	$doublon=1; 
    	$message_doublon="Nous vous remercions de votre intérêt pour ce poste, mais nous ne pouvons malheureusement pas donner une suite favorable à votre candidature."; 
    }
    Quelle fonction puis-je utiliser pour comparer ces dates, je veux que les personnes de moins de 18 ou de plus de 65 ans à une date donnée ne puisse pas s'inscrire.

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    En une ligne en PHP5.3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $age = DateTime::createFromFormat('d/m/Y', $date_de_naissance)->diff(new DateTime('now'))->y;
    if ($age < 18 || $age > 65) {
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 135
    Points : 69
    Points
    69
    Par défaut
    Désolé, mais l'applicatif est encore sous EasyPHP 1.8 soit du PHP4.

    Par ailleurs, je chercher une différence entre 2 dates mais pas forcément à la date du jour.

    Empêcher les personnes qui auront 65 ans au 30/06/2013 de s'inscrire.

    Merci.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faudrait songer à ce mettre au gout du jour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $timestamp_date = strtotime("2013-06-30");
    $age = date("md", mktime(0,0,0,$mois_naissance, $jour_naissance, $annee_naissance)) > date("md", $timestamp_date) ? (date('Y', $timestamp_date) - $annee_naissance - 1) : (date('Y') - $annee_naissance);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 135
    Points : 69
    Points
    69
    Par défaut
    Au final, pour ceux que cela interesse, voici mon code :

    Avant 1970, je compare les dates dans leur format AAAAMMJJ pour voir qu'elle est la plus grande.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    $doublon=0;
    $message_doublon="";
     
    //teste les personnes superieures aux annees 70 - car le mktime ne marche pas avant 1970
    if($annee_naissance>1970)
    {	//verifie les moins de 18 ans
    	$timestamp_naissance = mktime(0, 0, 0, $mois_naissance, $jour_naissance, $annee_naissance);
     
    	//verif des ages minimum avant tout traitement
    	$age_minimum_inscription=$donnees_variables['age_minimum_inscription'];
    	$annee_minimum_inscription=date("Y")-$age_minimum_inscription;//annee naissance minimum inscription
    	$valeur_age_mini = mktime(0, 0, 0, date("m"), date("d"), $annee_minimum_inscription);//definit la date minimale
     
    	//si la date de naissance est superieure a la date mini alors on refuse la candidature - - de 18 ans le jour J
    	if($timestamp_naissance>$valeur_age_mini)
    	{
    		//timestamp naissance doit etre plus grand que timestamp mini
    		$doublon=1;
    		$message_doublon="Nous vous remercions de votre intérêt pour ce poste, mais nous ne pouvons malheureusement pas donner une suite favorable à votre candidature."; 
    	} 
     
    	//verif des ages maximum (plus de 65 ans ) avant tout traitement
    	$age_maximum_inscription=$donnees_variables['age_maximum_inscription'];
    	$date_atteinte_age_maximum=$donnees_variables['date_atteinte_age_maximum'];//date de base calcul maximum inscription
    	list($annee_maxi, $mois_maxi, $jour_maxi) = explode("-",$date_atteinte_age_maximum);	
     
    	$annee_maximum_inscription=$annee_maxi-$age_maximum_inscription;//annee naissance maximum inscription
    	$valeur_age_maxi = mktime(0, 0, 0, $mois_maxi, $jour_maxi, $annee_maximum_inscription);//definit la date minimale
     
    	//si la date de naissance est inferieur a la date maxi alors on refuse la candidature - + de 65 ans a la date butoire
    	if($timestamp_naissance<$valeur_age_maxi)
    	{
    		$doublon=1; 
    		$message_doublon="Nous vous remercions de votre intérêt pour ce poste, mais nous ne pouvons malheureusement pas donner une suite favorable à votre candidature."; 
    	} 	
    } else
    {
     
    	//verif des ages maximum (plus de 65 ans ) avant tout traitement - avec une annee de naissance inferieure a 1970
    	$age_maximum_inscription=$donnees_variables['age_maximum_inscription'];
    	$date_atteinte_age_maximum=$donnees_variables['date_atteinte_age_maximum'];//date de base calcul maximum inscription
    	list($annee_maxi, $mois_maxi, $jour_maxi) = explode("-",$date_atteinte_age_maximum);
     
    	$date_atteinte_age=$annee_maxi.$mois_maxi.$jour_maxi;
    	$anniversaire_candidat=($annee_naissance+$age_maximum_inscription).$mois_maxi.$jour_maxi;
     
    	//si la date de naissance est inferieur a la date maxi alors on refuse la candidature - + de 65 ans a la date butoire
    	if($anniversaire_candidat<$date_atteinte_age)
    	{
    		$doublon=1; 
    		$message_doublon="Nous vous remercions de votre intérêt pour ce poste, mais nous ne pouvons malheureusement pas donner une suite favorable à votre candidature.";
    	} 
     
    }

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je ne vois pas pourquoi tu t'obstines à écrire des tonnes la de code la ou on peut faire beaucoup moins.
    En particulier, dans ton code, tu repêtes de nombreuses portions.
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $age_minimum_inscription=$donnees_variables['age_minimum_inscription'];
    est écrit deux fois.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/03/2012, 17h53
  2. Comment remplacer la date d'un champ timestamp par une autre date ?
    Par clavier12AZQSWX dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/12/2011, 17h27
  3. [MySQL] comparaison de date timestamp
    Par imsse dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 24/02/2009, 15h14
  4. Réponses: 2
    Dernier message: 08/05/2008, 12h36
  5. Réponses: 5
    Dernier message: 09/10/2006, 09h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo