I found your snippet a bit tricky to digest so I've blown some whitespace into it.
sub retrieve {
my $self = shift;
use Data::Dumper;
my $q = $self->query;
my $tmpl = $self->load_tmpl(
"showitem.html",
loop_context_vars =>1,
associate => $q
);
$tmpl->param(
product =>
$self->dbh->selectall_arrayref(
q[
SELECT
image,
price,
description,
serial
FROM
product
WHERE
id = ?
],
{ Slice => {} },
$q->param('item')
)
);
return $frm->build_page(
{ title => "Boyo's Place: " .
$self->dbh->selectrow_array(
q[
SELECT
name
FROM
product
WHERE
id=?
],
{ Slice => {} },
$q->param('item')
),
output => $tmpl->output
}
),
$q->code(Dumper(\$tmpl));
}
I would use a lot of temp vars to simplify the code and help establish what is happening.
e.g.
my $arrayref = $self->dbh->selectall_arrayref( etc....
die Dumper $arrayref;
# on a subsequent run
my $arrayref2 = $self->dbh->selectrow_array( etc...
die Dumper $arrayref2;
# and even
die Dumper $q->param('item');
You need to be sure you are feeding your template loop an array of hash refs. Each hash ref will need
item => $item_value
in it. You may have to loop through the dbh output yourself to put that in.
Hope that helps
|