Différentes couleurs pour les cellules d'un tableau

Résolu/Fermé
chriseb.f Messages postés 9 Date d'inscription mardi 10 mars 2015 Statut Membre Dernière intervention 11 mars 2015 - 10 mars 2015 à 11:28
chriseb.f Messages postés 9 Date d'inscription mardi 10 mars 2015 Statut Membre Dernière intervention 11 mars 2015 - 10 mars 2015 à 15:17
Bonjour,
Etant novice en PHP,
Je n'arrive pas a mettre une couleur dans la cellule de mon tableau en fonction de son contenu.
C'est la ligne qui change de couleur et non la cellule.
Mes données sont dans un fichier.
chaque info est séparée par "|"
Je test si dans le champ de la cellule on a _OK ou _KO ou....

Merci pour votre aide

Contenu de mon fichier
1456|REI|ALL|EV_KO 05/11/2014 03:02:14|EV_OK 05/11/2014 03:02:14|EV_OK 05/11/2014 03:02:14|PL_OK 10/11/2014 05:02:14|PL_KO 10/11/2014 05:02:14|
3045|ORI|ALL|PL_KO 02/11/2014 14:12:00|
3456|ARAM|ALL|PL_OK 02/11/2014 05:02:14|PL_OK 02/11/2014 05:02:14|
10252|RPA|ALL|EX_OK 30/12/2015 14:12:00|

Mon code
print '<table align="center" border="3" cellspacing="3" cellpadding="6">';
	print '<tr bgcolor="lightgrey"><td align="left"><b>Batch Id</b></td>';
	print '<td align="center"><b>SILO</b></td>';
	print '<td align="center"><b>Instance</b></td>';
	print '<td align="center"><b>PCOL</b></td>';
	print '<td align="center"><b>PSOC</b></td>';
	print '<td align="center"><b>PBMD</b></td>';
	print '<td align="center" bgcolor="red"><b>PDMT</b></td>';
	print '<td align="center"><b>PEXT</b></td>';
	print '<td align="center"><b>PREF</b></td>';
	print '<td align="center"><b>PREF2</b></td>';
	print '<td align="center"><b>PTEC</b></td>';
	print '<td align="center"><b>PPUR</b></td>';
	$autosys="/var/www/html/SID/DATA/suivi_prod_sid_". $date;
	$ligne = file($autosys);
	for ($j = 0; $j <= count($ligne); $j++)
	{
		$champs = count($ligne) - $j;
		$info = explode ('|', $ligne[$champs]);
		print '<tr bgcolor="blue">';	
		for ($i = 0; $i < 12; $i++)
		{
			$bg = "green" ;
			$test =substr( $info[i],2,3);
			if ( $test == "_KO" )
			{
				$bg = "red" ;
			} 
			print '<td bgcolor="' . $bg . '">' . $info[$i] . '</td>';
		}
		
	print '</tr>';
	}
print '</table>';

3 réponses

jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
10 mars 2015 à 13:16
Bonjour,

Le souci se trouve au niveau de ton IF ..
if ( $test == "_KO" )

Tu n'as aucune "cellule" contenant (STRICTEMENT) le texte "_KO" .......
ton IF ne sera JAMAIS vrai !

Pour faire ça.. tu peux utiliser strpos
if (strpos($test,'_KO')){
  $bg = "red" ;
}

0
chriseb.f Messages postés 9 Date d'inscription mardi 10 mars 2015 Statut Membre Dernière intervention 11 mars 2015
10 mars 2015 à 13:57
Non cela ne vient pas de la.
si tu regarde bien je récupére bien la variable test avec $test =substr( $info[i],2,3);
Ca doit etre au niveau de la 2ieme boucle for que ca coince;
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
10 mars 2015 à 14:17
ah oui je n'avais pas vu la ligne du dessus...
Tu as essayé de faire des ECHO de tes variables pour savoir ce qui se passait ?

for ($i = 0; $i < 12; $i++){
  $bg = "green" ;
  $test =substr( $info[i],2,3);

  $temp = " test:".$test . "   equal?: " .  $test == "_KO" ;

  if ( $test == "_KO" ){
    $bg = "red" ;
  } 
  print '<td bgcolor="' . $bg . '">' . $temp . " \n ". $info[$i] . '</td>';
}

0
chriseb.f Messages postés 9 Date d'inscription mardi 10 mars 2015 Statut Membre Dernière intervention 11 mars 2015
10 mars 2015 à 15:17
Hello
j'ai reussit j'ai utiliser un cas pour récupérer la valeur de mon test sur chaque celleule

for ($i = 0; $i < 12; $i++)
		{
			$bg = "aquamarine" ;
			switch ($i) {
				case 0:
					$test="3cp";
					break;
				case 3:
					$test =substr( $info[3],2,3);
					break;
				case 4:
					$test =substr( $info[4],2,3);
					break;
				case 5:
					$test =substr( $info[5],2,3);
					break;
				case 6:
					$test =substr( $info[6],2,3);
					break;
				case 7:
					$test =substr( $info[7],2,3);
					break;
				case 8:
					$test =substr( $info[8],2,3);
					break;
				case 10:
					$test =substr( $info[10],2,3);
					break;
				case 11:
					$test =substr( $info[11],2,3);
					break;
				case 12:
					$test =substr( $info[12],2,3);
					break;	
				}
0