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

olika färg på varannan rad

Rekommendera Poster

swede.anka

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.

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Cechise

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

 

Dela detta inlägg


Länk till inlägg
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)

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Anders N

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]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
zerblat

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

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
swede.anka

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?

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
zerblat

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]

Dela detta inlägg


Länk till inlägg
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.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Cechise

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.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
swede.anka

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?

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
JANspeed

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

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Cechise

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.

 

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...