8791 sujets

Développement web côté serveur, CMS

Bonjour à tous et à toutes,

En surfant sur la toile, j'ai trouvé un script php, une boucle, qui permet de colorer d'une couleur différente une ligne sur deux d'un tableau.

Je cherche à intégrer cette astuce dans mon script php :


<?php

while($donnees = mysql_fetch_array($demande)) // On fait une boucle pour afficher toutes les entrées de la table.
	{	
?>	
				<tr>
					<td><?php echo $donnees['nom']; ?></td>
					<td><?php echo $donnees['possesseur']; ?></td>
					<td><?php echo $donnees['prix']; ?>&euro;</td>
				</tr>
				
<?php
	} // Fermeture de la boucle.
?>


Je ne vous ai pas montré l'intégralité du script mais juste la partie qui nous intéresse.

Ci-dessous, le script en question :


<?php
	$couleurs = array('#bbb', '#ddd');
	$nombre = count($couleurs);
	
	$i = 0;
	while ($i < 50)
	{
		echo '<tr style="background-color : ' . $couleurs[ $i % $nombre] . '">
					<td>Texte de la colonne A</td>
					<td>Texte de la colonne B</td>
					<td>Texte de la colonne C</td>
			  </tr>';
		$i++;
	}
	?>


Donc, ce que je veux faire, c'est introduire ce script dans ma boucle afin de colorer d'une couleur différente les lignes de mon tableau.

En bref, à la place de

<td>Texte de la colonne A</td>
<td>Texte de la colonne B</td>
<td>Texte de la colonne C</td>


je devrais avoir ceci :

<td><?php echo $donnees['nom']; ?></td>
<td><?php echo $donnees['possesseur']; ?></td>
<td><?php echo $donnees['prix']; ?>&euro;</td>


Cependant, je ne sais pas comment positionner mes deux boucles afin d'obtenir un script fonctionnel. J'ai déjà procédé à divers essais mais aucun n'a marché.
Je fais donc appel à votre aide en espérant que vous m'avez compris et que vous trouverez une solution Smiley cligne .
Modifié par jQz (25 Feb 2010 - 12:20)
Salut,

ben je ne vois pas bien où est la difficulté mais bon... Smiley murf

Déjà je commencerais par une remarque : plutôt que de mettre les couleurs en dur dans le code il vaudrait mieux affecter des classes différentes (séparation contenu / présentation). Comme tu n'en utilises que 2 je vais prendre .paire et .impaire mais le principe est le même avec plus de couleurs différentes) :
tr.impaire {
	background: #bbb;
}

tr.paire {
	background: #ddd;
}
<?php 
$classesTD = array('impaire', 'paire');
$nombre = count($classesTD);
$compteur = 0;
while($donnees = mysql_fetch_array($demande)) // On fait une boucle pour afficher toutes les entrées de la table. 
    {     
?>     
                <tr class="<?php echo $classesTD[ $compteur % $nombre] ?>"> 
                    <td><?php echo $donnees['nom']; ?></td> 
                    <td><?php echo $donnees['possesseur']; ?></td> 
                    <td><?php echo $donnees['prix']; ?>€</td> 
                </tr> 
                 
<?php 
		$compteur++;
    } // Fermeture de la boucle. 
?>
Heyoan a écrit :
ben je ne vois pas bien où est la difficulté mais bon... Smiley murf

Eh bien, moi, je cherchais à intégrer les deux boucles les unes dans les autres et non procéder comme tu viens de le faire.

Mais le principal c'est que le problème est résolu Smiley smile .

Encore merci Heyoan.
Modifié par jQz (25 Feb 2010 - 12:20)
Benjamin-Ds a écrit :
Sinon tu peux également le faire avec jquery assez facilement il me semble. Smiley smile
Et plus généralement avec du JavaScript mais ça ne fonctionnera donc que si le JavaScript n'est pas désactivé... ce qui n'est pas forcément bien grave puisqu'il ne s'agit ici que de présentation.


Edit: d'ailleurs en partant du principe que ça n'est pas bien grave si ça ne fonctionne pas on pourrait se passer totalement de classes et de JavaScript et utiliser un sélecteur CSS 3 (qui ne fonctionnera donc pas pour tous les navigateurs) :
tr {
	background: #bbb;
}

tr:nth-child(odd) { 
	background: #ddd;
}
A tester avec Opera, Safari, Chrome...
Modifié par Heyoan (25 Feb 2010 - 15:16)