Here's how I did it (assuming I pasted the relevant stuff correctly :).
$tmpl->param('loop' => db_get_loop());
sub db_get_loop {
my ($dbh, $sql, $sth, @loop_info, $limit,
$last_update, $city, $zipcode, $name,
$low, $high, $date, $forecast,
$forecast_description);
$dbh = db_connect();
$sql = qq{SELECT last_update,city,zipcode,name,low,high,
date,forecast,forecast_description
FROM $TABLE
ORDER BY last_update DESC, date
LIMIT $limit};
$sth = $dbh->prepare($sql);
$sth->execute();
$sth->bind_columns(\($last_update, $city, $zipcode, $name,
$low, $high, $date,
$forecast, $forecast_descri
+ption));
while ($sth->fetchrow_arrayref()) {
my (%loop);
# Set TMPL_VARs for each iteration
# in the <TMPL_LOOP NAME="${region}_headlines_loop"> l
+oop
$loop{'last_update'} = $last_update;
$loop{'city'} = $city;
$loop{'zipcode'} = $zipcode;
$loop{'name'} = $name;
$loop{'low'} = $low;
$loop{'high'} = $high;
$loop{'date'} = $date;
$loop{'forecast'} = sprintf('%02d', $forecast);
$loop{'forecast_description'} = $forecast_description;
# Push this row onto loop
push @loop_info, \%loop;
}
$sth->finish();
$dbh->disconnect();
return \@loop_info;
}
You could put all those variables in a hash, instead.
That's just how I happened to do it.
|