- 论坛徽章:
- 0
|
sub my_getyears #数据库里面日期的格式 是 年-月-日 因为有的是 2012-03-04 和 2012-04-23 所以要让重复值只保留一个
{
my $sqlcmd="SELECT id,date FROM cinews";
my $sth=$dbh->prepare($sqlcmd);
$sth->execute() or die("$DBI::errstr");
my @loop_date;
while(my($id,$date)=$sth->fetchrow_array())
{
my %row_data_year;
my @datesplit = split(/-/, $date);#将date变量 分割,并将结果保存在自己定义的数组@datesplit里面.
my $date_year=@datesplit[0];#获得 年
$row_data_year{date_year} = $date_year; #获得数据库字段值
push( @loop_date, \%row_data_year ); #将 年 放在二维数组里面.
}
return \@loop_date;
}
sub genoutput
{
my $tt2file = shift;
my $shortformparam = shift;
if (!$tt2file) {
$tt2file = $in{act};
$shortformparam = 1;
}
if ($shortformparam) {
$tt2file = "perlnews_$tt2file.tt2";
}
$data{usererrormsg} = $cm->{usererrormsg};
$data{infomsg} = $cm->{infomsg};
$cm->output(1, $cm->processTemplate($tt2file, \%g, \%data, \%in));
}
然后通过调用:
$data{allyearsfromsql}= my_getyears();
genoutput("perlnews_front_login.tt2");
将值传到了 tt模板中.
在 模板文件中
<ul>
[% FOREACH num IN data.allyearsfromsql.sort('date_year') %]
<li>
[% num.date_year %]<br />
</li>
[% END %]
</ul>
这里调用之后,显示的 年 是 按照的 升序排序,并且没有去掉重复值. |
|