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

PHP & Base de données Discussion :

Calcul nb jours entre 2 dates


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut Calcul nb jours entre 2 dates
    Bonjour,

    Voici un sujet ou l'on trouve beaucoup de réponses sur le net. J'ai cherché et essayé de le mettre en place sur mon site, mais cela ne marche pas correctement.

    Je vous explique, j'ai mis ce code dans mon header.php , qui est intégré dans toutes mes pages via un require:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ///////////////////////////// 
    // Fonction calcul jours entre date
    ///////////////////////////// 
    function NbJours($debut, $fin) {
     
      $tDeb = explode("-", $debut);
      $tFin = explode("-", $fin);
     
      $diff = mktime(0, 0, 0, $tFin[1], $tFin[2], $tFin[0]) - 
              mktime(0, 0, 0, $tDeb[1], $tDeb[2], $tDeb[0]);
     
      return(($diff / 86400)+1);
     
    }
    Ensuite j'ai mis ce code, pour calculer le nombre de jours entre mes 2 dates :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $query = "SELECT DateCandidature from MM_Candidature ORDER BY NumCandidature DESC LIMIT 1";
    $result = mysql_query($query) or die (mysql_error());
     
    $resultat=mysql_fetch_row($result);
     
    $datefr=changedateusfr($resultat[0]);
     
    $date2 = date("j-m-Y");
     
    $Nombres_jours =  NbJours($datefr, $date2);
    echo $Nombres_jours;
    dans mon exemple, ci dessus, $datefr = 2010-02-25, et $date2 et la date de jour , le résultat est 1096 jours. bizarre ?

    P.S. Je précise que j'ai des fonctions de conversions de dates sur mon site :

    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
    ///////////////////////////// 
    // version 0.10 transforme une date us aaaa-mm-jj en date fr jj-mm-aaaa 
    //et vice-versa 
    ///////////////////////////// 
    function changedateusfr($dateus) 
    { 
    $datefr=$dateus{8}.$dateus{9}."-".$dateus{5}.$dateus{6}."-".$dateus{0}.$dateus{1}.$dateus{2}.$dateus{3}; 
    return $datefr; 
    } 
     
    function changedatefrus($datefr) 
    { 
    $dateus=$datefr{6}.$datefr{7}.$datefr{8}.$datefr{9}."-".$datefr{3}.$datefr{4}."-".$datefr{0}.$datefr{1}; 
    return $dateus; 
    }
    Est-ce que cela poserai problème ? J'ai déjà essayé de bidouiller, d'inverser les formats, mais je ne trouve pas.

    Par contre si je mets dans ma fonction de calcul d'écart, les dates manuellement au lieu de mettre mes variables, cela fonctionne parfaitement.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    En regardant de plus prés, est-ce que cela ne viendrai d'une erreur de calcul danss la fonction ?

    Puisque pour un écart de 3 jours, il me met 1096 jours
    Et pour un écart de 6 jours, il me met 2192 jours

    Un petite division, et on obtient 365.3333, soit 1 année...

  3. #3
    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
    Par défaut
    La vraie bonne solution serait d'utiliser la fonction mysql qui le fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "SELECT DATE_DIFF(DateCandidature, CURDATE()) from MM_Candidature ORDER BY NumCandidature DESC LIMIT 1";
    Sinon pour ton code actuel, dans mktime() c'est le mois en premier.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Sinon pour ton code actuel, dans mktime() c'est le mois en premier.
    Merci pour ta réponse, mais dans mon code c'est bien : mois, jour, année.

    Et je ne savais pas que je pouvais directement utiliser la fonction dans ma requete !

  5. #5
    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
    Par défaut
    Non tu as mis le jour en dernier.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Non tu as mis le jour en dernier.
    Bon alors je n'ai pas tous compris.

    Peux-tu m'expliquer ?

Discussions similaires

  1. [AC-2010] Calcul des jours entre deux dates
    Par maranatha-1975 dans le forum Access
    Réponses: 2
    Dernier message: 14/01/2014, 13h53
  2. [Date] Calcul de jours entre 2 dates
    Par Judgelolo dans le forum Langage
    Réponses: 10
    Dernier message: 10/07/2012, 10h45
  3. [AC-2003] Calcul nbr jour entre plusieurs dates
    Par Francua dans le forum VBA Access
    Réponses: 14
    Dernier message: 13/12/2009, 17h05
  4. Calculer les jours entre deux dates
    Par Daniela dans le forum SQL
    Réponses: 4
    Dernier message: 09/10/2008, 17h01
  5. [Date] calcul de jours entre deux dates
    Par skyangel dans le forum Général Java
    Réponses: 5
    Dernier message: 05/03/2008, 15h59

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