Oeh, dat is een bekende vraag. Mag ook gewoon met tabellen, het gaat er om dat je de juiste classe aan je regel (tr, of div, whatever) toewijst.

$i = 0;
while(fetching)
{
echo '<tr';
if($i % 2 == 0) echo ' class="oneven"';
echo '><td></td></tr>';
}
@ Jelmer: je moet $i ophogen, anders werkt het niet.

De elegantste oplossing vind ik deze:

<style>
tr.bg0 {
background: #fff;
}
tr.bg1 {
background: #eee;
}
</style>

<?php
// rijen om en om kleuren
$i = 0;

while (fetch) {
$i ^= 1;
echo '<tr class="bg'.$i.'"></tr>';
}
?>
@Jan: inderdaad, foutje, overgeslagen.
Hee Jelmer, je hebt gewonnen!
3000+ posts :-)))
Overigens heb ik nog een leuk artikel over dit probleem gelezen net. Het kan ook anders, op deze manier:

1) zorg dat de hoogte van je tabelrijen vaststaat (bv 25px)
2) maak een plaatje van 50 pixels met de bovenste helft in de ene kleur en de onderste helft in de andere
3) gebruik dat plaatje als achtergrond voor je tabel
$i ^= 1;


Dit heb ik nog nooit gezien, dit verhoogt ook met 1 veronderstel ik? (Geen tijd om te testen)
Waarom dan niet $i++; ? Is korter :)
Hoi Rafael

De ^ operator is een XOR bit-operator.

Als $i 1 is, wordt hij 0
Als $i 0 is, wordt hij 1

Als je $i++ doet, moet je daarna nog checken of hij even of oneven is met $i % 2. Dus ^ is in dit geval korter :-)
Heej die syntax had ik nog niet gezien :P.
maar na ff wat teste blijkt dat ^= het getal in de variabele steeds met de aangegeven hoeveelheid verhoogt, de volgende keer weer verlaagt, dan weer verhoogt:

check ut zelf:


<?php
$i = 0;
for($y=0;$y<6;$y++){
$i^= 1;
echo $i."\n";
} // Output:
// 1
// 0
// 1
// 0
// 1
// 0
$i = 4;
for($y=0;$y<6;$y++){
$i^= 3;
echo $i."\n";
} // Output:
// 7
// 4
// 7
// 4
// 7
// 4
$i = 2;
for($y=0;$y<6;$y++){
$i^= -3;
echo "// ".$i."\n";
} // Output:
// -1
// 2
// -1
// 2
// -1
// 2
?>

Jan Koehoorn schreef op 19.12.2005 22:02
Hoi Rafael

De ^ operator is een XOR bit-operator.

Als $i 1 is, wordt hij 0
Als $i 0 is, wordt hij 1

Als je $i++ doet, moet je daarna nog checken of hij even of oneven is met $i % 2. Dus ^ is in dit geval korter :-)


Bedankt voor de uitleg, weer wat bijgeleerd, en dit kan best handig zijn :D

Reageren