Avatar billede havmaage Juniormester
13. november 2001 - 23:30 Der er 28 kommentarer og
1 løsning

måske mere html end php men alligevel

Hej jeg har dette script, jeg kunne godt tænke mig at hver anden row havde en f.eks grå baggrund, hvordan gøres det.

?php
require(\"header.php\");
  require(\"mysqlfunctions.php\");
echo top(\"This is my homepage 1\");
opendb();

echo \"<table border=\\\"0\\\">\\n\";
$result = mysql_query(\"SELECT * FROM tab_costumer\");
while ($row = mysql_fetch_array($result)) {
        echo \"  <tr>\\n\";
        for ($i=0; $i < sizeof($row); $i++) {
                echo \"          <td>\\n\";
                echo \"                  $row[$i]\\n\";
                echo \"          </td>\\n\";
        }
        echo \"  </tr>\\n\";
}
echo \"</table>\";
      closedb();

echo buttom(\"My test web devolment\",\"web site\",\"www.jubii.dk\");
?>
Avatar billede Slettet bruger
13. november 2001 - 23:33 #1
Avatar billede tdaugaard Nybegynder
13. november 2001 - 23:44 #2
Sådan:

Farverne indstilles i linien med:

$bgcol = ($bgcol == \"800008\") ? \"080080\":\"800008\";

<?php
require(\"header.php\");
  require(\"mysqlfunctions.php\");
echo top(\"This is my homepage 1\");
opendb();

echo \"<table border=\\\"0\\\">\\n\";
$result = mysql_query(\"SELECT * FROM tab_costumer\");
while ($row = mysql_fetch_array($result)) {
        $bgcol = ($bgcol == \"800008\") ? \"080080\":\"800008\";
        echo \"  <tr>\\n\";
        for ($i=0; $i < sizeof($row); $i++) {
                echo \"          <td bgcolor=\\\"#$bgcol\\\">\\n\";
                echo \"                  $row[$i]\\n\";
                echo \"          </td>\\n\";
        }
        echo \"  </tr>\\n\";
}
echo \"</table>\";
      closedb();

echo buttom(\"My test web devolment\",\"web site\",\"www.jubii.dk\");
?>
Avatar billede whatever Nybegynder
13. november 2001 - 23:47 #3
Det burde gøre det:

<?php
require(\"header.php\");
require(\"mysqlfunctions.php\");
echo top(\"This is my homepage 1\");
opendb();

echo \"<table border=\\\"0\\\">\\n\";
$result = mysql_query(\"SELECT * FROM tab_costumer\");
$color = 0;
while ($row = mysql_fetch_array($result)) {
    if ($color == 0) {
        $bgcolor = \"#CCCCCC\";
        $color = 1;
    } else {
        $bgcolor = \"#FFFFFF\";
        $color = 0;
    }
    echo \"  <tr bgcolor=\\\"\".$bgcolor.\"\\\">\\n\";
        for ($i=0; $i < sizeof($row); $i++) {
                echo \"          <td>\\n\";
                echo \"                  $row[$i]\\n\";
                echo \"          </td>\\n\";
        }
        echo \"  </tr>\\n\";
}
echo \"</table>\";
      closedb();

echo buttom(\"My test web devolment\",\"web site\",\"www.jubii.dk\");
?>
Avatar billede jakoba Nybegynder
13. november 2001 - 23:47 #4
$toggle = 1;
while ($row = mysql_fetch_array($result)) {
        if ( $toggle==1 ) {
            echo \"  <tr style=\'background-color:#CCCCCC;\'>\\n\";
        } else {
            echo \"  <tr>\\n\";
        }
        $toggle = 1 - $toggle;
        for ($i=0; $i < sizeof($row); $i++) {
                echo \"          <td>\\n\";
                echo \"                  $row[$i]\\n\";
                echo \"          </td>\\n\";
        }
        echo \"  </tr>\\n\";
}
Avatar billede tdaugaard Nybegynder
13. november 2001 - 23:48 #5
jakoba .. det var da godtnok en underlig måde at gøre det på må jeg da nok indrømme ...
Avatar billede tdaugaard Nybegynder
13. november 2001 - 23:49 #6
whatever\'s ligeså underlig ...
Avatar billede havmaage Juniormester
13. november 2001 - 23:50 #7
tak for det tdaugaard, perfekt svar,

hvad betyder denne linie (bare hurtigt)
$bgcol = ($bgcol == \"800008\") ? \"080080\":\"800008\";

Og jeg synes at tabellen for mange små tomme celler i højre side, og det er ikke tomme felter i min db.

Avatar billede tdaugaard Nybegynder
13. november 2001 - 23:52 #8
havmaage,

$bgcol = ($bgcol == \"800008\") ? \"080080\":\"800008\";

hvis $bgcol  er lig med \"800008\" så skal den sætte $bgcol til \"080080\" (dvs. det der står til venstre for kolonnet) og hvis ikke så sætter den det til \"800008\" (til højre for kolonnet)
Avatar billede jakoba Nybegynder
13. november 2001 - 23:54 #9
tdaugaard >> Ja det er også et trick fra dengang der ikke var nogen ?: operator. $toggle skifter mellem 1 og 0.

Jeg vil dog tillade mig at fremhæve at det fylder væsentlig mindre end jeres bloat-kode :-))

mvh JakobA
Avatar billede tdaugaard Nybegynder
13. november 2001 - 23:58 #10
\"Jeg vil dog tillade mig at fremhæve at det fylder væsentlig mindre end jeres bloat-kode :-))\"

Øhm .. mit fylder EEN linie mere i hans script, hvorimod dit og whatever\'s bruger mindst fem .. ??
Avatar billede havmaage Juniormester
13. november 2001 - 23:59 #11
Jamen dog det ligner jo noget \"test\" ligesom unix born hell test function.
Så blev jeg så klog, I er noget uenige om hvad der er rigtigt og forkert her. For mig er det jo alt sammen løsninger jeg kan bruge, men da jeg jo gerne vil gøre det rigtige så hel ærligt, (uden at være forfængelige :-))
Hvad er den bedste måde at gøre det på ud fra disse løsnings forslag. 
Avatar billede whatever Nybegynder
13. november 2001 - 23:59 #12
Fedt. Jeg har også lært noget idag. Jeg vidste sku ikke, at man kunne gøre det på den måde.
Avatar billede whatever Nybegynder
14. november 2001 - 00:00 #13
Den bedste løsning er nok tdaugaard\'s
Avatar billede jakoba Nybegynder
14. november 2001 - 00:01 #14
De løser alle problemet, så de er alle bedst.
tdaugaards er derudover først.
Avatar billede havmaage Juniormester
14. november 2001 - 00:02 #15
Det var i hvert fald den løsning der faldt først og efter jakoba´s udsagn den hvor den nyeste funktion bliver taget i brug (?:)

Så han for point.

men tak for indlæggende det var lærerigt og sjovt at se forskellige løsninger.
Avatar billede tdaugaard Nybegynder
14. november 2001 - 00:04 #16
Her er det igen, lidt ændret så den bruger <tr> istedet for samtlige <td>\'s til at lave BGcolor på ..

<?php
    require(\"header.php\");
    require(\"mysqlfunctions.php\");
    echo top(\"This is my homepage 1\");
    opendb();

    echo \"<table border=\\\"0\\\">\\n\";
    $result = mysql_query(\"SELECT * FROM tab_costumer\");
    while ($row = mysql_fetch_array($result)) {
        $bgcol = ($bgcol == \"800008\") ? \"080080\":\"800008\";
        echo \"  <tr bgcolor=\\\"#$bgcol\\\">\\n\";
        for ($i=0; $i < sizeof($row); $i++) {
            echo \"          <td>\\n\";
            echo \"                  $row[$i]\\n\";
            echo \"          </td>\\n\";
        }

        echo \"  </tr>\\n\";
    }
    echo \"</table>\";

    closedb();
    echo buttom(\"My test web devolment\",\"web site\",\"www.jubii.dk\");
?>

C/C++ style (expr1) ? (expr2):(expr3); er den bedste ..
Avatar billede tdaugaard Nybegynder
14. november 2001 - 00:05 #17
jakoba, lad mig lige høre dit argument hvorfor at mit var \"bloat-kode\" ??
Avatar billede havmaage Juniormester
14. november 2001 - 00:16 #18
Det er i grunden underligt, jeg har 10 records i databasen, men den generer tomme tabel felter

<tr bgcolor=\"#808080\">
          <td>
                  2
          </td>
          <td>
                  fdcgcv
          </td>
          <td>
                  zcxzcxcxcxz
          </td>
          <td>
                  2605
          </td>
          <td>
                  Brøndby
          </td>
          <td>
                  Gillesager 10 st tv
          </td>
          <td>
                  shj@hotmaul.com
          </td>
          <td>
                 
          </td>
          <td>
                 
          </td>
          <td>
                 
          </td>
          <td>
                 
          </td>
          <td>
                 
          </td>
          <td>
                 
          </td>
          <td>
                 
          </td>

Der er ikke noget at når jeg laver en select * from tab_costumer i mysql promten.

hmmmmmm jeg ved det ikke er en del af spørgsmålet, men kan i give mig et hint skal jeg kigge på loopet eller hvad?

Avatar billede tdaugaard Nybegynder
14. november 2001 - 00:18 #19
Prøv:

<?php
    require(\"header.php\");
    require(\"mysqlfunctions.php\");
    echo top(\"This is my homepage 1\");
    opendb();

    echo \"<table border=\\\"0\\\">\\n\";
    $result = mysql_query(\"SELECT * FROM tab_costumer\");
    while ($row = mysql_fetch_array($result)) {
        $bgcol = ($bgcol == \"800008\") ? \"080080\":\"800008\";
        echo \"  <tr bgcolor=\\\"#$bgcol\\\">\\n\";
        for ($i=0; $i < sizeof($row); $i++) {
            if ($row[$i]) {
                echo \"          <td>\\n\";
                echo \"                  $row[$i]\\n\";
                echo \"          </td>\\n\";
            }
        }

        echo \"  </tr>\\n\";
    }
    echo \"</table>\";

    closedb();
    echo buttom(\"My test web devolment\",\"web site\",\"www.jubii.dk\");
?>
Avatar billede havmaage Juniormester
14. november 2001 - 00:26 #20
tdaugaard> Du skal have mange tak for hjælpen. Det var bare helt perfekt.

Nu kan jeg vist heller ikke hive  mere ud af de 30 point. :-)

Avatar billede tdaugaard Nybegynder
14. november 2001 - 00:35 #21
havmaage, ork jow ... du vil blive overrasket over hvor megen hjælp man kan få for 30 point *S* det her ville jeg have svaret på for selv 10 point *g*
Avatar billede jakoba Nybegynder
14. november 2001 - 00:35 #22
tdaugaard >> ok, men nu ikke noget med at blive sur !

        $bgcol = ($bgcol == \"800008\") ? \"080080\":\"800008\";
er bloat fordi det kræver 3-4 strengoperatione at afvikle den expression, og streng operationer koster.
Og så det med baggrund i alle <td erne (som du selv også så).

mvh JakobA
Avatar billede tdaugaard Nybegynder
14. november 2001 - 00:37 #23
jakoba, til gengæld fylder dit mere, og bruger en multiline if() ;o)

Jeg ville hellere bruge ? : end din måde, for at optimere da det får koden til at se mere clean ud.
Avatar billede jakoba Nybegynder
14. november 2001 - 01:06 #24
$toggle = 1;
while ($row = mysql_fetch_array($result)) {
        echo \"  <tr bgcolor=\'#\".(($toggle=1-$toggle)?\"CCCCCC\";\"FFFFFF\").\"\'>\\n\";
        for ($i=0; $i < sizeof($row); $i++) {
                echo \"          <td>\\n\";
                echo \"                  $row[$i]\\n\";
                echo \"          </td>\\n\";
        }
        echo \"  </tr>\\n\";
}

men så må du forklare hvordan den virker :-))
Avatar billede tdaugaard Nybegynder
14. november 2001 - 01:10 #25
Den der virker slet ikke :P (du har et ; istedet for :)

Men hvorfor vil du lave det på den måde ? Der bliver brugt så mange streng operationer i PHP anyway at 3 fra eller til ikke gør nogen forskel. End ikke er der målbart tror jeg ..
Avatar billede jakoba Nybegynder
14. november 2001 - 01:33 #26
Øv, håbede du ikke ville spotte det ; :-))

Menstendels enig, der er ting der er langt vigtigere. Men alligevel.
Avatar billede fri-hash Nybegynder
14. november 2001 - 15:59 #27
Avatar billede jakoba Nybegynder
14. november 2001 - 17:50 #28
At vi skal lade være med at ævle så meget? :-))
Avatar billede skwat Praktikant
17. december 2001 - 20:50 #29
tdaugaard:> hmmmmm
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