Gå til innhold

Farge på annen hver rad i tabell


Anbefalte innlegg

Jeg skal ha farge på annenhver rad i tabellen, i denne koden:

 

echo "
<tr>
<td>$car</td>
<td>$row[skade]%</td>
<td>$row[sted]</td>
<td>$value_car_multiply</td>
<td>fraktet</td>
<td><input type='checkbox' name=\"$row[id]\" style=\"padding:5px;\"></td>
</tr>";

 

Hvordan får jeg til det?

Lenke til kommentar
Videoannonse
Annonse

Det er flere måter å gjøre dette på.

 

Det som krever færrest resurser er nok å sette et flagg.

 

<?php
$use_color=true;
while($row = mysql_fetch_array($result))
{
 if($use_color)
 {
echo "<tr class=with_color>";
$use_color=false;
 }
 else
 {
echo '<tr class=without_color>';
$use_color=true;
 }
 /*resten av tabellraden setter du inn her*/
}
?>

Dette forutsetter selvfølgelig at du har definert with_color og without_color i stilsettet ditt.

 

Vær også oppmerksom på at $row[skade] ikke er korrekt syntakse med mindre du har definert en konstant ved navn skade. Rett syntakse er $row['skade']. For å interpolere den i en annen streng med gåseøyne bruker du krølleparentheser slik: echo "<td> {$row['skade']}</td>";

Endret av BlueEAGLE
Lenke til kommentar

Hvorfor i all verden skal vi ikke diskutere kodestil? Metoden din er elendig, da du skriver tilnærmet identisk kode to ganger, samt at det opptar unødvendig mange linjer. Du kan gjøre det på en fin og elegant måte, uten modulo. (Nøkkelen i eksempelet er at å tilegne en variabel en verdi returnere verdien som ble tilegnet.)

 

<?php

$array = range ( 1, 5 );

//foreach ( $array as $element )
//	echo ( $c++ % 2 == 0 ? 'odd' : 'even' ) . '<br />';

$odd = false;

foreach ( $array as $element )
	echo ( ( $odd = !$odd ) ? 'odd' : 'even' ) . '<br />';

foreach ( $array as $element )
	echo ( ( $odd ^= 1 ) ? 'odd' : 'even' ) . '<br />';

?>

Endret av Jonas
Lenke til kommentar
husk at modulo-operasjoner krever flere klokkesykluser enn det å sjekke en boolean..

...så skal vi ikke begynne å diskutere stiler inne i html eller (enda verre) php-kode. ;)

Gud hjelpe meg, det er jo maks krise! :ohmy:

 

Altså, seriøst, det der er garantert neglisjerbart. Hvis du skal klage over slikt så burde du huske på at du bruker mysql_query_array i eksemplet ditt. Den henter ut både en assosiativ og en numerisk indeksert array. Det sløser garantert betydelig mye mer med klokkesyklysene enn modulo vs. bool, og det under forutsettning at du faktisk har rett i antagelsen, noe jeg er langt fra sikker på.

 

Red.: Ja, og det er såklart før vi nærmer oss det faktum at du dupliserer kode.

Endret av Ernie
Lenke til kommentar
Han har rett i at en modulo-operasjon er mer krevende enn en boolean sjekk. Modulo innebærer så mye som absoluttverdi av float, divisjon, multiplikasjon og subtraksjon. (gitt av det regnes ut på det måten naturligvis)

 

7f11ee9a2cda3c1e8a5616af7923d5b8.png

Nå tar jeg ikke ting helt ut av løse lufta jeg heller da. Jeg gjorde en kjapp praktisk test og forskjellen er minimal, også relativt. Det er forskjell på teori og praksis, og uannsett var poenget mitt at forskjellen vil være minimal, i dette tilfellet av en størrelsesorden rundt 0.1µs i favør modulo (under forutsettning at man predefinerer variablen og fjerner @ ). Påstå gjerne at det er en betydelig forskjell, men da forventer jeg litt mer enn bare løse påstander før jeg tror på de.

Endret av Ernie
Lenke til kommentar

Om du skal spytte ut mange rader kan du jo skrive en klasse for det:

 

class fargePaaRad() {

public $rad1farge, $rad2farge;
public $step = 0;

function fargePaaRad($rad1 = "#000", $rad2 = "#fff") {
$this->rad1farge = $rad1;
$this->rad2farge = $rad2;
}

function farge() {
if($this->step = 0) {
print($this->rad1farge);
$this->step = 1;
} elseif($this->step = 1) {
print($this->rad2farge);
$this->step = 0;
}

}
}

 

Når du skal lage tabellen skriver du bare

 

$farge = new FargePaaRad($farge1, $farge2);

 

så i <td>

 

<td color="<? $farge->farge(); ?>" />

Lenke til kommentar

Jees... Det var da voldsomt til oppstyr da. Ironi er en fin bil og sånn.

 

Det verste med det han gjør er å bruke en in-line style på fargen på raden, her burde det vært brukt css, bortsett fra det så er resten neglisjerbart. Trodde blunkefjeset var nok til å angi ironi, men jeg får begynne å bruke <span class="ironi"> fremover...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...