Comparaison de date

Avatar du membre
ViPHP
ViPHP | 3008 Messages

07 mars 2005, 10:16

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:

Eléphant du PHP | 413 Messages

07 mars 2005, 18:01

ç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 ...
Modifié en dernier par goeb le 07 mars 2005, 18:03, modifié 1 fois.
--
Goeb

Avatar du membre
ViPHP
ViPHP | 3008 Messages

07 mars 2005, 18:03

Merci beaucoup goeb, je vais tester tout ça :D

A bientôt !

Eléphant du PHP | 231 Messages

07 mars 2005, 18:04

plus simple mé moins sur ... :roll:

Eléphant du PHP | 413 Messages

07 mars 2005, 18:52

pourquoi est-ce que c'est moins sûr ?
--
Goeb

Eléphant du PHP | 231 Messages

07 mars 2005, 19:05

c pas c marquer dans la doc de php et mysql ... :roll:

Eléphant du PHP | 231 Messages

08 mars 2005, 09:09

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: