[PHP] Soutraction date

Bonjour,

J’ai un champ ‘dateXX’ varchar pour une date (je sais, ce n’est pas bien :slight_smile: ) qui est rempli par un formulaire de la façon jj-mm-aaaa, la base est bien rempli.

J’aimerais soustraire ce champ à la date du jour, voici mon bout de code :

$days = date("d-m-Y") - $data['dateXX'];

Le problème, c’est qu’il me fait bien la soustraction, mais il ne prend pas en compte le mois et l’année, c’est à dire qu’il me fait bien dans un mois le 27 moins le 19 = 8, mais si je rentre le 19 du mois de février il me donne 8 aussi comme résultat :lol:

Cela ne doit pas être grand chose, mais je cherche en vain :frowning:

Merci de me filer un coup de main :wink:

Il faudrait commencer par extraire le jour/mois/année de ton varchar

Ensuite un petit calcul de date comme php sait bien le faire:


<?PHP
$nbjour = (int)((mktime (0,0,0,$mois,$jour,$annee) - time(void))/86400);
?> 

Merci, l’extraction je la fais comme ceci ?

list($jour, $mois, $annee) = explode('-', $dateXX);

avec ce code cela me retourne "-13600" pour toutes les dates rentrées :frowning:

Sinon mySQL (ou pgSQL, ou autre) dispose d’un tas de fonction sur les dates pour peu que tu lui fournisse un moyen de convertir de string -> date.

Voir doc mySQL sur les dates.

<?php

$date = "26-02-2007"; // date type sortie de ton champs vachar

$explode = explode("-", $date); // explode pour séparer chaque élément de la date
$day = $explode[0];
$month = $explode[1];
$year = $explode[2];

$timestamp = mktime(0, 0, 0, $month, $day, $year); // passe la date en timestamp

$nbday = (time() - $timestamp) / (24*60*60); // soustraction du timestamp calculer à partir de la date au timestamp actuel + calcul du nombre de jour
echo round($nbday); // affiche le résultat arrondi à l'entier le plus proche
?>

ce code devrait marcher, je l’ai commenté pour que tu comprennes comment ca marche

pour la fonction round je l’ai trouvé vite fait comme ca mais je suis pas sur que c’est la mieux adapter, elle arrondi à l’entier le plus proche