Ecart de date

Eléphant du PHP | 124 Messages

25 avr. 2006, 14:49

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:

ViPHP
ViPHP | 3607 Messages

25 avr. 2006, 15:19

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?

Eléphant du PHP | 124 Messages

25 avr. 2006, 15:30

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...

ViPHP
ViPHP | 3607 Messages

25 avr. 2006, 15:38

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:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 avr. 2006, 15:41

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...

Eléphanteau du PHP | 36 Messages

25 avr. 2006, 18:41

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 ;)

Eléphanteau du PHP | 12 Messages

26 avr. 2006, 00:54

On peut utiliser le mysql pour faire les calculs aussi...
:) Rock'n'Bug (:

Eléphant du PHP | 124 Messages

26 avr. 2006, 10:21

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: