PS_CS4 Skrevet 29. desember 2008 Del Skrevet 29. desember 2008 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
BlueEAGLE Skrevet 29. desember 2008 Del Skrevet 29. desember 2008 (endret) 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 29. desember 2008 av BlueEAGLE Lenke til kommentar
PS_CS4 Skrevet 29. desember 2008 Forfatter Del Skrevet 29. desember 2008 Gjorde det slik: <tr style="background: #' . ( @$c++ % 2 == 0 ? '111111' : '222222' ) . '"> https://www.diskusjon.no/index.php?session=...&p=11451539 Lenke til kommentar
BlueEAGLE Skrevet 31. desember 2008 Del Skrevet 31. desember 2008 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. Lenke til kommentar
Jonas Skrevet 31. desember 2008 Del Skrevet 31. desember 2008 (endret) 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 31. desember 2008 av Jonas Lenke til kommentar
Ernie Skrevet 31. desember 2008 Del Skrevet 31. desember 2008 (endret) 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! 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 31. desember 2008 av Ernie Lenke til kommentar
Jonas Skrevet 31. desember 2008 Del Skrevet 31. desember 2008 (endret) 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) Endret 31. desember 2008 av Jonas Lenke til kommentar
Ernie Skrevet 31. desember 2008 Del Skrevet 31. desember 2008 (endret) 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) 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 31. desember 2008 av Ernie Lenke til kommentar
Jonas Skrevet 31. desember 2008 Del Skrevet 31. desember 2008 Helt klart, blir som echo vs. print. Er man ute etter slike ekstremt marginale forskjeller, så kan man like godt hoppe til noe annet enn PHP, da selve det i seg selv er en flaskehals i ytelsessammenheng. Lenke til kommentar
mathias123 Skrevet 1. januar 2009 Del Skrevet 1. januar 2009 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
BlueEAGLE Skrevet 2. januar 2009 Del Skrevet 2. januar 2009 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå