[RESOLU] condition if probleme couleur cellule tableau

Eléphanteau du PHP | 36 Messages

21 mars 2015, 07:44

Bonjour,

j'ai un petit souci sur une partie de code (je suis débutant) : je voudrais que dans une cellule la couleur change lorsque le résultat de la soustraction de deux dates est supérieur ou inférieur à 183.

Pour le moment, quelque soit le résultat de la soustraction, j'obtiens du vert. (jamais le rouge...)

je ne vois pas mon erreur dans ce code :

Code : Tout sélectionner

print("<td align=center>"); $datediff=odbc_result($Resultatdocquali,"tdoc_date_diff"); $jour=substr($datediff,8,2); $mois=substr($datediff,5,2); $annee=substr($datediff,0,4); $date=$jour."/".$mois."/".$annee; print"<font size=2>"; echo $date; print"</font>"; print("</td>\n"); $datediff=odbc_result($Resultatdocquali,"tdoc_date_diff"); $jour3=substr($datediff,8,2); $mois3=substr($datediff,5,2); $annee3=substr($datediff+3,0,4); $date3=$jour3."/".$mois3."/".$annee3; if (($annee3*365+$mois3*30+$jour3)-($annee*365+$mois*30+$jour) < 183) {print("<td bgcolor=#FF0000>");} if (($annee3*365+$mois3*30+$jour3)-($annee*365+$mois*30+$jour) > 184) {print("<td bgcolor=#99CC00>");} print("<font size=2>"); echo $date3; print"</font >"; print("</td>\n");


Merci d'avance de votre aide.

paolino

Mammouth du PHP | 2278 Messages

21 mars 2015, 10:16

1) Dans ces cas, il faut toujours vérifier les valeurs;
$datediff=odbc_result($Resultatdocquali,"tdoc_date_diff");

$jour3=substr($datediff,8,2);
// idem si $datediff te convient

$mois3=substr($datediff,5,2);
$annee3=substr($datediff+3,0,4);
$date3=$jour3."/".$mois3."/".$annee3;
print "$jour3 mois3 $annee3"; die();

2/ Extraire le calcul
$an3 = $annee3*365+$mois3*30+$jour3;
$an = ($annee*365+$mois*30+$jour;
et faire afficher ces valeurs
if (($an3 - $an) < 183)
{
print "<td bgcolor=#FF0000>" ;
}
else
{
print "<td bgcolor=#99CC00>";
}
a moins que ne veuilles rien pour 183 et 184
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 36 Messages

21 mars 2015, 10:59

Bonjour sirakawa,

merci pour ton aide.

j'ai essayé ta proposition mais il ne prend en compte que la première condition à chaque fois. il n'y a pas de changement de couleur lorsque la condition n'est pas respecté (je n'ai peut être pas respecté ou compris l'ensemble de ce que tu as précisé) :

Code : Tout sélectionner

print("<td align=center>"); $datediff=odbc_result($Resultatdocquali,"tdoc_date_diff"); $jour=substr($datediff,8,2); $mois=substr($datediff,5,2); $annee=substr($datediff,0,4); $date=$jour."/".$mois."/".$annee; print"<font size=2>"; echo $date; print"</font>"; print("</td>\n"); $datediff=odbc_result($Resultatdocquali,"tdoc_date_diff"); $jour3=substr($datediff,8,2); $mois3=substr($datediff,5,2); $annee3=substr($datediff+3,0,4); $date3=$jour3."/".$mois3."/".$annee3; $an3 = ($annee3*365+$mois3*30+$jour3); $an = ($annee*365+$mois*30+$jour); if (($an3 - $an) < 0) { print "<td bgcolor=#99CC00>" ; } else { print "<td bgcolor=#FF0000>"; } print"<font size=2>"; echo $date3;
l'ensemble de mes cellules de la colonne sont rouges alors que normalement je devrais en avoir des vertes.

Eléphanteau du PHP | 36 Messages

21 mars 2015, 11:01

petite précision : je ne veux pas une selection que des rouges ou des verts mais que l'ensemble s'affiche.

Mammouth du PHP | 2278 Messages

21 mars 2015, 11:59

Si tu commençais par faire afficher les valeurs AVANT le if, tu y verrais plus clair
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 2278 Messages

21 mars 2015, 12:00

En, particulier, j'aimerais savoir la valeur de $datediff..
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 36 Messages

21 mars 2015, 13:18

$datediff est une date que je vais chercher dans une table de donnée excel du format : jj-mm-aa

Mammouth du PHP | 2278 Messages

21 mars 2015, 14:01

IL est bien évident que le problème vient de la valeur de datediff
La valeur, pas le format:
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 36 Messages

21 mars 2015, 17:09

j'ai fait un echo sur datediff, voila ce que j'obtiens pour aujourd'hui :

2015-03-21 00:00:00
soit pour
"$jour3=substr($datediff,8,2);" = 21
"$mois3=substr($datediff,5,2);" = 03
"$annee3=substr($datediff+3,0,4);" = 2015

je n'arrive toujours pas à cerner cette erreur.

Eléphanteau du PHP | 36 Messages

21 mars 2015, 17:15

Merci sirakawa ta solution fonctionne parfaitement. j'ai simplement vérifier mes variables et je ne devais pas sous-traire les partie "année"...mais "annéeconnexion"...

merci beaucoup de ton aide.