Avatar billede overgreat Forsker
21. juli 2005 - 19:56 Der er 13 kommentarer og
1 løsning

Hvordan laver man hver anden tabellinie grå

Hej

Hvordan løser jeg det problem at jeg ønsker at lave hver anden linie grå i nedenstående php-udtræk?

------------

<table cellspacing="2" cellpadding="2" width="570">

<tr>
      <td><b>Nummer</b></td>
      <td><b>Mærke</b></td>
      <td><b>Model</b></td>
      <td><b>Type</b></td>
      <td><b>Variant</b></td>
      <td><b>Pris</b></td>
      <td><b>Km</b></td>
     
</tr>
<tr>
<TD colspan="8"><HR width="570%">
</td>
</tr>




<?
if($_GET['up'] == "ja"){
    include("config.php");
    $db = mysql_connect($server, $user, $pass);
    mysql_select_db($database, $db);

$where=array();
    if($_POST['maerke']!='1')
    {
        $where[]="bil_bil.maerke='".$_POST['maerke']."'";
    }
    if($_POST['model']!='1')
    {
        $where[]="bil_bil.model='".$_POST['model']."'";
    }
    if($_POST['type']!='1')
    {
        $where[]="bil_bil.type='".$_POST['type']."'";
    }
    if($_POST['variant']!='1')
    {
        $where[]="bil_bil.variant='".$_POST['variant']."'";
    }

    $foresp = mysql_query("SELECT bil_bil.id, bil_bil.pris, bil_bil.km, bil_farve.farve AS farve1, bil_bil.maerke, bil_bil.model, bil_bil.type, bil_bil.variant, bil_model.model AS model1,  bil_maerke.maerke AS maerke1, bil_type.type AS type1, bil_variant.variant AS variant1
      FROM bil_bil
      LEFT JOIN bil_maerke ON bil_maerke.id = bil_bil.maerke
      LEFT JOIN bil_farve ON bil_farve.id = bil_bil.farve
      LEFT JOIN bil_model ON bil_model.id = bil_bil.model
      LEFT JOIN bil_type ON bil_type.id = bil_bil.type
      LEFT JOIN bil_variant ON bil_variant.id = bil_bil.variant
     

      ".(count($where)?"WHERE ".implode(" AND ",$where):"")."
      ORDER BY bil_bil.maerke desc
    ");

    while ($data = mysql_fetch_array($foresp))
{
    echo "<tr><td><a href='visbil.php?id=".$data['id']."target='_top'>".$data['id']."</a></td><td><div align='left'><a href='visbil.php?id=".$data['id']."target='_top'>".$data['maerke1']."</a></td><td><a href='visbil.php?id=".$data['id']."target='_top'>".$data['model1']."</a></td><td><a href='visbil.php?id=".$data['id']."target='_top'>".$data['type1']."</a></td><td><a href='visbil.php?id=".$data['id']."target='_top'>".$data['variant1']."</a></td><td><div align='right'><a href='visbil.php?id=".$data['id']."target='_top'>".$data['km']."</a>&nbsp;km</div></td><td><div align='right'><a href='visbil.php?id=".$data['id']."target='_top'>".$data['pris']."</a>&nbsp;kr.</div></div></td></tr>";
}
}
?>
</tr>
</table>

<br></center>

</td>
</tr>
</table>
Avatar billede nielle Nybegynder
21. juli 2005 - 20:02 #1
F.eks. sådan her:

$RowNo = 0;
while ($data = mysql_fetch_array($foresp))
{
    $RowNo++;
    $bgColor = ($RowNo % 2 == 0) ? "gray" : "white";
    echo "<tr style='background-color: $bgColor'><td><a href='visbil.php?id=".$data['id']."target='_top'>".$data['id']."</a></td><td><div align='left'><a     href='visbil.php?id=".$data['id']."target='_top'>".$data['maerke1']."</a></td><td><a     href='visbil.php?id=".$data['id']."target='_top'>".$data['model1']."</a></td><td><a     href='visbil.php?id=".$data['id']."target='_top'>".$data['type1']."</a></td><td><a     href='visbil.php?id=".$data['id']."target='_top'>".$data['variant1']."</a></td><td><div align='right'><a     href='visbil.php?id=".$data['id']."target='_top'>".$data['km']."</a>&nbsp;km</div></td><td><div align='right'><a     href='visbil.php?id=".$data['id']."target='_top'>".$data['pris']."</a>&nbsp;kr.</div></div></td></tr>";
}
Avatar billede olebole Juniormester
21. juli 2005 - 20:03 #2
<ole>

I princippet:

$res = [MYSQL_QUERY]
$inx = 0;
$str = "";
while ($row=mysql_fetch_assoc($res)) {
  $bg = ($inx%2==0)? "#ffffff" : "#ff0000";
  $str .= "<tr style=\"background-color:".$bg."\"> .... og en masse andet .... </tr>";
  $inx++;
}
echo $str;

/mvh
</bole>
Avatar billede nielle Nybegynder
21. juli 2005 - 20:04 #3
"grey" i stedet for "gray".
Avatar billede olebole Juniormester
21. juli 2005 - 20:05 #4
- og læg mærke til, at jeg har rettet din begynderfejl med at udskrive HTML i en løkke. Det er en elendig fremgangsmåde i stort set alle sprog og bør _altid_ undgåes!

I stedet skriver man til en buffer, der skrives ud én gang  ;o)
Avatar billede overgreat Forsker
21. juli 2005 - 20:29 #5
Hej Nielle

