Listing 6: get-news.comp

%# -*- mmm-classes: mason -*-

<%perl>
# Connect to the database, if we haven't already done so
$dbh = $m->comp("database-connect.comp");

# Get the news items in this category
my $sql = "SELECT headline, body, posting_date ";
  $sql .= "FROM Articles ";
  $sql .= "WHERE category_id = ? ";
  $sql .= "ORDER BY posting_date DESC ";
  $sql .= "LIMIT $how_many ";

my $sth = $dbh->prepare($sql) || die "Error: $DBI::errstr";
$sth->execute($category_id) || die "Error: $DBI::errstr";

my @articles;
my $row_ref;

# Put the list of articles into @articles
while ($row_ref = $sth->fetchrow_arrayref)
{
    my ($headline, $body, $posting_date) = @$row_ref;

    push @articles, {headline => $headline,
                     body => $body,
                     posting_date => $posting_date};
}

return @articles;
</%perl>

<%once>
my $dbh;
</%once>

<%args>
$category_id
$how_many => 5
</%args>
