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 :

[Dates] Calculer différence en jours entre deux dates


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 13
    Points : 7
    Points
    7
    Par défaut [Dates] Calculer différence en jours entre deux dates
    bonjour a tous.
    je débute en php, et je cherche des conseils, car je rame trop.

    je cherche a faire un formulaire ou je rentre deux dates, et j'affiche la differance entre ces dates.

    il existe des bout de code qui marche bien, mais je n'arrive pas a adapter tout ca a ma page.

    j'arrive a récuperer deux date qui sont stoké dans ma base, mais je n'arrive pas a calculer la differance des deux.

    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
    <?php
    // on se connecte à MySQL
    $db = mysql_connect('localhost', 'root', '');
     
    // on sélectionne la base
    mysql_select_db('conges',$db);
     
    // on crée la requête SQL
    $sql = 'SELECT date1,date2 FROM date_tbl';
     
     
    // on envoie la requête
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    while($data = mysql_fetch_assoc($req))
        {
        // on affiche les informations de l'enregistrement en cours
        echo ' <i>date de debut : '.$data['date1'].'</i><br>';
        echo ' <i>date de  : '.$data['date2'].'</i><br>'; 
        }
    // Affiche a date du jour.
    echo "date du jour : " ;
    // selon le serveur c'est fr ou fr_FR ou fr_FR.ISO8859-1 qui est correct.
    setlocale(LC_TIME, 'fr', 'fr_FR', 'fr_FR.ISO8859-1');
    echo strftime("%A %d %B %Y."); //Affichera par exemple "date du jour en français : samedi 24 juin 2006."
     
    //Calcul la differance entre deux date (date1 et date2)
    function calcule_nbre_jours ($date1, $date2) {
     
    	$arr_date1 = explode("/", $date1);
    	$time_a_comparer1 = mktime(0, 0, 0, $arr_date1[1], $arr_date1[0], $arr_date1[2]);
     
    	$arr_date2 = explode("/", $date2);
    	$time_a_comparer2 = mktime(0, 0, 0, $arr_date2[1], $arr_date2[0], $arr_date2[2]);
     
    	$difference = $time_a_comparer1 - $time_a_comparer2;
     
    	if ($difference < 0) {
    		echo 'Il y a : ';
    		$difference = abs($difference);
    	} else {
    		echo 'Dans : ';
    	}
    	$nbre_jour = intval($difference / 86400);
    	echo $nbre_jour.' jours';
    }
     
    calcule_nbre_jours('$date1', '$date2');
     
     
    // on ferme la connexion à mysql
    mysql_close();
    ?>
    Je dois pas récuperer les dates dans a base

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Les dates MySQL sont au format anglophone (aaaa-mm-jj et non jj/mm/aaaa). Voir la FAQ pour passer d'un format à l'autre.

    Ensuite, sachez que les variables ne sont pas interprétées dans une chaîne délimitée par des simples quotes. Par conséquent il faudrait écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    calcule_nbre_jours("$date1", "$date2");
    # ou mieux encore (l'interpolation étant ici inutile) :
    calcule_nbre_jours($date1, $date2);
    # et non :
    calcule_nbre_jours('$date1', '$date2');

    Julp.

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Tout d'abortd merci pour cette réponce, aussi rapide.
    j'ai fait la modification que vous m'avez donné, j'ai un message d'erreur suivant: Parse error: parse error in c:\program files\easyphp1-8\www\vacances\affichage.php on line 47


    je cherche en meme temps si il existe des cripte réalisant cette fonction, pour etudier la démarche suivie, mais je nai rien trouvé pour le moment.



    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
    <?php
    // on se connecte à MySQL
    $db = mysql_connect('localhost', 'root', '');
     
    // on sélectionne la base
    mysql_select_db('conges',$db);
     
    // on crée la requête SQL
    $sql = 'SELECT date1,date2 FROM date_tbl';
     
     
    // on envoie la requête
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    while($data = mysql_fetch_assoc($req))
        {
        // on affiche les informations de l'enregistrement en cours
        echo ' <i>date de debut : '.$data['date1'].'</i><br>';
        echo ' <i>date de  : '.$data['date2'].'</i><br>'; 
        }
     
    //Calcul la differance entre deux date (date1 et date2)
    function calcule_nbre_jours ($date1, $date2) {
     
    	$arr_date1 = explode("/", $date1);
    	$time_a_comparer1 = mktime(0, 0, 0, $arr_date1[1], $arr_date1[0], $arr_date1[2]);
     
    	$arr_date2 = explode("/", $date2);
    	$time_a_comparer2 = mktime(0, 0, 0, $arr_date2[1], $arr_date2[0], $arr_date2[2]);
     
    	$difference = $time_a_comparer1 - $time_a_comparer2;
     
    	if ($difference < 0) {
    		echo 'Il y a : ';
    		$difference = abs($difference);
    	} else {
    		echo 'Dans : ';
    	}
    	$nbre_jour = intval($difference / 86400);
    	echo $nbre_jour.' jours';
    calcule_nbre_jours($date1, $date2);
     
     
    // on ferme la connexion à mysql
    mysql_close();
    ?>

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par looping2b2a
    j'ai fait la modification que vous m'avez donné, j'ai un message d'erreur suivant:
    Parse error: parse error in c:\program files\easyphp1-8\www\vacances\affichage.php on line 47
    Vous avez tout simplement supprimé une accolade :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	echo $nbre_jour.' jours';
    } // A rajouter
    calcule_nbre_jours($date1, $date2);
    Sinon elle me paraît bien votre fonction, toutefois vous pouvez faire ce traitement directement avec MySQL à l'aide de la fonction DATEDIFF (de tête) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $query = mysql_query('SELECT date1, date2, DATEDIFF(date1, date2) AS date_diff FROM date_tbl;') or die(mysql_error());
    while ($array = mysql_fetch_assoc($query)) {
        echo "{$array['date1']} - {$array['date2']} = {$array['date_diff']}";
    }

    Julp.

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    La classe.
    la derniere formule marche tres bien.

    merci bcp pour votre aide.

    :-)

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

Discussions similaires

  1. Calculer nombre de jours entre deux dates
    Par faty_br dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 11/03/2013, 16h15
  2. calcul nombre de jours entre deux dates
    Par charlene44 dans le forum Langage
    Réponses: 7
    Dernier message: 21/08/2012, 14h06
  3. Calcule la différence de jours entre deux dates
    Par clement106 dans le forum Langage
    Réponses: 2
    Dernier message: 15/04/2010, 21h13
  4. [Date] Différence de jour entre deux dates
    Par ep31 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 31/07/2009, 10h06
  5. [SQL] obtenir la différence en jours entre deux dates sql
    Par toma03 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/06/2007, 12h20

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