css - 根据其值动态更改每个单元格的背景颜色

标签 css perl html-table html-email

我有一个包含从 oracle 数据库加载的两列的表。

一列包含employee_name,另一列是phone_no

我在 perl 中运行 css 脚本以在电子邮件中发送 html 表格。但是我想以用户友好的方式表示表格。

例如:

  1. 我想将 emplpyee_name=steven 的第 1 列单元格的背景颜色更改为红色。

  2. 我想将第 2 列单元格的背景颜色更改为红色,其中 phone_no=null

我想在加载期间动态更改 bgcolour。我不需要 jQuery,只有在 css/html 中才有可能吗?

#!/efs/dist/perl5/core/5.8/exec/bin/perl

use EFSPerl::Version (
'DBD-Oracle' => '1.19',
'DBI' => '1.58'
);


use DBI;
use CommonFunctions;

my @HTML        =();


$STYLE=<<STYLE;
<style type="text/css">
.myTable { background-color:#E6F0FF;border: 1px solid blue;border-collapse: collapse; }
.myTable th { background-color:#0066FF;color:white;font-size: 100%; }
.myTable td { padding:3px;border:1px solid #0066FF; }

</style>
STYLE
    push(@HTML,"$STYLE");


    push(@HTML,"<table class=\"myTable\" border=1>\12<tr bgcolor=708090><th>EMPLOYEE_NAME</th><th>PHONE_NO</th></tr>");

    $retCode=executeSQL(" SELECT EMPLOYEE_NAME, PHONE_NO FROM EMPLOYEE_TABLE");
 push(@HTML,"</table>\12\12");

 if($retCode) {
    push(@HTML,"<tr><td>&nbsp;</td><td><td></td>");
    push(@HTML,"<td></td><td></td></tr>\12");
    }


&sendMail;

sub sendMail
{

$sub="test report";
$from='abc@example.com';
$to='123@xample.com.com';

    open(MAIL, "|/usr/lib/sendmail -t");
            print MAIL "From: $from \12"; print MAIL "To: $to \12";print MAIL "Cc: $Cc \12";
            print MAIL "Subject: $sub \12";
            print MAIL "Content-Type: text/html \12";
            print MAIL "Content-Disposition:inline \12";
            print MAIL @HTML;
 close(MAIL);
}
sub executeSQL
{
    my $SQL=$_[0];chomp($SQL);
    print "$SQL\12";



    my $dsn = "dbi:Oracle:host=server.com;sid=sample;port=1111;";
    my $dbuser = "username";
    my $dbpass = 'password';
    my $dbh = DBI->connect($dsn, $dbuser, $dbpass, { RaiseError => 1, AutoCommit => 0 });

    my $sth=$dbh->prepare($SQL);
    $sth->execute or die "EXEC ERROR $sth->errstr";
    $count=0;
    while (@ary = $sth->fetchrow_array) {
            $count++;
            push(@HTML,"<tr>");
            foreach(@ary) {
                    chomp($_);
                    push(@HTML,"<td>$_</td>");
                    print "$_,";
            }
            push(@HTML,"</tr>\12");
    }
    $dbh->disconnect();



print "COUNT : $count\12";
    return 1 if($count==0);

}

最佳答案

当您想“在加载期间更改背景颜色”时,我不太确定我是否做对了。但是当接收电子邮件的客户端呈现您的 HTML 时,不再有动态过程 - 所有数据库交互都由您的脚本完成。因此,您可以在您的 perl 脚本中应用背景颜色,您不需要 JavaScript 甚至 jQuery。

您只需更改一小段代码:

在“STYLE”-here-doc 添加

td.alert { padding:3px;border:1px solid #0066FF; background-color: #ff0000;}

像这样修改 executeSQL 的 while 循环体:

$count++;
push(@HTML,"<tr>");
chomp($ary[0]);
push(@HTML,sprintf("<td%s>%s</td>",
                    ($ary[0] eq "steven") ? " class=\"alert\"" : "",
                    $ary[0]));

chomp($ary[1]);
push(@HTML,sprintf("<td%s>%s</td>",
                    (!length($ary[1]) || $ary[1] eq "1234") ? " class=\"alert\"" : "",
                    $ary[1]));

push(@HTML,"</tr>\12"); 

突出显示第二列中的空条目或条目“1234”。

关于css - 根据其值动态更改每个单元格的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29748939/

相关文章:

html - 添加表格滚动条

arrays - 标量上下文中新 'each @array'的行为

javascript - 如何知道我在 html 表(日历)中的位置?

jQuery 查找子复选框

css - 自定义输入 [类型 ="submit"] 样式不适用于 jquerymobile 按钮

html - 2 行按钮值

perl - Powershell/Perl : Merging multiple CSV files into one?

perl - 需要帮助理解 Perl 代码 - 多进程/fork

javascript - 如何动态创建n个列?

javascript - 图像地板褪色颜色与网页背景颜色混合?