2009-10-25 9 views
0
<table> 
while ($row = mysql_fetch_assoc($result)) { 
<tr> 
<td> 
echo $row['test'] . " " . ' ($' . $row['test2'] . ")<br>"; 
</td> 
</tr> 
} 
</table> 

Comment créer un motif pour la couleur d'arrière-plan? Par exemple, gris, bleu, bleu gris.Motif dans la boucle while

+0

Votre anglais n'a pas de sens. Les couleurs ne vous demandent pas de créer des motifs pour eux. –

+0

Quelle serait la bonne façon de le dire? – Strawberry

+1

@Doug: Suggestion, "Comment créer un motif avec une couleur de fond alternée?" – Spoike

Répondre

1

Vous avez besoin quelque chose comme une variable d'état, où vous stockez Que la dernière rangée était bleue ou grise. Ensuite, vous imprimez l'autre couleur et mettez à jour la variable d'état pour la passe suivante.

Ceci est un exemple:

<?php 

echo '<table>'; 

$state = 1; 
while ($row = mysql_fetch_assoc($result)) { 
    echo '<tr>'; 
    if($state%2 == 0) 
     echo '<td style="background-color:grey;">'; 
    else 
     echo '<td style="background-color:blue;">'; 
    echo $row['test'] . " " . ' ($' . $row['test2'] . ")<br>"; 
    echo '</td></tr>'; 
    $state++; 
} 
echo '</table>'; 

?> 
2

Il y a plusieurs façons de le faire. En voici un.

<table> 
<?php $i = 0; ?> 
<?php while ($row = mysql_fetch_assoc($result)): ?> 
<tr<?php echo (++$i & 1 == 1) ? ' class="odd"' : '' ?>> 
<td> 
<?php echo $row['test'] . " " . ' ($' . $row['test2'] . ") ?><br> 
</td> 
</tr> 
<?php endwhile; ?> 
</table> 

Je suggère de donner une classe CSS (je l'ai appelé « bizarre » ici) à chaque seconde rangée plutôt que les deux paires et impaires. Alors vous faites juste:

tr td { background: grey; } 
tr.odd td { background: blue; } 

en CSS.

1

S'il s'agit d'un motif à 2 couleurs, utilisez une variable pour basculer entre le bleu et le gris. si plus de 2 couleurs, utilisez un compteur de rotation

2 couleurs

$blue = true; 
<table> 
while ($row = mysql_fetch_assoc($result)) { 
<tr> 
<td color="<?php echo $blue?'blue':'grey'; $blue ^= true; ?>"> 
echo $row['test'] . " " . ' ($' . $row['test2'] . ")<br>"; 
</td> 
</tr> 
} 
</table> 

Plus de 2 couleurs, la solution générale:

$colourIndex = 0; 
$colours = ('blue', 'red', 'green'); 

... 
... 

<td color="<?php echo $colours[$colourIndex]; $colourIndex = ($colourIndex+1)%length($colours); ?>"> 
+0

'$ blue =! $ Blue' est une méthode moins _clever_. –

+0

Qu'est-ce qu'un compteur rotatif? – Strawberry

+0

($ compteur + 1)% n où n est le nombre de couleurs que vous avez: P –

0

Vous pouvez également utiliser la InfiniteIterator pour répéter la séquence encore et encore. Ceci, comme le "compteur rotatif", fonctionne pour une quantité arbitraire d'éléments.

$props = new InfiniteIterator(
    new ArrayIterator(array('a', 'b', 'c','d', 'e')) 
); $props->rewind(); 

$l = rand(10, 20); // or whatever 
for ($i=0; $i<$l; $i++) { 
    $p = $props->current(); $props->next(); 
    echo 'class="', $p, '"... '; 
} 
+0

C'est tellement complexe! –

+0

Vraiment? Je trouve cette solution plus facile à lire que les autres. Et plus facile à modifier. – chendral

Questions connexes