Hallo,

Ik vroeg mij af hoe mensen het voor elkaar krijgen om met de zoekresultaten de regels met resultaten om en om een verschillende kleur te geven.. bijvoobeeld zwart en grijd, voor een betere leesbaarheid..
Ik ben hier al een hele poss naar op zoek maar kan er weinig over vinden.
Heeft iemand dit ook al eens toegepast? zo ja, hoe kan ik dit het beste aanpakken?

ik laat mijn resulaten nu op de volgende manier zien:

<?php while ($row = mysql_fetch_array($resultaat)) { ?>
<td><?=$row['waarde1'];?></td>
<td><?=$row['waarde2'];?></td>
<td><?=$row['waarde3'];?></td>
<?php } ?>
Dat kan met bijvoorbeeld modulo.

<?php

for ($i = 0; $i < 100; $i++) { // voorbeeld
echo ($i % 2 == 0) ? 'zwart' : 'grijs';
}

?>

% is modulo-operator, zie php.net
ok... :) ik snap niet echt hoe er om en om verwezen wordt naar de resultaten.. :)
In css:

li.bg0 {
    background-color: #FFF9BF;
}
li.bg1 {
    background-color: #FFEF5E;
}


en dan in php:
<?php
$n = 0;
echo '<ul>';

// Een loop waaruit de verschillende rijen rollen.
for($i = 1; $i <= 5; $i++)
{
$n ^= 1;
echo '<li class="bg'.$n.'">Rij '.$i.'</li>'.PHP_EOL;
}
echo '</ul>';
?>

Dit is een voorbeeld voor een lijst met behulp van de <li> tag, maar je kunt dit natuurlijk op alle soorten tags toepassen.

Een werkend voorbeeldje vind je hier.
Ik heb het nu zo:
Maar hij geeft alleen een grijze achtergrond terug.. (gray)
Mis ik nog een stukje of is er wat anders aan <tr> ten opzichte van <ul> en <li>?

<style>
tr.bg0 {
    background-color: black;
}
tr.bg1 {
    background-color: gray;
} 
</style>
<table width="660" border="0" align="center" cellpadding="0" cellspacing="1">
    <?php
        $n = 0;
        // Een loop waaruit de verschillende rijen rollen.
        for($i = 1; $i <= 5; $i++)
        {
            $n ^= 1;
            echo '<tr class="bg'.$n.'">'.PHP_EOL;
        }
        
?> 
<?php while ($row = mysql_fetch_array($resultaat)) { ?>
<td><?=$row['waarde1'];?></td>
<td><?=$row['waarde2'];?></td>
<td><?=$row['waarde3'];?></td>
<?php } ?> 
</tr>

zie ik nou goed dat $n op 1 wordt gezet, maar vervolgens niet terug op 0?
Nu loop je eerst door je for en dan door je while, je HTML is nu dus ook een puinhoop!

combineer de for met de while.

Hij wordt niet op 1 gezet, er wordt een XOR bewerking uitgevoerd.
Effe voor de mensen die xor niet snappen:

xor is een EXCLUSIVE OR, dus:

0 xor 0 = 0
1 xor 0 = 1
1 xor 1 = 0
0 xor 1 = 1

in PHP schrijf je xor als ^

dus:

$n ^= 1;

betekent:

$n = $n ^ 1;

en dan krijg je bovenstaand verhaaltje

en dus krijg je:

0 (nul)
1
0 (nul)
1
0 (nul)
1

dit is dus wel allemaal bitwise. dus niet zomaar met integers doen want dan moet je eerst kijken wat die integers binair (binaire stelsel dus) zijn.

[edit]mn nullen vallen weg op dit forum, bugje? ik heb er maar "(nul)" achter gezet[/edit]
Je bedoelt zo Boaz? Dit heb ik nu, en hij geeft nog steeds 1 kleur..

<style>
tr.bg0 {
    background-color: black;
}
tr.bg1 {
    background-color: gray;
} 
</style>
<table width="660" border="0" align="center" cellpadding="0" cellspacing="1">
    <?php
<?php while ($row = mysql_fetch_array($resultaat)) { ?>
        $n = 0;
        // Een loop waaruit de verschillende rijen rollen.
        for($i = 1; $i <= 5; $i++)
        {
            $n ^= 1;
            echo '<tr class="bg'.$n.'">'.PHP_EOL;
        }
        
?> 

<td><?=$row['waarde1'];?></td>
<td><?=$row['waarde2'];?></td>
<td><?=$row['waarde3'];?></td>
<?php } ?> 
</tr> 
</table>
@Wout, niet letterlijk kopieren ook zelf even nadenken!

Sowieso staat je css al op een verkeerde plaats, dat hoort tussen de <head> tags in je html code. Vervolgens geef je in css twee klasses aan die toepasbaar zijn op een <tr> maar verder in je code gebruik je nergens meer een <tr>.

Daarnaast hoort die for-loop uit mijn voorbeeld natuurlijk niet meer in jouw code thuis. Dat is alleen maar bedoeld als voorbeeld. Wat in mijn voorbeeld de for-loop is, komt bij jou overeen met je while-loop...
JEej ik heb em nu!

Ik had een site gevonden ;
http://www.yapf.net/Articles/articleview/845

Daar heb ik me een beetje in verdiept en dit is het resultaat:

<?php

if (@$iT == '0') {
$iT = '1';
} else {
$iT = '0';
}

echo '<tr bgcolor='.(@$iT%2 ? '#FFFFFF' :'#F7F7F7').'>'.PHP_EOL;

?>

bedankt!!

Reageren