Hoe kan ik (bij voorkeur in css) aangeven dat in mijn tabel de even rijen een andere kleur hebben dan de oneven rijen?
Kun je niet. Doe het wanneer je de tabel samenstelt met een teller (kijk of de teller even of oneven is), die een oneven of even stijl kan toekennen aan een rij. De stijlen definieer je wel in CSS.
Je zou 't bijvoorbeeld zo kunnen doen:

<?php
for($i=0;$i<10;$i++)
{
if($i&1) $bgcolor = 'yellow';
else $bgcolor = 'green';

echo '<div style="width:300px;height:20px;background:'.$bgcolor.'">Regel '.$i.'</div>';
}
?>
Jezpur schreef op 16.10.2009 19:42
Kun je niet. Doe het wanneer je de tabel samenstelt met een teller (kijk of de teller even of oneven is), die een oneven of even stijl kan toekennen aan een rij. De stijlen definieer je wel in CSS.

Nog niet.
Ik geloof dat er in CSS3 selectors komen waarmee je het wel kunt doen :-).
En als het per se moet bij de client, dan kan je ook nog naar jQuery kijken, daarmee gaat het vrij simpel.
Noppes schreef op 16.10.2009 20:03
@Turmin
Wat moet dat voorstellen dan??? Code die niet te parsen is.....

Er wordt gevraagd om en om

Het is om en om
Noppes schreef op 16.10.2009 20:03
@Turmin
Wat moet dat voorstellen dan??? Code die niet te parsen is.....

Er wordt gevraagd om en om

http://wiki.phpfreakz.nl/Resultaat_in_rijen_met_om-en-om_wisselende_kleurtjes


Deze code is perfect te parsen. Niks mis mee. Het doet precies wat het moet doen:


<?php
for($i = 0; $i < 10; $i++)
{
    if($i & 1)
        $bgcolor = 'yellow';
    else
        $bgcolor = 'green';
    echo $bgcolor;
}


geeft:

greenyellowgreenyellowgreenyellowgreenyellowgreenyellow
GaMer13 schreef op 16.10.2009 20:54

Deze code is perfect te parsen. Niks mis mee. Het doet precies wat het moet doen

Tja, ik snap ook niet wat er zo moeilijk aan is. Misschien niet het mooiste voorbeeld, maar het werkt en geeft een idee hoe 't ook kan.
Heel simpel werkt dit, als je weet hoe het werkt. Het werkt bitwise. Dus met de eentjes en nulletjes. Kijk maar eens naar dit voorbeeld:

<?php
$format = '(%1$2d = %1$04b) = (%2$2d = %2$04b)'
        . ' %3$s (%4$2d = %4$04b)' . "\n";

echo <<<EOH
 ---------     ---------  -- ---------
 result        value      op test
 ---------     ---------  -- ---------
EOH;


/*
 * Here are the examples.
 */

$values = array(0, 1, 2, 3, 4,5,6,7,8);
$test = 1;

echo "\n Bitwise AND \n";
foreach ($values as $value) {
    $result = $value & $test;
    printf($format, $result, $value, '&', $test);
}
?>

Dit levert:

 ---------     ---------  -- ---------
 result        value      op test
 ---------     ---------  -- ---------
 Bitwise AND 
( 0 = 0000) = ( 0 = 0000) & ( 1 = 0001)
( 1 = 0001) = ( 1 = 0001) & ( 1 = 0001)
( 0 = 0000) = ( 2 = 0010) & ( 1 = 0001)
( 1 = 0001) = ( 3 = 0011) & ( 1 = 0001)
( 0 = 0000) = ( 4 = 0100) & ( 1 = 0001)
( 1 = 0001) = ( 5 = 0101) & ( 1 = 0001)
( 0 = 0000) = ( 6 = 0110) & ( 1 = 0001)
( 1 = 0001) = ( 7 = 0111) & ( 1 = 0001)
( 0 = 0000) = ( 8 = 1000) & ( 1 = 0001)

De & [php]operator[/php] vergelijkt dus op bit niveau of ze gelijk zijn links en rechts. De getallen hierboven hebben voorloopnullen. Zo is 1 gewoon gelijk aan 1. Maar twee is gelijk aan 10. Vanaf 8 zijn er geen voorloopnullen meer. (Zie ook wikipedia.)
Er wordt steeds de laatste bit vergeleken, daardoor heeft 10 (2) niet dezelfde bits als 1 (1) maar 11 (3) wel dezelfde.
Zoals je ziet is het mooi om en om met regelmaat, daarom kan je dit dus voor zebra-tabellen gebruiken.
Edit: Het is hetzelfde principe als met de modulo operator (%). Met de modulo operator kijk je of het getal even of oneven is. Met dit bitwise gedoe, doe je eigenlijk een beetje hetzelfde.
Mooie uitleg Karl :-)

Reageren