Page 1 sur 2
changer la couleur une ligne sur deux
Posté : 09 févr. 2006, 10:40
par Invité
Bonjour,
Je suis en train de mettre au point un suivi de visite desmagasins pour mon travail. Je décide de le faire en PHP/ Mysql car je vais l'accouplé avec le site de la société et ainsi tous les commerciaux et VRP auront accés aux données pour travailler.
Seulement je ne suis pas un grand spécialiste du php et de l'HTML.
Je commence avec une question de présentation.
Sur une page ou je récupère les données d'une seule table. Par Exemple ma table enseigne.
Je voudrais que lorsque le résultat s'affiche, une ligne sur deux ait un fond de couleur pour rendre la lecture plus facile.
Pourriez vous me renseigner.
Merci beaucoup
Ps le site
www.novicase.com
PPs c'est pas moi qui l'ai fait

Posté : 09 févr. 2006, 11:37
par Maitrepylos
Bonjour
<?php $alternate = "2";
if ($alternate == "1") {
$color = "#ffffff";
$alternate = "2";
}
else {
$color = "#c0c0c0";
$alternate = "1";
?>
<td bgcolor="<?php echo $color ?>"> </td>
Posté : 09 févr. 2006, 12:31
par Mouki
J'suis po trop d'accord avec Maitrepylos, alros je propose autre chose :
<table>
<?php
$Tab = array ( "Couleur 1", "Couleur 2", "Re-couleur 1", "Re-couleur 2" );
for($i=0; $i<=4; $i++){
if( $i%2 == 0 ){
$color = "#FF0000";
}
else{
$color = "#00FF00";
}
echo "<tr bgcolor=$color><td>$Tab[$i]</td></tr>";
}
?>
</table>
Alors oui, c'est un cas particulier, mais bon... ça peut te donner des idées...
Posté : 09 févr. 2006, 23:03
par Invité
Merci
Alors si j'ai bien compris la première solution change la couleur une ligne sur et la deuxieme solution permet en plus de spécifier des cas particulier ( si infieur à X tel couleur si = Y tel couleut)
C'est ca?
Sinon si un modérateur ou un admin peut vérifier que je me soit pas trompé lors de mon inscription avec mon adresse mail car je n'ai toujours pas recut le mail d'activation.
pseudo maxou
mail
[email protected]
Merci encore

Posté : 10 févr. 2006, 00:25
par albat
Et en une seule ligne, ça ne vous paraît pas plus élégant ?...
<td style="background-color:<?php echo (++$i%2==0 ? "#FFFFFF" : "#C0C0C0"); ?>"></td>
Posté : 10 févr. 2006, 09:44
par Invité
Bonjour
En effet en une ligne c'est plus ..... court
Par contre pour continuer dans mes qestion de newbie, que doit-je mettre dans la variable $i? je doit mettre par exemple l'id_enseigne de la requete?
je vais essayer comme ça.
Merci
Ps vous avez put regarder pour mon problème d'inscription?
Posté : 10 févr. 2006, 09:55
par Cyrano
On va combiner un peu toutes les réponses et en profiter pour corriger une erreur :
<table>
<?php
$Tab = array ( "Couleur 1", "Couleur 2", "Re-couleur 1", "Re-couleur 2" );
$nb = count($Tab);
for($i = 0; $i < $nb; $i++)
{
$color = ($i % 2 == 0 ) ? "#FF0000" : "#00FF00";
?>
<tr bgcolor="<?php echo($color); ?>">
<td><?php echo($Tab[$i]); ?></td>
</tr>
<?php
}
?>
</table>
Le $i est en quelque sorte un pointeur qui est défini dans la boucle for() : par rapport à ce qui a été proposé au départ, j'ai remplacé une valeur du for() par une variable $nb et changé le "<=" en "<"
De plus, j'ai sorti le HTML du PHP, c'est plus propre et plus efficace à terme.
Posté : 10 févr. 2006, 09:56
par Invité
Bon j'ai essayé la solution en une ligne en mettant a la place de $i = $enreg[0] ( ce qui correspont à la clef primaire de ma requete ) et sa marche une ligne sur deux de couleur.
Maintenant je me pose une question. Lorsqu'on suprimme un enregistrement dans une table. il va y avoir de nombre pair l'un derriere l'autre alors est ce que les deux lignes seront de la même couleur? ](*,)
ou alors j'ai rien compris au code et qu'en fait il colorie une ligne sur deux automatiquement et s'en fout de l'ID?
Merci et désolé de vous poser toutes ces question qui doivent vous paraitre idiotes.

Posté : 10 févr. 2006, 10:02
par Cyrano
Le pointeur $i de la boucle est indépendant de l'identifiant récupéré en base de données: $i commence à 0 et donc est pair, au tour suivant, on a $i++ et $i est incrémenté à 1, donc impair, etc... à chaque tour, $i est incrémenté donc alterne pair/impair ce qui permet de faire changer la couleur à chaque tour avec le modulo :
$i % 2 == 0 : ça signifie : si le reste de la division de $i par 2 == 0 ce qui est vrai avec les nombres pair, faux avec les nombres impair.
Est-ce que tu captes mieux le principe ?
Posté : 10 févr. 2006, 10:13
par Invité
Oulla oui je comprends mieux maintenant pourquoiil y à les ++ le % etc.
Bon je recode tout e suite comme il faut.
Merci
Posté : 10 févr. 2006, 11:29
par Gabzoe
Salut tout le monde !
Le sujet m'intéresse car ça fait quelques jours que je cogite là dessus. Mais y a un truc que je comprends pas (très grande débutante !)
Quand tu mets $Tab=array("couleur 1", "couleur 2", "re_couleur 1", "re_couleur 2");
j'ai tout remplacé par "" (vide), mais ça m'affiche dans le cas présent 4 fois la même réponse (avec les couleurs alternées bien sûr !), car c'est un tableau dynamique (avec une région répétée) et moi je voudrais qu'il m'affiche tous les résultats qu'une seule fois !
Ben si vous pouvez m'éclairer à ce sujet ça serait sympa ! Merci d'avance !
Posté : 10 févr. 2006, 12:41
par Cyrano
C'est un peu différent de ce que tu veux faire GabZoe, ouvre un nouveau sujet et précise ce que tu veux obtenir.
Posté : 10 févr. 2006, 12:56
par albat
que doit-je mettre dans la variable $i?
je doit mettre par exemple l'id_enseigne de la requete?
Rien.
$i est juste un compteur qui ne sert qu'à différencier les lignes paires des lignes impaires.
Rien de plus.
Si tu le souhaites, tu peux l'initialiser à 0.
Ps vous avez pu regarder pour mon problème d'inscription?
Seul un administrateur le peut.
Envoie un MP à
Damien...

Posté : 11 févr. 2006, 01:36
par Invité
Merci albat
Bon je vais voir pour envoyer un mp.
Par conte pour la variable $i j'ai du l'initialiser sinon ca marche pas.
Merci quand meme et je pense que je vais encore abuser de votre aide.
Bonne soiré a tous
Posté : 11 févr. 2006, 01:37
par Invité
Désolé je peut pas editer mon post vu que je suis en invité.
Mais je ne peut pas nom plus envoyer de mp il faut se connecter pour cela.
Merci