我有一个包含从 oracle 数据库加载的两列的表。
一列包含employee_name
,另一列是phone_no
我在 perl 中运行 css
脚本以在电子邮件中发送 html
表格。但是我想以用户友好的方式表示表格。
例如:
我想将
emplpyee_name=steven
的第 1 列单元格的背景颜色更改为红色。我想将第 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> </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/