Page 1 sur 1

Comparaison de date

Posté : 07 mars 2005, 10:16
par charabia
Bonjour,

J'ai un petit soucis avec les dates.

En gros je voudrais afficher un icône "new" si la date stockée en base est inférieure ou égale à une semaine. Cet icône sera ensuite remplacé par une puce normale.

Le champs dans la base est de type "date" et est affiché sous forme aaaa-mm-jj.

J'ai d'abord utilisé une fonction pour remettre la date dans l'ordre : jj-mm-aaa :

Code : Tout sélectionner

Function conv_date($str_date) { $year=substr($str_date,0,4); $month=substr($str_date,5,2); $day=substr($str_date,8,2); $hour=substr($str_date,11,2); $mn=substr($str_date,14,2); $sec=substr($str_date,17,2); $retour=date("d-m-Y", mktime($hour, $mn, $sec, $month, $day, $year)); return ($retour); }
Et ensuite je retire 7 jours de la date du jour pour pouvoir faire la comparaison :

Code : Tout sélectionner

$dateok=conv_date($date_insc); $datesupp7 = mktime(0,0,0,date("m"), date("d")-7,date("Y")); $dateaffsupp7 = strftime("%d-%m-%Y", $datesupp7);
Et enfin je fais la comparaison :

Code : Tout sélectionner

if($dateaffsupp7 <= $dateok) echo '<img src="imgs/new.gif" border="0" align="absmiddle">'; else echo '<img src="imgs/menu_dhtml/bullet_hl1.gif" name="bullet" align="absmiddle">
Mais voilà...ça ne marche pas...

Je ne sais pas si le code est bon, mais ça ne doit pas être le cas puisque ça ne marche pas.

Pouvez-vous m'aider ? Merci ! :wink:

Posté : 07 mars 2005, 18:01
par goeb
ça me paraît plus simple de comparer des timestamp unix (le nombre de secondes depuis le 1er janvier 1970), car c'est une comparaison de nombres.

je propose plutôt un truc du genre :

Code : Tout sélectionner

function conv_date($str_date) { ... return mktime($hour, $mn, $sec, $month, $day, $year); // ça retourne un timestamp unix }
et ensuite

Code : Tout sélectionner

$dateok=conv_date($date_insc); $semaine_derniere = time() - 7*24*3600; // 7*24*3600 est le nombre de secondes équivalent à 7 jours // ça donne le timestamp unix d'il y a une semaine if ($semaine_derniere <= $dateok) { // comparaison de 2 nombres ... } else ...

Posté : 07 mars 2005, 18:03
par charabia
Merci beaucoup goeb, je vais tester tout ça :D

A bientôt !

Posté : 07 mars 2005, 18:04
par dark_vidor
plus simple mé moins sur ... :roll:

Posté : 07 mars 2005, 18:52
par goeb
pourquoi est-ce que c'est moins sûr ?

Posté : 07 mars 2005, 19:05
par dark_vidor
c pas c marquer dans la doc de php et mysql ... :roll:

Posté : 08 mars 2005, 09:09
par dark_vidor
moi je convertirai pas la date contenu en mysql
ensuite je ferai
if ($date_insc <= date("Y-m-d",mktime(0, 0, 0, date("m"), date("d")-7, date("Y")))
echo '<img src="imgs/new.gif" border="0" align="absmiddle">';
else
echo '<img src="imgs/menu_dhtml/bullet_hl1.gif" name="bullet" align="absmiddle">';
je pense que ça fonctionne :roll: