Avatar billede overgreat Forsker
24. juli 2005 - 16:46 Der er 9 kommentarer og
1 løsning

udskrive hveranden linie som grå

Jeg har i nedenstående ouput, lavet det sådan at hver anden linie skal være grå..... men da nogle biler bliver solgt udgår de af resultatet. Dermed ødelægger det systemet med at hver anden er grå og de andre er hvide..........

Kan det ikke afhjælpes på en måde.

På forhånd tak.
----------
<?
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[prisvalg] != '1')
{
$where[] = "bil_pris.id = '" . $_POST[prisvalg] . "'";
}
if ($_POST[kmvalg] != '1')
{
$where[] = "bil_km.id = '" . $_POST[kmvalg] . "'";
}
    $foresp = mysql_query("
    SELECT bil_bil.km, bil_bil.pris, bil_bil.id, 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, bil_bil.sold
      FROM bil_bil
      LEFT JOIN bil_maerke ON bil_maerke.id = bil_bil.maerke
      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
      INNER JOIN bil_pris ON (bil_pris.low IS NULL OR bil_bil.pris >= bil_pris.low) AND (bil_pris.high IS NULL OR bil_bil.pris <= bil_pris.high)
INNER JOIN bil_km ON (bil_km.low IS NULL OR bil_bil.km >= bil_km.low) AND (bil_km.high IS NULL OR bil_bil.km <= bil_km.high)


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

  $RowNo = 0;
while ($data = mysql_fetch_array($foresp))
{
    $RowNo++;
    $bgColor = ($RowNo % 2 == 0) ? "#e6e6e6" : "white";
   
if (is_null($data['sold']))   
   
{   
   
    echo "<tr style='background-color: $bgColor'><td><a href='visbil.php?id=".$data['id']."'><center>".$data['id']."</center></a></td><td><div align='left'><a    href='visbil.php?id=".$data['id']."'>".$data['maerke1']."</a></td><td><a    href='visbil.php?id=".$data['id']."'>".$data['model1']."</a></td><td><a    href='visbil.php?id=".$data['id']."'>".$data['type1']."</a></td><td><a    href='visbil.php?id=".$data['id']."'>".$data['variant1']."</a></td><td><a    href='visbil.php?id=".$data['id']."'><div align='right'>".$data['km']."&nbsp;km</div></a></td><td><a    href='visbil.php?id=".$data['id']."'><div align='right'>".$data['pris']."&nbsp;kr.</div></a></div></td></tr>";
}
else{}}
}
?>
Avatar billede olebole Juniormester
24. juli 2005 - 17:51 #1
<ole>

Jeg forstår ikke spørgsmålet. Hvad skulle det betyde, en bil bliver solgt? Så optræder den vel ikke i resultatet - og kan derfor ikke påvirke det  :)

/mvh
</bole>
Avatar billede Slettet bruger
24. juli 2005 - 20:04 #2
Mon det her er noget du kan bruge?

