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

>Je mettrais toutes les variables avant et non pas dans le test conditionnel pour commencer.
Ensuite peut être avec une condition if(($x<$y) && ($j<$q))

Bernard

Institut Curie a écrit :

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

--
Bernard Blazin - Développement Internet

Bernard Blazin Point Com

9 rue de la Rose
77320 Montolivet
Tel 01 64 20 98 49
http://www.bernardblazin.com

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