Page 1 sur 1

Ecart de date

Posté : 25 avr. 2006, 14:49
par ephemere
Salut a tous!! :D
Alors voila j'ai essayé de me faire un bout de code calculant automatiquement l'écart de temps (en jours et années) a partir d'une date de ma base de données.

Je me suis servi de la Faq mais j'ai un peu de mal à le transcrire:
$date = $res['Date_signalement'];
list($annee, $mois, $jour)
 Array('annee'=>$annee, 'mois'=>$mois, 'jour'=>$jour);
$time = mktime(0, 0, 0, $jour, $mois, $annee);
$aujourdhui = time();
$ecart = $aujourdhui - $time; 
$ecart = floor($ecart / 3600 / 24);
echo $ecart 'jours'; 
$ecart = floor($ecart / 365);
echo $ecart.' années';
Bon je sais ça a un peu l'air de n'importe quoi mais faut dire ça fait un ptit moment que je triture la bete !
Si quelqu'un sait...
merki ! :wink:

Posté : 25 avr. 2006, 15:19
par jojolapine
je ne comprend pas trop cette ligne:
list($annee, $mois, $jour) 
déja je pense que tu as oublié le ; final...
mais au fait, c'est quoi qui marche pas dans ton histoire?
t'a un message d'erreur ou ça n'affiche pas ce que tu veux?

Posté : 25 avr. 2006, 15:30
par ephemere
Ben si je met le point virgule:

Parse error: syntax error, unexpected ';', expecting '=' in c:\Inetpub\wwwroot\test.php on line 17

Si je le met pas:

Parse error: syntax error, unexpected T_VARIABLE, expecting '=' in c:\Inetpub\wwwroot\test.php on line 18

Si j'enleve la ligne avec list pareil mais ligne 22

Donc c'est bien des erreurs de syntaxes mais a mon avis le fond est pas tip top non plus...

Posté : 25 avr. 2006, 15:38
par jojolapine
il te manque pas mal de choses, par exemple tu crée un tableau mais il faut le stocker dans une variable, ce qui n'est pas le cas ensuite, tu as oublié un point de concaténation dans cette ligne:
echo $ecart 'jours'; 
je te conseil de revoir ton code...(tu la copier/coller d'où? :roll: )
et tu reviens après :wink:

Posté : 25 avr. 2006, 15:41
par Ryle
Parse error: syntax error, unexpected T_VARIABLE, expecting '=' in c:\Inetpub\wwwroot\test.php on line 18
Et si tu rajoutais le "=" en question voire si ce que dit php n'est pas complétement idiot :)
list($annee, $mois, $jour) = array('annee'=>$annee, 'mois'=>$mois, 'jour'=>$jour); 
Il faudra songer à jeter un p'tit coup d'oeil sur la fonction list() dans la doc pour savoir comment elle fonctionne :) Je pense que son usage n'est pas utile ici si tu as déjà les valeurs dans les variables $annee, $mois et $jour...

Posté : 25 avr. 2006, 18:41
par cortex007
le truc "facile" c'est d'utiliser la fonction date avec le paramettre U pour generer la date en seconde .... le truc a faire ensuite est une operation de soustraction avec une date reduite de la meme maniere. Puis reste a convertir le resultat en minutes, heures, jours, semaine ect .... mais je crois qu'il y a une fonction qui le fait aussi ;)

Posté : 26 avr. 2006, 00:54
par FuR[i]OuS
On peut utiliser le mysql pour faire les calculs aussi...

Posté : 26 avr. 2006, 10:21
par ephemere
Voila j'ai trouvé:
Je met ça si jamais ça peux aider quelqu'un:
$date = $res['Date_signalement'];echo $date;
$jour = substr($date, 8, 2); // on récupère le jour
$mois = substr($date, 5, 2); // puis le mois
$annee = substr($date, 0, 4); // et l'annee$timestamp = mktime(0, 0, 0, $mois, $jour, $annee); // -- DATE ACTUELLE --// directement en timestamp.
$maintenant = time(); // -- CALCUL --// on calcule le nombre de secondes d'écart entre les deux dates
$ecart_secondes = $maintenant - $timestamp;// puis on tranforme en jours (arrondi inférieur)
$ecart_jours = floor($ecart_secondes / (60*60*24));// enfin on affiche le résultatsetlocale
echo $ecart_jours;
Merci a tous :wink: