Lignes de couleur dans tableau PHP
Résolu/Fermé
Miko73
Messages postés
2
Date d'inscription
jeudi 9 août 2007
Statut
Membre
Dernière intervention
10 août 2007
-
9 août 2007 à 22:37
radiati - 21 déc. 2008 à 11:06
radiati - 21 déc. 2008 à 11:06
A voir également:
- Lignes de couleur dans tableau PHP
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Excel cellule couleur si condition texte - Guide
- Trier tableau excel - Guide
5 réponses
tu mémorise la valeur de la ligne précedente et tu testes:
dans ta boucle
<?php
$old_val=""; // init pour la première ligne
$array_color=("0"=>"#FFFFFF","1"=>"#99CCCC", etc........ tu en mets assez);
while ($val = odbc_fetch_array($req)) {
if ($i=="1") $old_val=$val["NumeroCommande"]; // init pour la première ligne
if ($val["NumeroCommande"]==$old_val="") {
$color=$array_color[0];
}else{
array_shift($array_color);
$color=$array_color[0];
}
$old_val=$val["NumeroCommande"];
?>
<tr <?php echo "bgcolor=$color"; ?>>
<td><?php echo $i; ?></td>
<td><?php echo $val["NumeroCommande"]; ?></td>
</tr>
<?php $i++; } ?>
</code>
Je n'ai pas testé, ce n'est qu'une piste.
Une petite remarque:
utilises tjs les tags <?php ?> au lieu de <? ?>
dans ta boucle
<?php
$old_val=""; // init pour la première ligne
$array_color=("0"=>"#FFFFFF","1"=>"#99CCCC", etc........ tu en mets assez);
while ($val = odbc_fetch_array($req)) {
if ($i=="1") $old_val=$val["NumeroCommande"]; // init pour la première ligne
if ($val["NumeroCommande"]==$old_val="") {
$color=$array_color[0];
}else{
array_shift($array_color);
$color=$array_color[0];
}
$old_val=$val["NumeroCommande"];
?>
<tr <?php echo "bgcolor=$color"; ?>>
<td><?php echo $i; ?></td>
<td><?php echo $val["NumeroCommande"]; ?></td>
</tr>
<?php $i++; } ?>
</code>
Je n'ai pas testé, ce n'est qu'une piste.
Une petite remarque:
utilises tjs les tags <?php ?> au lieu de <? ?>
Après une nuit de sommeil qqs erreurs dans mon precedent post:
<?php $old_val=""; // init pour la première ligne $array_color=Array("0"=>"#FFFFFF","1"=>"#99CCCC", etc........ tu en mets assez); while ($val = odbc_fetch_array($req)) { if ($i=="1") $old_val=$val["NumeroCommande"]; // init pour la première ligne if ($val["NumeroCommande"]==$old_val="") { //si meme val on prend la premiere de l'array $color=$array_color[0]; }else{ // sinon si val diff on depile une couleur du debut de l'array $depil=array_shift($array_color); array_push($array_color,$depil); //et on la remet a la fin de l'array $color=$array_color[0];// et on prend la premiere qui vient } $old_val=$val["NumeroCommande"];//memo pour le tour suivant ?> <tr <?php echo "bgcolor=$color"; ?>> <td><?php echo $i; ?></td> <td><?php echo $val["NumeroCommande"]; ?></td> </tr> <?php $i++; } ?>
Oui tu as tout a fait raison le ="" était en trop, un copier /coller maleureux de ma part.
C'est très bien que tu l'ai vu et corrigé.
C'est très bien que tu l'ai vu et corrigé.
bonjpour Alain42
g un pb semblable a miko.
p.s (g laisser les variables globales sur On pour simplifier)
Voici mon code:
<html>
<body>
<?php
function generer_tableau($col,$lig)
{
$color='<td style="background-color:#8997D4">'; //couleur cellule
$color1='<td style="background-color:#66FFCC">'; // autre couleur
$col12='<td>'; // ouverture cellule
$col13='</td>'; // fermeture
$cr="\n";
// Initialise un nouveau tableau avec le code HTML requis : balise <table>
$tableau ='<table border="2" cellspacing="5" width="70%">'.$cr;
for ($l = 0; $l < $lig ; $l++) // génère lignes
{
// Initialise une nouvelle ligne avec le code HTML requis : balise <tr>
$ligne = '<tr>';
for ($c = 0; $c < $col ; $c++) //génère colonnes
// Ajoute la colonne dans la ligne avec le code HTML requis : balise <td> .... </td>
{
$x=$x+1; // affichage mes chiffres de 1 à ma dimension choisie du tableau (ici 200)
$requette = mysql_query("SELECT numplace,nomplace from EMPLACEMENT where numplace order by numplace");
while($result = mysql_fetch_array($requette))
{
$nupla = $result["numplace"];
$resultat = $color1.$x; // couleur1 avec le chiffre affiché dans la cellule
$fin = $resultat.$col13; // fermeture balises cellules
$resultat2 = $col12.$x; // couleur2
$fin2 = $resultat2.$col13; // fermeture balises cellules
$affiche1=$fin;
$affiche2=$fin2;
}
//conditions si le chiffre de mon enregistrement correspond à celui du tableau
if ($nupla==$x) {
//alors je change la couleur des cellules
$resu=$affiche1;
}else{
$resu=$affiche2; // sinon je laisse la couleur par defaut
}
$ligne .= $resu; // j'affiche le resultat
}
// Ferme la ligne avec le code HTML requis : balise </tr>
$ligne .='</tr>'.$cr;
// Ajoute la ligne au tableau
$tableau .= $ligne;
}
// Ferme le tableau avec le code HTML requis : balise </table>
$tableau.='</table>'.$cr;
return $tableau;
}
// Récuperer le code HTML du tableau dans une variable
//function generer_tableau(10,20) affichera un tableau de 10 colonnes et de 20 lignes donc 200
?>
</body>
</html>
Voilà je voudrais donc pouvoir "allumer" toutes les cellules qui correspondent à mes enregistrements sql en faisant une comparaison avec les chiffres du tableau. (x=x+1)
Merci encore pour votre aide.
g un pb semblable a miko.
p.s (g laisser les variables globales sur On pour simplifier)
Voici mon code:
<html>
<body>
<?php
function generer_tableau($col,$lig)
{
$color='<td style="background-color:#8997D4">'; //couleur cellule
$color1='<td style="background-color:#66FFCC">'; // autre couleur
$col12='<td>'; // ouverture cellule
$col13='</td>'; // fermeture
$cr="\n";
// Initialise un nouveau tableau avec le code HTML requis : balise <table>
$tableau ='<table border="2" cellspacing="5" width="70%">'.$cr;
for ($l = 0; $l < $lig ; $l++) // génère lignes
{
// Initialise une nouvelle ligne avec le code HTML requis : balise <tr>
$ligne = '<tr>';
for ($c = 0; $c < $col ; $c++) //génère colonnes
// Ajoute la colonne dans la ligne avec le code HTML requis : balise <td> .... </td>
{
$x=$x+1; // affichage mes chiffres de 1 à ma dimension choisie du tableau (ici 200)
$requette = mysql_query("SELECT numplace,nomplace from EMPLACEMENT where numplace order by numplace");
while($result = mysql_fetch_array($requette))
{
$nupla = $result["numplace"];
$resultat = $color1.$x; // couleur1 avec le chiffre affiché dans la cellule
$fin = $resultat.$col13; // fermeture balises cellules
$resultat2 = $col12.$x; // couleur2
$fin2 = $resultat2.$col13; // fermeture balises cellules
$affiche1=$fin;
$affiche2=$fin2;
}
//conditions si le chiffre de mon enregistrement correspond à celui du tableau
if ($nupla==$x) {
//alors je change la couleur des cellules
$resu=$affiche1;
}else{
$resu=$affiche2; // sinon je laisse la couleur par defaut
}
$ligne .= $resu; // j'affiche le resultat
}
// Ferme la ligne avec le code HTML requis : balise </tr>
$ligne .='</tr>'.$cr;
// Ajoute la ligne au tableau
$tableau .= $ligne;
}
// Ferme le tableau avec le code HTML requis : balise </table>
$tableau.='</table>'.$cr;
return $tableau;
}
// Récuperer le code HTML du tableau dans une variable
//function generer_tableau(10,20) affichera un tableau de 10 colonnes et de 20 lignes donc 200
?>
</body>
</html>
Voilà je voudrais donc pouvoir "allumer" toutes les cellules qui correspondent à mes enregistrements sql en faisant une comparaison avec les chiffres du tableau. (x=x+1)
Merci encore pour votre aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Miko73
Messages postés
2
Date d'inscription
jeudi 9 août 2007
Statut
Membre
Dernière intervention
10 août 2007
10 août 2007 à 11:46
10 août 2007 à 11:46
Un très grand merci, Alain !
Ci-dessous le code définitif qui fonctionne chez moi.
J'ai cru repérer une erreur sur la ligne que je t'indique avoir modifiée ci-dessous. A partir de cette modification, j'ai obtenu le résultat escompté.
J'ai enlevé le ="" affecté comme valeur à old_value car il me semblait que du coup old_value était null en permanence, donc jamais égal à $val["NumeroCommande"]. Mes connaissances PHP sont balbutiantes, mais cela a été ma déduction.
Le reste je n'y ai pas touché.
Si tu as des conseils, je ne manquerai pas de les mettre en oeuvre.
Merci encore pour tout !
Miko
Ci-dessous le code définitif qui fonctionne chez moi.
J'ai cru repérer une erreur sur la ligne que je t'indique avoir modifiée ci-dessous. A partir de cette modification, j'ai obtenu le résultat escompté.
J'ai enlevé le ="" affecté comme valeur à old_value car il me semblait que du coup old_value était null en permanence, donc jamais égal à $val["NumeroCommande"]. Mes connaissances PHP sont balbutiantes, mais cela a été ma déduction.
Le reste je n'y ai pas touché.
Si tu as des conseils, je ne manquerai pas de les mettre en oeuvre.
Merci encore pour tout !
Miko
<?php $old_val=""; // init pour la première ligne $array_color=Array("0"=>"#FFFFFF","1"=>"#99CCCC"); while ($val = odbc_fetch_array($req)) { if ($i=="1") $old_val=$val["NumeroCommande"]; // init pour la première ligne if ($val["NumeroCommande"]==$old_val) { //Ta proposition qui ne fonctionnait pas était : if ($val["NumeroCommande"]==$old_val="") //si meme val on prend la premiere de l'array $color=$array_color[0]; }else{ // sinon si val diff on depile une couleur du debut de l'array $depil=array_shift($array_color); array_push($array_color,$depil); //et on la remet a la fin de l'array $color=$array_color[0];// et on prend la premiere qui vient } $old_val=$val["NumeroCommande"];//memo pour le tour suivant ?>