Just nu i M3-nätverket
Jump to content

olika färg på varannan rad


swede.anka

Recommended Posts

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.

 

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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)

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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";
}

 

Link to comment
Share on other sites

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?

 

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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?

 

Link to comment
Share on other sites

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

 

 

Link to comment
Share on other sites

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.

 

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...