Pardon de le dire comme ça mais… cette façon de s’y prendre, c’est carrément n’importe quoi dans tous les sens !
De toutes façons le mieux est toujours d’effectuer une comparaison simple, en utilisant un timestamp, plutôt que d’effectuer de laborieuses comparaisons successives.
Le plus compliqué est alors de transformer les données de base (« $heure est en tynitext au format 16:00 et la variable $jour idem au format 07-11-2009 »), la suite est immédiate.
<?php
function get_timestamp($jour,$heure) {
# conversion des données ($jour,$time) en timestamp
$jma=null;
preg_match('/^(\d{2})-(\d{2})-(\d{4})$/',$jour,$jma);
$hm=null;
preg_match('/^(\d{2}):(\d{2})$/',$heure,$hm);
return mktime($hm[1],$hm[2],0,$jma[2],$jma[1],$jma[3]);
}
$style_class=
get_timestamp($jour_x,$jour_y)
Un conseil : pour définir le style, affecter plutôt une classe, comme dans l’exemple ci-dessus.
Le script est allégé, et ce sont les css qui donneront ensuite toutes les précisions, avec l’avantage d’être facilement interchangeables :
.avant {
color: green;
}
.apres {
color: red;
font-weight: bold;
text-decoration: blink;
}
----- Original Message -----
From: Institut Curie
To: SPIP
Sent: Saturday, November 07, 2009 4:30 PM
Subject: [Spip] [HS] un peu de php
Bonjour,
Pardon, pour ce hors sujet mais ça fait deux jours que je suis en train
de me prendre la tête sur un petit script php qui devrait comparer des
dates et me donner du style à un texte.
Ça marche en partie . C’est à dire qu’ à l’heure du jour de la date
choisie, je devrais avoir des caractères rouges et pour les autres des
caractères verts (ceux dont la date et l’heure n’est pas atteinte.)
J’ai l’impression maintenant que le test ne se fait que sur le jour et
pas sur l’heure:
$time = $heure;
$now = date(‹ H:i ›);
$next = substr($time, 0, « 2 »);
$now = new DateTime( $now );
$now = $now->format(‹ H ›);
if ( $now < $next ) $style= « color:blue »;
//else $style=« color:orange;font-weight:bold; text-decoration: blink; »;
$jour = date(‹ d-m-Y ›);$madate=$res[‹ date ›];$date= substr($madate, 0, « 2 »);
$jour = new DateTime( $jour );
$jour = $jour->format(‹ d ›);
if ( $jour <= $date ) $style= « color:green »;
else $style=« color:red;font-weight:bold; text-decoration: blink; »;
$heure est en tynitext au format 16:00 et la variable $jour idem au
format 07-11-2009
Si vous voyez le bug, Merci d’avance !!
Cordialement
–
Daniel Creton Responsable informatique
Institut Curie 26, rue d’Ulm, 75005 Paris
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/
Documentation de SPIP : http://www.spip.net/
Irc : de l’aide à toute heure : http://spip.net/irc