Avatar billede qub- Novice
13. oktober 2004 - 09:11 Der er 25 kommentarer og
1 løsning

Skifter farve hver anden gang

Hallo... Jeg har lavet et lille script der hedder gæstebog, som virker som det skal - stortset!

Jeg har dog et lille problem!


Når den "poster" den første comment, vil jeg gerne have at min <tr> får en baggrundsfarve der er gul, den anden comment er den så hvid, tredje gul igen.. osv osv osv... !


Hvis i ikke forstår, så skal jeg nok prøve at forklare bedre!

På forhånd tak :D
Avatar billede hmortensen Nybegynder
13. oktober 2004 - 09:18 #1
Du kan gøre sådan her:
$x = 0;
$query = mysql_query("SELECT * FROM tabel");
while ($row = mysql_fetch_array($query)) {
    if ($x == 0) {
        $color = "#123456";
        $x = 1;
    } elseif ($x == 1) {
        $color = "#654321";
        $x = 0;
    }

//Så kan vi udskrive

    echo "<tr><td bgcolor=\"".$color."\">".$row["felt"]."</td></tr>";
}
Avatar billede avminarm Juniormester
13. oktober 2004 - 09:45 #2
eller lidt kortere
$x = 0;
$query = mysql_query("SELECT * FROM tabel");
while ($row = mysql_fetch_array($query)) {
    $color = ($x%2 ? "#123456" : "#654321");
    //Så kan vi udskrive
    echo "<tr><td bgcolor=\"".$color."\">".$row["felt"]."</td></tr>";
    $x++;
}
Avatar billede coderdk Praktikant
13. oktober 2004 - 10:01 #3
eller lidt kortere:

$x = 0;
$query = mysql_query("SELECT * FROM tabel");
while ($row = mysql_fetch_array($query)) {
    $color = ( $x++ % 2 ? "#123456" : "#654321" );
    //Så kan vi udskrive
    echo "<tr><td bgcolor=\"".$color."\">".$row["felt"]."</td></tr>";
}



:)
Avatar billede avminarm Juniormester
13. oktober 2004 - 10:13 #4
coderdk>> sejt :o)
Avatar billede stois Nybegynder
13. oktober 2004 - 10:18 #5
<table width="400" cellpadding="0" cellspacing="0" border="0" style="border: 1px black solid;">
  <tr>
    <th style="border-bottom: 1px black solid; backgound-color: gray; color: White;">
      Overskrift:
    </th>
    <th style="border-bottom: 1px black solid; backgound-color: gray; color: White;">
      Dato:
    </th>
    <th style="border-bottom: 1px black solid; backgound-color: gray; color: White;">
      Skrevet af:
    </th>
<?
$query = mysql_query("SELECT * FROM news ORDER BY news_id DESC"):
$i = 3;
while($row = mysql_fetch_object($query)){
  $x = $i%2;
  if($x == 1){$color = "Silver"}else{$color = "White"}
  ?>
  <tr style="Background-color: <?=$color?>;">
    <td>
      <?=$row->headline?>
    </td>
    <td>
      <?=date("j/n-Y", $row->date)?>
    </td>
    <td>
      <?=$row->username?>
    </td>
  </tr>
  <?
  $i++;
}
?>
</table>
Avatar billede stois Nybegynder
13. oktober 2004 - 10:19 #6
Det er kun et eksempel, det virker nok ikke lige hvis du bare copy&paste'er det over i din kode, men det virker hvertfald for mig =)...
Avatar billede stois Nybegynder
13. oktober 2004 - 10:40 #7
oups:

.........
      Skrevet af:
    </th>
  </tr>
]>--- Stop!

hmm.. jeg manglede lige en slut tr ("</tr>")... he he
Avatar billede coderdk Praktikant
13. oktober 2004 - 10:42 #8
Lidt kortere, men jo kortere jo grimmere:

$x = 0;
$query = mysql_query("SELECT * FROM tabel");
while ($row = mysql_fetch_array($query)) {
    echo "<tr><td bgcolor=\"" . ( $x++ % 2 ? "#123456" : "#654321" ) . "\">".$row["felt"]."</td></tr>";
}

:) hehe
Avatar billede stois Nybegynder
13. oktober 2004 - 10:46 #9
*S* du more dig med at gøre den kode kort hvad =)
Avatar billede coderdk Praktikant
13. oktober 2004 - 10:51 #10
heheh lidt ;) Hvad med en one-liner:

for ( $x = 0; $row = mysql_fetch_assoc( $query ); print( "<tr><td bgcolor='#" . ( $x++ % 2 ? "123456" : "654321" ) . "'>$row[felt]</td></tr>" ) ) ;

:) lol
Avatar billede stois Nybegynder
13. oktober 2004 - 10:52 #11
du er jo ikke normal... men det er jo heller ikke sjovt at være det alligevel :-)
Avatar billede hmortensen Nybegynder
13. oktober 2004 - 10:52 #12
Ja, den er så ikke særlig begynder venlig ;)
Avatar billede coderdk Praktikant
13. oktober 2004 - 10:53 #13
:D hehehe sådan noget kode er bare ikke sjovt at finde rundt i ;) Så dog lige jeg manglede den oprindelige query, så det blev vel en two-liner :P
Avatar billede hmortensen Nybegynder
13. oktober 2004 - 10:55 #14
Du kunne jo godt skrive sql strengen direkte ind:
mysql_fetch_assoc(mysql_query("SELECT * FROM tabel"));

Du havde heller ikke "" eller '' om indexet 'felt' i array'et :P
Avatar billede coderdk Praktikant
13. oktober 2004 - 10:56 #15
hehe ja frækkert med query'en i fetch'en - der skal ikke ' om dem, da de er inde i en "-streng ;)
Avatar billede avminarm Juniormester
13. oktober 2004 - 10:56 #16
;o), meeen vi skal vel ikke tale om "pretty" kode så
Avatar billede hmortensen Nybegynder
13. oktober 2004 - 10:58 #17
Hvis du skal ha et bestemt index, som er defineret som streng, skal det hentes sådan her:
$array["streng"] eller $array['streng']
men hvis index er et tal, skal der ikke " eller ' om.

Man bør også adskille strenge og variabler
Avatar billede stois Nybegynder
13. oktober 2004 - 11:01 #18
uhh jeg har dårlig erfaringer med Query if fetch'en, det kan så let gå galt...
Avatar billede stois Nybegynder
13. oktober 2004 - 11:02 #19
coderdk >> Der burde være som lavede en hjemmeside om at laver one-liner kode
Avatar billede stois Nybegynder
13. oktober 2004 - 11:04 #20
ved siden af dit one-liner eksempel, føler jeg mig lidt flov over mit multi-multi-line svar... *G*
Avatar billede hmortensen Nybegynder
13. oktober 2004 - 11:04 #21
Definer en linie.
$var = "noget"; echo $var;

Det er jo faktisk to linier, da php læser til den måder et ;
Avatar billede stois Nybegynder
13. oktober 2004 - 11:05 #22
ja det er da rigtigt, det er da en to liniers kode... *havde ikke set det*
Avatar billede coderdk Praktikant
13. oktober 2004 - 11:07 #23
True men:

$var = array( "hest" => "tres" );
echo "Der er $var[hest] heste!";

Virker fint - Det er en smagssag om man vil skrive

echo "Der er $var[hest] heste!";

eller

echo "Der er " . $var["hest"] . " heste!";

Men gør man det sidste bør man bruge ' i stedet for " - da php leder efter variable og des lignende i "-strenge.
Avatar billede hmortensen Nybegynder
13. oktober 2004 - 11:12 #24
Ja, det virker, men burde ikke gøre det...

(Blir forhåbentlig også rettet på et tidspunkt)

Vil du ha din variable inden i strengen, så brug {}
echo "Der er {$var['hest']} heste!";
Avatar billede stois Nybegynder
13. oktober 2004 - 11:17 #25
Gutter, er vi ikke lige kommet en anelse off-topic?
Avatar billede bojo Nybegynder
13. oktober 2004 - 11:24 #26
bare for sjov - da tildelinger returnere det tildelte så drop dog x

echo ( $color!="123456" ? $color="123456" : $color="654321" )."<br>";
echo ( $color!="123456" ? $color="123456" : $color="654321" )."<br>";
echo ( $color!="123456" ? $color="123456" : $color="654321" )."<br>";
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