<?
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[prisvalg] != '1')
{
$where[] = "bil_pris.id = '" . $_POST[prisvalg] . "'";
}
if ($_POST[kmvalg] != '1')
{
$where[] = "bil_km.id = '" . $_POST[kmvalg] . "'";
}
    $foresp = mysql_query("
    SELECT bil_bil.km, bil_bil.pris, bil_bil.id, 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, bil_bil.sold
      FROM bil_bil
      LEFT JOIN bil_maerke ON bil_maerke.id = bil_bil.maerke
      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
      INNER JOIN bil_pris ON (bil_pris.low IS NULL OR bil_bil.pris >= bil_pris.low) AND (bil_pris.high IS NULL OR bil_bil.pris <= bil_pris.high)
INNER JOIN bil_km ON (bil_km.low IS NULL OR bil_bil.km >= bil_km.low) AND (bil_km.high IS NULL OR bil_bil.km <= bil_km.high)


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

  $RowNo = 0;
while ($data = mysql_fetch_array($foresp))
{
   
if (is_null($data['sold']))   
   
{   
    $RowNo++;
    $bgColor = ($RowNo % 2 == 0) ? "#e6e6e6" : "white";
 
    echo "<tr style='background-color: $bgColor'><td><a href='visbil.php?id=".$data['id']."'><center>".$data['id']."</center></a></td><td><div align='left'><a    href='visbil.php?id=".$data['id']."'>".$data['maerke1']."</a></td><td><a    href='visbil.php?id=".$data['id']."'>".$data['model1']."</a></td><td><a    href='visbil.php?id=".$data['id']."'>".$data['type1']."</a></td><td><a    href='visbil.php?id=".$data['id']."'>".$data['variant1']."</a></td><td><a    href='visbil.php?id=".$data['id']."'><div align='right'>".$data['km']."&nbsp;km</div></a></td><td><a    href='visbil.php?id=".$data['id']."'><div align='right'>".$data['pris']."&nbsp;kr.</div></a></div></td></tr>";
}
else{}}
}
?>
Avatar billede Slettet bruger
24. juli 2005 - 20:05 #3
olebole: De ikke solgte biler bliver, af en eller anden grund, først sorteret fra i løkken, i stedet for at gøre det i MySQL querien. :)
Avatar billede nielle Nybegynder
24. juli 2005 - 20:22 #4
Den rigtige løsning må da være at sørge for at de solgte biler slet ikke kommer med i database udtrækket:

$where = array();
if ($_POST['maerke'] != '1') $where[] = "bil_bil.maerke='" . $_POST['maerke'] . "'";
if ($_POST['model']!='1') $where[] = "bil_bil.model='" . $_POST['model'] . "'";
if ($_POST[prisvalg] != '1') $where[] = "bil_pris.id = '" . $_POST[prisvalg] . "'";
if ($_POST[kmvalg] != '1') $where[] = "bil_km.id = '" . $_POST[kmvalg] . "'";
$where[] = "sold IS NULL";
Avatar billede Slettet bruger
24. juli 2005 - 21:31 #5
Jep, men mit bud vil jeg mene gør præcis hvad der bliver bedt om - det var derfor jeg ikke ændrede i querien ;o)
Avatar billede nielle Nybegynder
24. juli 2005 - 21:40 #6
Seriøst wicez, din metode behandler jo blot symptomerne.

Selvom den rent faktisk løser problemet som det er formuleret i dette tilfælde, vil jeg til enhver tid argumentere for at problemet skal løses ved roden. Og riden er i dette tilfælde selve SQL-kaldet som skal udtrække det der er brug for, og hverken mere eller mindre.

Jeg vil også argumentere for at dette giver en PHP-kode som er både mere logisk og mere simpel og derfor også nemmere at vedligeholde.
Avatar billede Slettet bruger
24. juli 2005 - 22:51 #7
Jeg kan kun give dig ret, og jeg ville til hver en tid vælge den løsning du har fremlagt. Der er ingen grund til, at lave det mere besværligt i php, hvis det kan laves allerede i MySQL'en.

Grunden til at jeg, i modsætning til hvad jeg selv ville gøre, rettede php'en så den nu gør hvad den er tiltænkt er, at jeg ud fra overgreats kode vil vurdere, at han er en smule ny indenfor php, og måske har lettere ved at forstå en lille ændring i php-scriptet, end en ændring i MySQL-querien.
Avatar billede henrik6666 Nybegynder
24. juli 2005 - 23:15 #8
Den her lille stump kode har jeg flittigt benyttet :-)

http://mbn.dk/?aid=22
Avatar billede overgreat Forsker
25. juli 2005 - 11:02 #9
wices det virker din ide.....tak for hjælpen.
Avatar billede Slettet bruger
25. juli 2005 - 11:34 #10
Selv tak. Dog vil jeg anbefale dig at kigge lidt på nielles løsning, da den er mere korrekt, og en hel del simplere end min "on the fly" rettelse af din kode.
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