Avatar billede gedekid Nybegynder
26. januar 2005 - 13:20 Der er 19 kommentarer og
1 løsning

forskellig baggrundsfarve en en table fra sql udtræk

Hej,

Igen et lille problem jeg har.

Hvorledes kan man lave én baggrundfarve på den første række man trækker ud fra MySQL og så række 2 en anden og række 3 en tredje.

f.eks
<tr>
<td bgcolor="CCCCCC">række1</td>
</tr>
<tr>
<td bgcolor="E7E7E7">række2</td>
</tr>
<tr>
<td bgcolor="FFFFFF">række3 og andre</td>
</tr>
Avatar billede tigertool Nybegynder
26. januar 2005 - 13:38 #1
Jeg benytter ofte:

$color = ($i++ % 2==0 ? "#FFFFFF" : "#E0E0E0");
Avatar billede tigertool Nybegynder
26. januar 2005 - 13:40 #2
Eksempel:

$result = mysql_query("SELECT * FROM mintabel;");
$i = 0;

while ($row = mysql_fetch_row($result))
{
    $color = ($i++ % 2==0 ? "#FFFFFF" : "#E0E0E0");
    //Benyt $color som bgcolor i td
}
Avatar billede tigertool Nybegynder
26. januar 2005 - 13:41 #3
En anden mulighed er at benytte en int som tælles op pr række og regne sig frem til en farve.
Avatar billede gedekid Nybegynder
26. januar 2005 - 13:48 #4
Det er nemlig noget i den dur!

Altså f.eks:
række 1 er grøn
række 2 er rød
række 3-10 er hvid
række 11-12 er sort
Avatar billede tigertool Nybegynder
26. januar 2005 - 13:51 #5
Jeg skrev lige følgende kode:

<table width=400>
<?
for ($i = 0; $i < 5; $i++)
{
        $str = $i / 3;

        list($start, $slut) = split(".", $str, 2);

        if ($slut == "")
        {
                $color = "red";
        }
        else if ($slut[1] == "3")
        {
                $color = "green";
        }
        else if ($slut[1] == "6")
        {
                $color = "blue";
        }

        echo "<tr><td bgcolor=".$color.">?</td></tr>";
}
?>
</table>

Koden er ikke ligefrem "pæn kode" - men det virker trods alt.

Kan du bruge noget af ovenstående?
Avatar billede gedekid Nybegynder
26. januar 2005 - 14:11 #6
Koden virker faktisk med copy-paste som jeg vil ha' det, men ikke lige til det kode jeg selv har skrevet:

   
    while ($row = mysql_fetch_array($result)) {
?>       

    <tr>
        <td bgcolor="<?php print $color; ?>"><?php print $row['team']; ?></td>
        <td bgcolor="<?php print $color; ?>"><?php print $row['matches']; ?></td>
        <td bgcolor="<?php print $color; ?>"><?php print $row['won']; ?></td>
        <td bgcolor="<?php print $color; ?>"><?php print $row['draw']; ?></td>
        <td bgcolor="<?php print $color; ?>"><?php print $row['lost']; ?></td>
        <td bgcolor="<?php print $color; ?>"><?php print $row['goalsf']; ?></td>
        <td bgcolor="<?php print $color; ?>"><?php print $row['goalsa']; ?></td>
        <td bgcolor="<?php print $color; ?>"><?php print $row['goaldif']; ?></td>
        <td bgcolor="<?php print $color; ?>"><?php print $row['points']; ?></td>
    </tr>
<?
}
mysql_close();
?>
Avatar billede gedekid Nybegynder
26. januar 2005 - 14:14 #7
Kan lige tilføjes at den skal gøre det samme hvadenten der er 10 rækker eller 28
Avatar billede tigertool Nybegynder
26. januar 2005 - 14:17 #8
Jeg forstår ikke lige hvad du vil have så?

BTW du behøver ikke skrive <?php print $color; ?> - du kan nøjes med <?=$color?>
Avatar billede tigertool Nybegynder
26. januar 2005 - 14:18 #9
Skal $color være ens for alle de 9 td'er du har skrevet længere oppe?
Avatar billede gedekid Nybegynder
26. januar 2005 - 14:21 #10
Præcis som denne her faktisk:

http://sportsresultater.tv2.dk/index.php?resmenu&g=s&stats=true&tp=all&lid=1

Skulle ha' jeg smidt ind fra starten! Sorry.

Selve tabellen virker upåklageligt. Det er blot lige det med farverne
Avatar billede tigertool Nybegynder
26. januar 2005 - 14:23 #11
Den øverste eller nederste?
Avatar billede gedekid Nybegynder
26. januar 2005 - 14:24 #12
Den øverste.

Selve placeringstabellen
Avatar billede tigertool Nybegynder
26. januar 2005 - 14:25 #13
Ok. Nu er jeg ikke så meget inde i sport, men kan man opsætte en gyldenregel, altså:

1. plads: rød
2. plads: gul

anden sidste plads: grøn
sidste plads: blå

og alle imellem er hvide?

Eller sådan noget?
Avatar billede gedekid Nybegynder
26. januar 2005 - 14:27 #14
Jeps... Lige præcis

Så at man kan se at nummer 1 bliver mester (grøn)
nummer 2 og 3 skal spille europæiske turneringer (orange). De 2 sidste rykker ned (rød) og resten derimellem er blot placeret (hvide)
Avatar billede tigertool Nybegynder
26. januar 2005 - 14:28 #15
Hvis det altid er sådan så kan det forholdsvis kodes simpelt.
Avatar billede gedekid Nybegynder
26. januar 2005 - 14:31 #16
Den skal nemlig altid fungere således, men i f.eks. den danske lige er der 12 hold og i den engelske er der 20 hold, men stadig det samme for 1 - 2 & 3 og andensidste og sidste
Avatar billede tigertool Nybegynder
26. januar 2005 - 14:32 #17
<table width=400>
<?

$i = 1;

$antal = 24;

$j = 0;
while ($j < $antal)
{
        if ($i == 1)
        {
                $color = "green";
        }
        else if ($i == 2 ||$i == 3)
        {
                $color = "orange";
        }
        else if ($i == $antal - 1 || $i == $antal)
        {
                $color = "red";
        }
        else
        {
                $color = "#EEEEEE";
        }

        echo "<tr><td bgcolor=".$color.">?</td></tr>";
        $j++;
        $i++;
}
?>
</table>

Prøv at ændre $antal
Avatar billede tigertool Nybegynder
26. januar 2005 - 14:34 #18
$j bruges kun til at skabe en løkke med. Hvis du poster dit source, kan jeg god rette det til.
Avatar billede gedekid Nybegynder
26. januar 2005 - 14:43 #19
AWESOME work tigertool :)

Det virker perfekt!!! Mange takker!
Smid lige et svar så er der point til dig!
Igen! Mange tak!
Avatar billede tigertool Nybegynder
26. januar 2005 - 14:45 #20
Var så lidt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester