Avatar billede Boddicker Seniormester
05. juli 2000 - 20:05 Der er 1 kommentar og
1 løsning

Farveskift ved hver row

I et ranking system (Listsitepro) spytter den alle entries ud i en tabel. Det er for så vidt fint nok, men jeg vil gerne have at den skifter farve ved hver row.

Det vil sige:

Tabel-row 1: Grøn
Tabel-row 2: Rød
Tabel-row 3: Grøn

etc...

Den del af koden, der spytter alle entries ud, ser således ud:

$a=0;
$b=1;
foreach (@data_array) {
@new_array = split(/\|/,$data_array[$a]);
$ranking .= "<TR>"; 
$ranking .= "<TD bgcolor=\"$lspro_cell_background_color\">";
$ranking .= "<CENTER><FONT FACE=\"$lspro_table_font\" COLOR=\"$lspro_cell_text_color\" SIZE=\"3\">$b</FONT></CENTER>";
$ranking .= "</TD>";
$ranking .= "<TD width=\"100%\" bgcolor=\"$lspro_cell_background_color\">";
if (($a < $max_banner) && ($new_array[9] ne "")) {
$ranking .= "<CENTER>";
$ranking .= "<A HREF=\"$lspro_cgi_url/lspro.cgi?hit_out=$new_array[12]\" target=\"_blank\">";
$ranking .= "<IMG SRC=\"$new_array[9]\" BORDER=\"0\"></A></CENTER>";
}
$ranking .= "<A HREF=\"$lspro_cgi_url/lspro.cgi?hit_out=$new_array[12]\" target=\"_blank\">";
$ranking .= "<FONT SIZE=\"2\" FACE=\"$lspro_table_font\"><b>$new_array[6]</b></FONT></A>";

$ranking .= "<FONT SIZE=\"2\" FACE=\"$lspro_table_font\" COLOR=\"$lspro_cell_text_color\" >&nbsp;$new_array[7]</FONT>"; &tz;
$ranking .= "</TD>";
$ranking .= "<TD bgcolor=\"$lspro_cell_background_color\">";
$ranking .= "<CENTER><FONT FACE=\"$lspro_table_font\" SIZE=\"2\" COLOR=\"$lspro_cell_text_color\" >$new_array[0]</FONT></CENTER>";
$ranking .= "</TD>";
$ranking .= "<TD bgcolor=\"$lspro_cell_background_color\">";
$ranking .= "<CENTER><FONT FACE=\"$lspro_table_font\" SIZE=\"2\" COLOR=\"$lspro_cell_text_color\" >$new_array[1]</FONT></CENTER>";
$ranking .= "</TD>";
$ranking .= "</TR>";

Det kan måske se lidt uoverskueligt ud, men det er : $lspro_cell_background_color som er prædefineret til een farve. Det jeg gerne vil have er, at den så skifter mellem $lspro_cell_background_color og $lspro_cell_background_color2 for hver row.
Avatar billede y2k Nybegynder
05. juli 2000 - 20:54 #1
En nem måde at løse dette problem kan gøres således:

$a=0;
$b=1;
my $x;
$farve{1} = 'første farvekode';
$farve{2} = 'anden farvekode';
foreach (@data_array) {
$x++;
if ($x >2) {$x = 1;}
@new_array = split(/\|/,$data_array[$a]);
$ranking .= "<TR>"; 
$ranking .= "<TD bgcolor=\"$farve{$x}">";
$ranking .= "<CENTER><FONT FACE=\"$lspro_table_font\" COLOR=\"$lspro_cell_text_color\" SIZE=\"3\">$b</FONT></CENTER>";
$ranking .= "</TD>";
$ranking .= "<TD width=\"100%\" bgcolor=\"$farve{$x}\">";
if (($a < $max_banner) && ($new_array[9] ne "")) {
$ranking .= "<CENTER>";
$ranking .= "<A HREF=\"$lspro_cgi_url/lspro.cgi?hit_out=$new_array[12]\" target=\"_blank\">";
$ranking .= "<IMG SRC=\"$new_array[9]\" BORDER=\"0\"></A></CENTER>";
}
$ranking .= "<A HREF=\"$lspro_cgi_url/lspro.cgi?hit_out=$new_array[12]\" target=\"_blank\">";
$ranking .= "<FONT SIZE=\"2\" FACE=\"$lspro_table_font\"><b>$new_array[6]</b></FONT></A>";

$ranking .= "<FONT SIZE=\"2\" FACE=\"$lspro_table_font\" COLOR=\"$lspro_cell_text_color\" >&nbsp;$new_array[7]</FONT>"; &tz;
$ranking .= "</TD>";
$ranking .= "<TD bgcolor=\"$farve{$x}\">";
$ranking .= "<CENTER><FONT FACE=\"$lspro_table_font\" SIZE=\"2\" COLOR=\"$lspro_cell_text_color\" >$new_array[0]</FONT></CENTER>";
$ranking .= "</TD>";
$ranking .= "<TD bgcolor=\"$farve{$x}\">";
$ranking .= "<CENTER><FONT FACE=\"$lspro_table_font\" SIZE=\"2\" COLOR=\"$lspro_cell_text_color\" >$new_array[1]</FONT></CENTER>";
$ranking .= "</TD>";
$ranking .= "</TR>";

Avatar billede Boddicker Seniormester
06. juli 2000 - 16:44 #2
Det virkede perfekt - selvom du havde glemt en enkelt backslash! ;)
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
Kurser inden for grundlæggende programmering

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