Just nu i M3-nätverket
Gå till innehåll

olika färg på varannan rad


swede.anka

Rekommendera Poster

Jag ska presentera en databas med php i ett <table> där jag vill ha varannan rad t.ex. grå och varannan vit. Någon som har ett tips på hur jag åstadkommer detta?

 

Jag vet att man färgsätter bakgrunden med kommandot

<TR BGCOLOR="blue"></TR>

men då får jag ju varje rad blå och jag vill ju bara ha varannan.

 

Jag vet att i VB finns ju komandot "alternatingbackcolor" och jag tänkte om det fanns något liknande i HTML/PHP.

 

 

Länk till kommentar
Dela på andra webbplatser

Jag brukar använda en if-sats i samband med att jag skriver ut raderna.

 

[color="#0000ff"]if[/color]($i){[color="#0000ff"]echo[/color]("<tr [color="#0000ff"]class[/color]=\"row1\">");$i=0;}[color="#0000ff"]else[/color]{[color="#0000ff"]echo[/color]("<tr [color="#0000ff"]class[/color]=\"row2\">");$i=1;}

 

Kanske lite bökit men det funkar.

 

 

 

/cec

 

 

***NEJ TILL MJUKVARUPATENT***

Använder du en dator? i sånna fall angår detta DIG!

Det är upp till dig! EU beslutar i höst.

 

http://www.ffii.se

 

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon
Kanske lite bökit men det funkar.

 

Nä,det är inte bökigt, det är så man ska göra (alternativt använda modulo för att ändra värdet på switch-variabeln, istället för att explicit sätt den till 1 och 0)

 

Länk till kommentar
Dela på andra webbplatser

Eller använda not (a=!a), eller xor.

 

Ciao,

Anders

- som hittills är totalnybörjare på php

 

[inlägget ändrat 2004-07-18 13:07:10 av Anders N]

Länk till kommentar
Dela på andra webbplatser

Ytterligare ett alternativ är att gömma allt i en klass:

 

[color="#0000ff"]class[/color] Alternating {
    [color="#0000ff"]var[/color] $alternatives;
    [color="#0000ff"]var[/color] $index;

    [color="#0000ff"]function[/color] Alternating()
    {
        $this->alternatives = [color="#ff0000"]func_get_args[/color]();
        $this->index = 0;
    }

    [color="#0000ff"]function[/color] getnext()
    {   
        $ret = $this->alternatives[$this->index];
        $this->index++;
        $this->index %= [color="#ff0000"]sizeof[/color]($this->alternatives);
        [color="#0000ff"]return[/color] $ret;
    }      
} 

 

Sen kan man göra typ:

 

$alternating = [color="#0000ff"]new[/color] Alternating('class1', 'class2', 'class3');

[color="#0000ff"]for[/color] ($i = 0; $i < 100; $i++)
{
    [color="#0000ff"]echo[/color] '<tr [color="#0000ff"]class[/color]="' . $alternating->getnext() . '">' . $massa_innehall .
    "</tr>\n";
}

 

Länk till kommentar
Dela på andra webbplatser

jag är lite osäker på var jag ska anväda koden och om den måste anpassas till min kod.

 

jag skrev så här:

 

$i=0;

 

 

while($rad = mysql_fetch_array($resultat3))

{

// *************början förslags kod********

if($i)

{

echo("<tr class=\"row1\">");

$i=0;

}

else

{

echo("<tr class=\"row2\">");

$i=1;

}

// *************slut förslagskod**********

 

print("<td>");

print($rad["ab_namn"]);

print("</td></TR>");

}

 

först deklarerade jag inte variabeln $i och då fick jag felmedelande om att den inte var deklarerad så därför satte jag den till 0.

Nu flyter koden utan felmedelanden men det blir inte olika färger.

 

Var skriver jag in vilka färger jag vill använda och har jag klistrat in koden rätt?

 

 

Länk till kommentar
Dela på andra webbplatser

Du måste definiera CSS-klasserna row1 och row2.

 

Jag föredrar att definera CSS i en separat fil:

 

<!DOCTYPE html PUBLIC "-[color="#006400"]//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">[/color]
<head>
<[color="#ff0000"]link[/color] rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
.....
</body>
</html>

och sen skapa filen style.css:

tr.row1: { background-color: [color="#006400"]#bbb }[/color]
tr.row2: { background-color: [color="#006400"]#eee }[/color]

[inlägget ändrat 2004-07-18 17:53:36 av zerblat]

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon
eller xor.

 

Jepp, det var XOR jag tänkte på för alterneringen mellan 1 och 0.

n Modulo 2=0 använder man om man vill inkrementera räknaren.

 

Länk till kommentar
Dela på andra webbplatser

Eller så kan du göra det direkt i html-filen:

 

<style type="text/css">
.row1{
    backround-color: [color="#006400"]#000000;[/color]
}
.row2{
    backround-color: [color="#006400"]#EEEEEE;[/color]
}
</style>

 

men det är att föredra att ha det i en separat css-fil.

 

Länk till kommentar
Dela på andra webbplatser

Jag har suttit och läst samtliga förslag här och fastnade mest för Cechise förslag men tyckte ändå att det verkade lite omständigt med klasser m.m. så jag kom på ett lite anorlunda sätt.

 

jag skrev då följande i en loop som fungerade.

 

if($i==0)

{print("<TR bgcolor='#eeeeee'>");$i=1;}

else

{print("<TR bgcolor='white'>");$i=0;}

 

ingen verkar ha kommit med liknande förslag utan alla verkar vara inne på att man ska köra med klasser.

 

är det någon nackdel med min kod?

 

Länk till kommentar
Dela på andra webbplatser

Sysslar mest med ASP så syntaxen kanske inte är så correct men jag skulle nog skrivit mer så här:

 

if($color == "#eeeeee")

{color = "#ffffff";}

else

{color = "#eeeeee";}

 

<tr bgcolor="<? print("") /?>" yadayada="osv..." >

 

Då slipper du printa alla raderna om igen varenda gång och vill du använda samma färg någon annanstans så har du ju färgen i en variabel. Obs dock. Att om du vill att radfärgningen ska vara så kompatibel som möjligt med gamla browsers så bör du dock lägga färgkodningen i <td>-taggen istället. Kan dock vara lite jobbigt att färgkoda varenda TD.

 

/Janspeed

 

 

Länk till kommentar
Dela på andra webbplatser

En klar fördel är ju som janspeed säger att du bara behöver ändra på ett ställe så ändras det överallt där du har använt klassen utan att du behöver gå in å ändra på varje ställe. Ska du bara ändra färg på ett ställe spelar det kanske inte så stor roll. Men tänk dig att du även skulle ställa in kantlinjer, höjd, radavstånd etc. Då skulle det blir betydligt mer text inne i din echo() vilket skulle innebära mer text, längre rad, mer hartassar och större risk för fel.

 

Att använda css och ha den separat gör det enklare att göra ändringar över en hel site och gör det också mer överskådligt.

 

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...