Det virker!

Sender du et svar

Tak for hjælpen!
Avatar billede nielle Nybegynder
21. juli 2005 - 20:30 #6
Svar :^)
Avatar billede olebole Juniormester
21. juli 2005 - 20:33 #7
overgreat >> Forstod du, du skriver dårlig kode ... og forstod du, hvad du skal gøre for at rette det?
Avatar billede nielle Nybegynder
21. juli 2005 - 20:47 #8
For the record - enig med ole mht. performance. :^)
Avatar billede hmortensen Nybegynder
21. juli 2005 - 23:47 #9
En lille side bemærking ang. performance:
Vil det ikke kræve mindre at bruge inventéring ?
$i = 0;
while (1)
{
  $bg = ($i) ? "111111" : "222222";
  $i = !$i;
}
Avatar billede olebole Juniormester
22. juli 2005 - 00:09 #10
hmortensen >> Hvis vi skal være logiske, hvad er så negationen af 0?  :)

Den eneste grund til, det virker, er PHP's sloppiness. For det første tror jeg ikke, det er hurtigere - for det andet savner det enhver logik  :)
Avatar billede hmortensen Nybegynder
22. juli 2005 - 02:04 #11
Så vidt jeg ved, virker det i alle sprog.
Og logikken: digitalteknik, som programmering bygger på.
Avatar billede olebole Juniormester
22. juli 2005 - 03:10 #12
tja ... kalder du det logik, så ......  :)

Gad vide, hvorfor nogen overhovedet har kunnet få den tossede tanke at forurene logikken bag programmering med tåbeligheder som brugen af true og false  ;o)

Sprog som PHP bygger jo netop på en sproglig repræsentation af maskinkoden. Hele meningen med den slags sprog er at abstrahere fra digital maskinkode. Så giver det efter min mening ikke den store mening at skulle søge i digital maskinkode for at finde logikken i sproglige konstruktioner ... men sådan er vi jo så forskelligt skruet sammen  :)

Desuden er 0 ikke det samme som false i PHP - og 1 ikke det samme som true .... så nej, jeg kan ikke med bedste vilje se logikken.
Avatar billede sukos Juniormester
22. juli 2005 - 06:23 #13
Der er noget jeg ikke forstår:
At samle alt output til en streng skulle være bedre end at ouput'te en lille, så længe der er noget som skal outputtes?
Hvorfor skulle det være bedre? Samle i en buffer? Vil det ikke blot i sidtse ende være mere krævende af hardwaren?

Og så lige:
Det er vel ikke meget forkert at tjekke om en værdi er true hvis den er sat til 1
Og false hvis den er 0?
Avatar billede overgreat Forsker
22. juli 2005 - 09:30 #14
Hej Ole bole

Jeg er ikke helt med hvad det er der er så skidt med koden...... er det fordi det går langsommere når det skal læses af brugeren?
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