Thread: RE: [htmltmpl] HTML-Template and DBI
Brought to you by:
samtregar
From: Ben A. <Ben...@na...> - 2002-09-22 14:32:17
|
try this: my @rows =3D (); while ( my $data =3D $sth->fetchrow_hashref() ) { push @rows, $data; } $template->param(ROWS =3D> \@rows); regards, Ben -----Original Message----- From: Doc [mailto:n.h...@ve...] Sent: 22 September 2002 15:10 To: htm...@li... Subject: [htmltmpl] HTML-Template and DBI I have attempted to make HTML-Template to work with DBI and fetching = database results using Perlmonk code: push @{$rows}, $_ while $_ =3D $sth->fetchrow_hashref(); my $template =3D HTML::Template->new(filename =3D> 'songs.tmpl'); $template->param(ROWS =3D> $rows); print $template->output(); and code here: my $template =3D HTML::Template->new( filename =3D> 'showclient.html' ) = ; my ($data,$rows,$template); while( $data =3D $sth->fetchrow_hashref() ) { push( @{$rows} , $data ); = } $template->param( { ROWS =3D> $rows } ) ; print $template->output(); It always fails on template->param function. I know about fetchall but I = also read it creates more work for Perl so I stook to this. Please help = me out.=20 |
From: Ben A. <Ben...@na...> - 2002-09-22 14:59:32
|
Could you be more specific? Are you seeing any error messages? Are you = running the script from the command line or via CGI? If the output of your script is destined for a browser, you need to = print the appropriate headers... If the script is running in a standard = CGI environment, something like: use CGI qw(:standard); print header, $template->output; Please also post the template you are using. regards, Ben > -----Original Message----- > From: Doc [mailto:n.h...@ve...] > Sent: 22 September 2002 15:44 > To: Ben Ausden; htm...@li... > Subject: Re: [htmltmpl] HTML-Template and DBI >=20 >=20 >=20 > my $DBH =3D DBI->connect($db_config{"dsn"}, $db_config{"username"}, > $db_config{"password"}, { PrintError =3D> 0, AutoCommit =3D> 1 })=20 > or die "Could > not connect: $DBI::errstr"; > my $sth =3D $DBH->prepare(' > <sql statement> > '); > $sth->execute(); >=20 > my $template =3D HTML::Template->new(filename =3D> 'template.html'); > my @rows =3D (); > while ( my $data =3D $sth->fetchrow_hashref() ) { > push @rows, $data; > } > $template->param(ROWS =3D> \@rows); >=20 >=20 >=20 > $DBH->disconnect(); >=20 > Still doesnt work. >=20 [...] |
From: Doc <n.h...@ve...> - 2002-09-22 15:05:16
|
Ive got the header. When I add print the $data before it addred to = @rows, I get HASH(0x825cbfc) . ----- Original Message -----=20 From: "Ben Ausden" <Ben...@na...> To: "Doc" <n.h...@ve...>; = <htm...@li...> Sent: Sunday, September 22, 2002 10:58 AM Subject: RE: [htmltmpl] HTML-Template and DBI Could you be more specific? Are you seeing any error messages? Are you = running the script from the command line or via CGI? If the output of your script is destined for a browser, you need to = print the appropriate headers... If the script is running in a standard = CGI environment, something like: use CGI qw(:standard); print header, $template->output; Please also post the template you are using. regards, Ben > -----Original Message----- > From: Doc [mailto:n.h...@ve...] > Sent: 22 September 2002 15:44 > To: Ben Ausden; htm...@li... > Subject: Re: [htmltmpl] HTML-Template and DBI >=20 >=20 >=20 > my $DBH =3D DBI->connect($db_config{"dsn"}, $db_config{"username"}, > $db_config{"password"}, { PrintError =3D> 0, AutoCommit =3D> 1 })=20 > or die "Could > not connect: $DBI::errstr"; > my $sth =3D $DBH->prepare(' > <sql statement> > '); > $sth->execute(); >=20 > my $template =3D HTML::Template->new(filename =3D> 'template.html'); > my @rows =3D (); > while ( my $data =3D $sth->fetchrow_hashref() ) { > push @rows, $data; > } > $template->param(ROWS =3D> \@rows); >=20 >=20 >=20 > $DBH->disconnect(); >=20 > Still doesnt work. >=20 [...] |
From: Doc <n.h...@ve...> - 2002-09-22 15:22:11
|
template is a simple: <TMPL_LOOP NAME=3DROWS> ID<TMPL_VAR NAME=3DID><br> </TMPL_LOOP> ----- Original Message -----=20 From: "Ben Ausden" <Ben...@na...> To: "Doc" <n.h...@ve...>; = <htm...@li...> Sent: Sunday, September 22, 2002 10:58 AM Subject: RE: [htmltmpl] HTML-Template and DBI Could you be more specific? Are you seeing any error messages? Are you = running the script from the command line or via CGI? If the output of your script is destined for a browser, you need to = print the appropriate headers... If the script is running in a standard = CGI environment, something like: use CGI qw(:standard); print header, $template->output; Please also post the template you are using. regards, Ben > -----Original Message----- > From: Doc [mailto:n.h...@ve...] > Sent: 22 September 2002 15:44 > To: Ben Ausden; htm...@li... > Subject: Re: [htmltmpl] HTML-Template and DBI >=20 >=20 >=20 > my $DBH =3D DBI->connect($db_config{"dsn"}, $db_config{"username"}, > $db_config{"password"}, { PrintError =3D> 0, AutoCommit =3D> 1 })=20 > or die "Could > not connect: $DBI::errstr"; > my $sth =3D $DBH->prepare(' > <sql statement> > '); > $sth->execute(); >=20 > my $template =3D HTML::Template->new(filename =3D> 'template.html'); > my @rows =3D (); > while ( my $data =3D $sth->fetchrow_hashref() ) { > push @rows, $data; > } > $template->param(ROWS =3D> \@rows); >=20 >=20 >=20 > $DBH->disconnect(); >=20 > Still doesnt work. >=20 [...] ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Html-template-users mailing list Htm...@li... https://lists.sourceforge.net/lists/listinfo/html-template-users |
From: Smejkal P. <Sme...@te...> - 2002-09-23 07:36:47
|
As far as I know the code below works like: {=20 my $data; while ( $data =3D ... } Which is incorrect as the examples before. The problem is that = fetchrow_hashref returns always the reference to the same hash and only = updates the values. After all loops you will have an array of N elements = referencing the sames values. Try: my @rows =3D (); while ( my $row =3D $sth->fetchrow_hashref() ) { my %data =3D %$row; push @rows, \%data; } $template->param(ROWS =3D> \@rows); |
From: Doc <n.h...@ve...> - 2002-09-23 13:17:28
|
I tired your coding and it didnt work except the fact that all i got was = blank page, resulting from header being printed I imagine. I know var = names are same as column names. I dumped db column names and paste them = exactly.=20 As far as I know the code below works like: {=20 my $data; while ( $data =3D ... } Which is incorrect as the examples before. The problem is that = fetchrow_hashref returns always the reference to the same hash and only = updates the values. After all loops you will have an array of N elements = referencing the sames values. Try: my @rows =3D (); while ( my $row =3D $sth->fetchrow_hashref() ) { my %data =3D %$row; push @rows, \%data; } $template->param(ROWS =3D> \@rows); |
From: Cory T. <ct...@on...> - 2002-09-24 00:38:38
|
HTML::Template Users: Anyone considered a way to generate HTML::Templates with XSLT/XML? I cannot create the <TMPL_VAR NAME="FOO"> construct, it is invalid. <TMPL_VAR>FOO</TMPL_VAR> does not work. Neither does <TMPL_VAR NAME="FOO" /> Thoughts? Either on the constructs I'm trying to create with the XSLT, or in a way to make HTML::Template work with an XML-friendly-er syntax & still use caching & what-not. -- Cory -- ps: other than a filter? ;) |
From: Jesse E. <je...@er...> - 2002-09-24 01:37:27
|
Hi Cory -- > Anyone considered a way to generate HTML::Templates with XSLT/XML? > > I cannot create the <TMPL_VAR NAME="FOO"> construct, it is invalid. Have you thought about using the comment syntax?: <!--tmpl_var name="foo"--> Wouldn't this work? BTW, what kind of system are you building which combines XSLT and HTML::Template? Just curious! TTYL, -Jesse- -- Jesse Erlbaum The Erlbaum Group je...@er... Phone: 212-684-6161 Fax: 212-684-6226 |
From: Sam T. <sa...@tr...> - 2002-09-24 15:23:22
|
On Mon, 23 Sep 2002, Cory Trese wrote: > HTML::Template Users: > > Anyone considered a way to generate HTML::Templates with XSLT/XML? > > I cannot create the <TMPL_VAR NAME="FOO"> construct, it is invalid. I don't understand what you mean. Can't XSLT generate non-XML output? HTML::Template's syntax is not XML. -sam |
From: <no...@ci...> - 2002-09-23 07:50:52
|
Wrote by "Smejkal Petr" in 2002/09/23 16:36 JST >> Try: >> my @rows = (); >> while ( my $row = $sth->fetchrow_hashref() ) { >> my %data = %$row; >> push @rows, \%data; >> } >> $template->param(ROWS => \@rows); Hum... fetchall_arrayref({}) is same function. Try: $template->param(ROWS => $sth->fechall_arrayref({})); |
From: Doc <n.h...@ve...> - 2002-09-26 04:12:18
|
I just realized something, doesnt fetch_array return column values and = not column names? And data has to be in this format $template->param(EMPLOYEE_INFO =3D> [=20 { name =3D> 'Sam', job =3D> 'programmer' }, { name =3D> 'Steve', job =3D> 'soda jerk' }, ]); I tried printing every dbi fetch results and they dont turn out that. = just {HASH} and bunch of numbers.=20 ----- Original Message -----=20 From: "Norikatsu Shigemura" <no...@ci...> To: <n.h...@ve...> Cc: <htm...@li...> Sent: Monday, September 23, 2002 3:50 AM Subject: Re: [htmltmpl] HTML-Template and DBI > Wrote by "Smejkal Petr" in 2002/09/23 16:36 JST > >> Try: > >> my @rows =3D (); > >> while ( my $row =3D $sth->fetchrow_hashref() ) { > >> my %data =3D %$row; > >> push @rows, \%data; > >> } > >> $template->param(ROWS =3D> \@rows); >=20 > Hum... fetchall_arrayref({}) is same function. >=20 > Try: > $template->param(ROWS =3D> $sth->fechall_arrayref({})); >=20 >=20 > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Html-template-users mailing list > Htm...@li... > https://lists.sourceforge.net/lists/listinfo/html-template-users |
From: Ben A. <Ben...@na...> - 2002-09-26 08:54:02
|
> -----Original Message----- > From: Doc [mailto:n.h...@ve...] > Sent: 26 September 2002 05:12 > To: Norikatsu Shigemura > Cc: htm...@li... > Subject: Re: [htmltmpl] HTML-Template and DBI >=20 >=20 > I just realized something, doesnt fetch_array return column=20 > values and not column names? And data has to be in this format >=20 > $template->param(EMPLOYEE_INFO =3D> [=20 > { name =3D> 'Sam', job =3D> 'programmer' }, > { name =3D> 'Steve', job =3D> 'soda jerk' }, > ]); >=20 > I tried printing every dbi fetch results and they dont turn=20 > out that. just {HASH} and bunch of numbers.=20 >=20 You can't print a hashref - get hold of the Data::Dumper module from = CPAN if you haven't already, and do: use Data::Dumper; print Dumper($name_of_my_hashref); Data::Dumper will pretty-print data structures for you - very useful for = debugging. With regard to $sth->fetchall_arrayref(), by default it returns an array = reference containing an array ref for each row. HOWEVER, if you pass it = an empty hash reference like so: $sth->fetchall_arrayref( {} ), it will = return a reference to an array containing a hashref for each row... = which is exactly what you need for an HTML::Template loop (as described = in the example you quoted above). See the DBI manpages = http://www.perldoc.com/cpan/DBI.html regards, Ben=20 |
From: Doc <n.h...@ve...> - 2002-09-26 16:54:32
|
What about tha fact dbi array doesn't contain column names? ----- Original Message -----=20 From: "Ben Ausden" <Ben...@na...> To: "Doc" <n.h...@ve...> Cc: <htm...@li...> Sent: Thursday, September 26, 2002 4:52 AM Subject: RE: [htmltmpl] HTML-Template and DBI > -----Original Message----- > From: Doc [mailto:n.h...@ve...] > Sent: 26 September 2002 05:12 > To: Norikatsu Shigemura > Cc: htm...@li... > Subject: Re: [htmltmpl] HTML-Template and DBI >=20 >=20 > I just realized something, doesnt fetch_array return column=20 > values and not column names? And data has to be in this format >=20 > $template->param(EMPLOYEE_INFO =3D> [=20 > { name =3D> 'Sam', job =3D> 'programmer' }, > { name =3D> 'Steve', job =3D> 'soda jerk' }, > ]); >=20 > I tried printing every dbi fetch results and they dont turn=20 > out that. just {HASH} and bunch of numbers.=20 >=20 You can't print a hashref - get hold of the Data::Dumper module from = CPAN if you haven't already, and do: use Data::Dumper; print Dumper($name_of_my_hashref); Data::Dumper will pretty-print data structures for you - very useful for = debugging. With regard to $sth->fetchall_arrayref(), by default it returns an array = reference containing an array ref for each row. HOWEVER, if you pass it = an empty hash reference like so: $sth->fetchall_arrayref( {} ), it will = return a reference to an array containing a hashref for each row... = which is exactly what you need for an HTML::Template loop (as described = in the example you quoted above). See the DBI manpages = http://www.perldoc.com/cpan/DBI.html regards, Ben=20 ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Html-template-users mailing list Htm...@li... https://lists.sourceforge.net/lists/listinfo/html-template-users |
From: Andrew B. <an...@br...> - 2002-09-26 17:21:28
|
On 9/26/02 at 12:54 PM, n.h...@ve... (Doc) wrote: > What about tha fact dbi array doesn't contain column names? huh? If you (SELECT foo, bar, FROM db) returned will be a ref to the values of foo & bar for each row that your querry matched. Have you looked at the 'bind columns' method? (untested): my $sth = $dbh->prepare( qq{ SELECT foo, bar FROM db WHERE [blah...] }) or die [blah...] ; $sth->execute() or die [blah...] ; $sth->bind_columns(undef, \my($foo, $bar,)) or die [blah...]; $sth->fetch; #Now feel free to use $foo and $bar $template->param(foo => $foo, bar => $bar); #For loops something like: my @loop; while(my $data = $sth->fetch) { my %row = ( foo => $foo, bar => $bar, ); push (@loop, \%row); } $template->param(stuff => \@loop,); > ----- Original Message ----- > From: "Ben Ausden" <Ben...@na...> > To: "Doc" <n.h...@ve...> > Cc: <htm...@li...> > Sent: Thursday, September 26, 2002 4:52 AM > Subject: RE: [htmltmpl] HTML-Template and DBI > > > > > -----Original Message----- > > From: Doc [mailto:n.h...@ve...] > > Sent: 26 September 2002 05:12 > > To: Norikatsu Shigemura > > Cc: htm...@li... > > Subject: Re: [htmltmpl] HTML-Template and DBI > > > > > > I just realized something, doesnt fetch_array return column > > values and not column names? And data has to be in this format > > > > $template->param(EMPLOYEE_INFO => [ > > { name => 'Sam', job => 'programmer' }, > > { name => 'Steve', job => 'soda jerk' }, > > ]); > > > > I tried printing every dbi fetch results and they dont turn > > out that. just {HASH} and bunch of numbers. > > > > You can't print a hashref - get hold of the Data::Dumper module from CPAN if you > haven't already, and do: > > use Data::Dumper; > print Dumper($name_of_my_hashref); > > > Data::Dumper will pretty-print data structures for you - very useful for > debugging. > > > With regard to $sth->fetchall_arrayref(), by default it returns an array > reference containing an array ref for each row. HOWEVER, if you pass it an empty > hash reference like so: $sth->fetchall_arrayref( {} ), it will return a > reference to an array containing a hashref for each row... which is exactly what > you need for an HTML::Template loop (as described in the example you quoted > above). See the DBI manpages http://www.perldoc.com/cpan/DBI.html > > > regards, > Ben > > |
From: Doc <n.h...@ve...> - 2002-09-26 18:18:42
|
That didn't make any sense whatsoever.=20 DBI does not return column names in results.=20 H-T needs column names to assign values to <TMPL_VAR NAME=3DVARNAME> So How is it possible to use $template->param(ROWS =3D> = $sth->fechall_arrayref({})); when arrayref does not supply H-T what needs to perform it's function? ----- Original Message -----=20 From: "Andrew Brosnan" <an...@br...> To: <htm...@li...> Sent: Thursday, September 26, 2002 1:20 PM Subject: Re: [htmltmpl] HTML-Template and DBI > On 9/26/02 at 12:54 PM, n.h...@ve... (Doc) wrote: >=20 > > What about tha fact dbi array doesn't contain column names? >=20 > huh? If you (SELECT foo, bar, FROM db) returned will be a ref to the > values of foo & bar for each row that your querry matched. >=20 >=20 >=20 > Have you looked at the 'bind columns' method? (untested): >=20 > my $sth =3D $dbh->prepare( qq{ SELECT foo, bar FROM db WHERE [blah...] = }) > or die [blah...] ; > =20 > $sth->execute() > or die [blah...] ; > =20 > $sth->bind_columns(undef, \my($foo, $bar,)) > or die [blah...]; > =20 > $sth->fetch; >=20 > #Now feel free to use $foo and $bar >=20 > $template->param(foo =3D> $foo, > bar =3D> $bar); >=20 >=20 >=20 >=20 > #For loops something like: >=20 > my @loop; >=20 > while(my $data =3D $sth->fetch) { >=20 > my %row =3D ( foo =3D> $foo, > bar =3D> $bar, ); > push (@loop, \%row); > =20 > } > =20 > $template->param(stuff =3D> \@loop,); >=20 >=20 >=20 >=20 >=20 > > ----- Original Message -----=20 > > From: "Ben Ausden" <Ben...@na...> > > To: "Doc" <n.h...@ve...> > > Cc: <htm...@li...> > > Sent: Thursday, September 26, 2002 4:52 AM > > Subject: RE: [htmltmpl] HTML-Template and DBI > >=20 > >=20 > >=20 > > > -----Original Message----- > > > From: Doc [mailto:n.h...@ve...] > > > Sent: 26 September 2002 05:12 > > > To: Norikatsu Shigemura > > > Cc: htm...@li... > > > Subject: Re: [htmltmpl] HTML-Template and DBI > > >=20 > > >=20 > > > I just realized something, doesnt fetch_array return column=20 > > > values and not column names? And data has to be in this format > > >=20 > > > $template->param(EMPLOYEE_INFO =3D> [=20 > > > { name =3D> 'Sam', job =3D> 'programmer' }, > > > { name =3D> 'Steve', job =3D> 'soda jerk' }, > > > ]); > > >=20 > > > I tried printing every dbi fetch results and they dont turn=20 > > > out that. just {HASH} and bunch of numbers.=20 > > >=20 > >=20 > > You can't print a hashref - get hold of the Data::Dumper module from > CPAN if you=20 > > haven't already, and do: > >=20 > > use Data::Dumper; > > print Dumper($name_of_my_hashref); > >=20 > >=20 > > Data::Dumper will pretty-print data structures for you - very useful > for=20 > > debugging. > >=20 > >=20 > > With regard to $sth->fetchall_arrayref(), by default it returns an > array=20 > > reference containing an array ref for each row. HOWEVER, if you pass > it an empty =20 > > hash reference like so: $sth->fetchall_arrayref( {} ), it will = return > a=20 > > reference to an array containing a hashref for each row... which is > exactly what=20 > > you need for an HTML::Template loop (as described in the example you > quoted=20 > > above). See the DBI manpages http://www.perldoc.com/cpan/DBI.html > >=20 > >=20 > > regards, > > Ben=20 > >=20 > >=20 >=20 >=20 > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Html-template-users mailing list > Htm...@li... > https://lists.sourceforge.net/lists/listinfo/html-template-users |
From: Roger B. W. <ro...@fi...> - 2002-09-26 18:29:45
|
On Thu, Sep 26, 2002 at 02:18:18PM -0400, Doc wrote: >That didn't make any sense whatsoever. Read the documentation. >DBI does not return column names in results. Read the documentation. > H-T needs column names to assign values to <TMPL_VAR NAME=VARNAME> Read the documentation. > So How is it possible to use $template->param(ROWS => $sth->fechall_arrayref({})); > when arrayref does not supply H-T what needs to perform it's function? Read the documentation. That's why the documentation is there; and you've just made it clear that you don't believe the answers given by people on the list, so why are you asking again? Try searching for the line $tbl_ary_ref = $sth->fetchall_arrayref({}); Roger |
From: Andrew B. <an...@br...> - 2002-09-26 18:37:56
|
On 9/26/02 at 2:18 PM, n.h...@ve... (Doc) wrote: > That didn't make any sense whatsoever. Sorry you didn't get it. References can be tricky at first. > > DBI does not return column names in results. Right. Your SQL statement asks for the value(s) in column(s), and you get back a reference to a data structure(array, hash) that contains what you asked for(if there is a match). So if you have columns 'Name' and 'Email' and you say (SELECT Name, Email, FROM db WHERE [blah...]), you might get back a reference to (Doc, n.h...@ve...). The returned values will be in the same order in which you asked for them. (But this is SQL, not Perl:) > > H-T needs column names to assign values to <TMPL_VAR NAME=VARNAME> Not really. H-T doesn't care what your column names are. You create the VARNAME and the value is what is contained in the variable: $template->param(VARNAME => $variable); > > So How is it possible to use $template->param(ROWS => > $sth->fechall_arrayref({})); That's not what I said. > when arrayref does not supply H-T what needs to perform it's function? Hmmm...Check out the documentation at: http://www.mysql.com and http://html-template.sourceforge.net/ hth > > ----- Original Message ----- > From: "Andrew Brosnan" <an...@br...> > To: <htm...@li...> > Sent: Thursday, September 26, 2002 1:20 PM > Subject: Re: [htmltmpl] HTML-Template and DBI > > > > On 9/26/02 at 12:54 PM, n.h...@ve... (Doc) wrote: > > > > > What about tha fact dbi array doesn't contain column names? > > > > huh? If you (SELECT foo, bar, FROM db) returned will be a ref to the > > values of foo & bar for each row that your querry matched. > > > > > > > > Have you looked at the 'bind columns' method? (untested): > > > > my $sth = $dbh->prepare( qq{ SELECT foo, bar FROM db WHERE [blah...] }) > > or die [blah...] ; > > > > $sth->execute() > > or die [blah...] ; > > > > $sth->bind_columns(undef, \my($foo, $bar,)) > > or die [blah...]; > > > > $sth->fetch; > > > > #Now feel free to use $foo and $bar > > > > $template->param(foo => $foo, > > bar => $bar); > > > > > > > > > > #For loops something like: > > > > my @loop; > > > > while(my $data = $sth->fetch) { > > > > my %row = ( foo => $foo, > > bar => $bar, ); > > push (@loop, \%row); > > > > } > > > > $template->param(stuff => \@loop,); > > > > > > > > > > > > > ----- Original Message ----- > > > From: "Ben Ausden" <Ben...@na...> > > > To: "Doc" <n.h...@ve...> > > > Cc: <htm...@li...> > > > Sent: Thursday, September 26, 2002 4:52 AM > > > Subject: RE: [htmltmpl] HTML-Template and DBI > > > > > > > > > > > > > -----Original Message----- > > > > From: Doc [mailto:n.h...@ve...] > > > > Sent: 26 September 2002 05:12 > > > > To: Norikatsu Shigemura > > > > Cc: htm...@li... > > > > Subject: Re: [htmltmpl] HTML-Template and DBI > > > > > > > > > > > > I just realized something, doesnt fetch_array return column > > > > values and not column names? And data has to be in this format > > > > > > > > $template->param(EMPLOYEE_INFO => [ > > > > { name => 'Sam', job => 'programmer' }, > > > > { name => 'Steve', job => 'soda jerk' }, > > > > ]); > > > > > > > > I tried printing every dbi fetch results and they dont turn > > > > out that. just {HASH} and bunch of numbers. > > > > > > > > > > You can't print a hashref - get hold of the Data::Dumper module from > > CPAN if you > > > haven't already, and do: > > > > > > use Data::Dumper; > > > print Dumper($name_of_my_hashref); > > > > > > > > > Data::Dumper will pretty-print data structures for you - very useful > > for > > > debugging. > > > > > > > > > With regard to $sth->fetchall_arrayref(), by default it returns an > > array > > > reference containing an array ref for each row. HOWEVER, if you pass > > it an empty > > > hash reference like so: $sth->fetchall_arrayref( {} ), it will return > > a > > > reference to an array containing a hashref for each row... which is > > exactly what > > > you need for an HTML::Template loop (as described in the example you > > quoted > > > above). See the DBI manpages http://www.perldoc.com/cpan/DBI.html > > > > > > > > > regards, > > > Ben > > > > > > > > > > > > ------------------------------------------------------- > > This sf.net email is sponsored by:ThinkGeek > > Welcome to geek heaven. > > http://thinkgeek.com/sf > > _______________________________________________ > > Html-template-users mailing list > > Htm...@li... > > https://lists.sourceforge.net/lists/listinfo/html-template-users > > |
From: Douglas K. <dlk...@rh...> - 2002-09-26 18:40:44
|
On Thursday 26 September 2002 09:54 am, Doc wrote: > What about =A0tha fact dbi array doesn't contain column names? You should know what column you are pulling the data from in the database= .=20 Because somebody else may have altered the database. If the database has= =20 been altered then you do not know what data you are getting. I always se= lect=20 each column I want so I know the order and the type of data. Just my 2 cents --=20 Douglas Kirkland, Systems Administrator Technical Support Department Rhyton Corporation te...@rh... http://www.rhyton.com |
From: Doc <n.h...@ve...> - 2002-09-26 19:14:32
|
> Perhaps folks are thinking of fetchrow_hashref which DOES return = column > names. I agree. I think people are confusing array with a hash in DBI.=20 > See DBI doc on how to use DBI > http://search.cpan.org/author/TIMB/DBI-1.14/DBI.pm >=20 >=20 > Steve Ragan=20 > Sr. Internet Developer > Harris Internet Services > 2500 Westchester Ave. > Purchase, NY 10577 > 914-641-3948 > sr...@bc... >=20 >=20 > -----Original Message----- > From: Doc [mailto:n.h...@ve...] > Sent: Thursday, September 26, 2002 2:18 PM > To: Andrew Brosnan; htm...@li... > Subject: Re: [htmltmpl] HTML-Template and DBI >=20 >=20 > That didn't make any sense whatsoever.=20 >=20 > DBI does not return column names in results.=20 >=20 > H-T needs column names to assign values to <TMPL_VAR NAME=3DVARNAME> >=20 > So How is it possible to use $template->param(ROWS =3D> > $sth->fechall_arrayref({})); > when arrayref does not supply H-T what needs to perform it's = function? >=20 > ----- Original Message -----=20 > From: "Andrew Brosnan" <an...@br...> > To: <htm...@li...> > Sent: Thursday, September 26, 2002 1:20 PM > Subject: Re: [htmltmpl] HTML-Template and DBI >=20 >=20 > > On 9/26/02 at 12:54 PM, n.h...@ve... (Doc) wrote: > >=20 > > > What about tha fact dbi array doesn't contain column names? > >=20 > > huh? If you (SELECT foo, bar, FROM db) returned will be a ref to the > > values of foo & bar for each row that your querry matched. > >=20 > >=20 > >=20 > > Have you looked at the 'bind columns' method? (untested): > >=20 > > my $sth =3D $dbh->prepare( qq{ SELECT foo, bar FROM db WHERE = [blah...] }) > > or die [blah...] ; > > =20 > > $sth->execute() > > or die [blah...] ; > > =20 > > $sth->bind_columns(undef, \my($foo, $bar,)) > > or die [blah...]; > > =20 > > $sth->fetch; > >=20 > > #Now feel free to use $foo and $bar > >=20 > > $template->param(foo =3D> $foo, > > bar =3D> $bar); > >=20 > >=20 > >=20 > >=20 > > #For loops something like: > >=20 > > my @loop; > >=20 > > while(my $data =3D $sth->fetch) { > >=20 > > my %row =3D ( foo =3D> $foo, > > bar =3D> $bar, ); > > push (@loop, \%row); > > =20 > > } > > =20 > > $template->param(stuff =3D> \@loop,); > >=20 > >=20 > >=20 > >=20 > >=20 > > > ----- Original Message -----=20 > > > From: "Ben Ausden" <Ben...@na...> > > > To: "Doc" <n.h...@ve...> > > > Cc: <htm...@li...> > > > Sent: Thursday, September 26, 2002 4:52 AM > > > Subject: RE: [htmltmpl] HTML-Template and DBI > > >=20 > > >=20 > > >=20 > > > > -----Original Message----- > > > > From: Doc [mailto:n.h...@ve...] > > > > Sent: 26 September 2002 05:12 > > > > To: Norikatsu Shigemura > > > > Cc: htm...@li... > > > > Subject: Re: [htmltmpl] HTML-Template and DBI > > > >=20 > > > >=20 > > > > I just realized something, doesnt fetch_array return column=20 > > > > values and not column names? And data has to be in this format > > > >=20 > > > > $template->param(EMPLOYEE_INFO =3D> [=20 > > > > { name =3D> 'Sam', job =3D> 'programmer' }, > > > > { name =3D> 'Steve', job =3D> 'soda jerk' }, > > > > ]); > > > >=20 > > > > I tried printing every dbi fetch results and they dont turn=20 > > > > out that. just {HASH} and bunch of numbers.=20 > > > >=20 > > >=20 > > > You can't print a hashref - get hold of the Data::Dumper module = from > > CPAN if you=20 > > > haven't already, and do: > > >=20 > > > use Data::Dumper; > > > print Dumper($name_of_my_hashref); > > >=20 > > >=20 > > > Data::Dumper will pretty-print data structures for you - very = useful > > for=20 > > > debugging. > > >=20 > > >=20 > > > With regard to $sth->fetchall_arrayref(), by default it returns an > > array=20 > > > reference containing an array ref for each row. HOWEVER, if you = pass > > it an empty =20 > > > hash reference like so: $sth->fetchall_arrayref( {} ), it will = return > > a=20 > > > reference to an array containing a hashref for each row... which = is > > exactly what=20 > > > you need for an HTML::Template loop (as described in the example = you > > quoted=20 > > > above). See the DBI manpages http://www.perldoc.com/cpan/DBI.html > > >=20 > > >=20 > > > regards, > > > Ben=20 > > >=20 > > >=20 > >=20 > >=20 > > ------------------------------------------------------- > > This sf.net email is sponsored by:ThinkGeek > > Welcome to geek heaven. > > http://thinkgeek.com/sf > > _______________________________________________ > > Html-template-users mailing list > > Htm...@li... > > https://lists.sourceforge.net/lists/listinfo/html-template-users >=20 >=20 >=20 > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Html-template-users mailing list > Htm...@li... > https://lists.sourceforge.net/lists/listinfo/html-template-users |
From: Brian M. <bm...@pa...> - 2002-09-26 19:39:32
|
>> Perhaps folks are thinking of fetchrow_hashref which DOES return column >> names. > I agree. I think people are confusing array with a hash in DBI. Indeed. Is there a particular reason you want to use fetchall_arrayref? If what you want is a loop called ROWS that contains all the rows from your query with vars named for each column, you might want to think about using selectall_arrayref (which returns a reference to an array of hashrefs, just like a loop), like so: my $arrayref = $dbh->selectall_arrayref( $query, { Columns => {} } ) Then you've got your loop data, and all you have to do is name it: $template->param(ROWS => $arrayref); Of course, you'll want some error handling, because if no rows are returned, you'll get an error complaining that the parameter is not a TMPL_VAR, and your template won't parse. Brian McCain PageMasters Internet Group >> See DBI doc on how to use DBI >> http://search.cpan.org/author/TIMB/DBI-1.14/DBI.pm >> >> >> Steve Ragan >> Sr. Internet Developer >> Harris Internet Services >> 2500 Westchester Ave. >> Purchase, NY 10577 >> 914-641-3948 >> sr...@bc... >> >> >> -----Original Message----- >> From: Doc [mailto:n.h...@ve...] >> Sent: Thursday, September 26, 2002 2:18 PM >> To: Andrew Brosnan; htm...@li... >> Subject: Re: [htmltmpl] HTML-Template and DBI >> >> >> That didn't make any sense whatsoever. >> >> DBI does not return column names in results. >> >> H-T needs column names to assign values to <TMPL_VAR NAME=VARNAME> >> >> So How is it possible to use $template->param(ROWS => >> $sth->fechall_arrayref({})); >> when arrayref does not supply H-T what needs to perform it's function? |
From: Andrew B. <an...@br...> - 2002-09-26 19:47:40
|
On 9/26/02 at 3:13 PM, n.h...@ve... (Doc) wrote: > > I agree. I think people are confusing array with a hash in DBI. Nope. The first statements I responded to were: (Doc) wrote: > > I just realized something, doesnt fetch_array return column > > values and not column names? And data has to be in this format [snip] > > I tried printing every dbi fetch results and they dont turn > > out that. just {HASH} and bunch of numbers. > What about tha fact dbi array doesn't contain column names? So I showed you how to handle that. To which you replyed: > That didn't make any sense whatsoever. > So How is it possible to use [snip code I didn't write] > when arrayref does not supply H-T what needs to perform it's function? You asked about arrays. That's what I responded to. Either hash or array fetch methods will work fine with loops in H-T. I do think reading the docs is in order for you but I'm still happy to help you if you like. Andrew |
From: Jim L. <htm...@gu...> - 2002-09-26 22:04:51
|
Doc I think I understand your confusion... Without doubt it was the PerlMonks tutorial at http://perlmonks.thepen.com/65642.html that actually allowed me to use DBI and HTML::Template together. But I still had a problem with this part: # prepare a data structure for HTML::Template my $rows; push @{$rows}, $_ while $_ = $sth->fetchrow_hashref(); # instantiate the template and substitute the values my $template = HTML::Template->new(filename => 'songs.tmpl'); $template->param(ROWS => $rows); Yes, it got the data out and put it into the template, but I didn't like the fact that I didnt have a value, lets say $title, to use. See, I was used to doing a select, and then a while loop in which I would output html, so I could just write html freely, and have $column_name variables for the data output. This is pretty much what you do inside the tmpl_loop. But you only see that in the template file. Again from the PerlMonks tutorial at http://perlmonks.thepen.com/65642.html <!-- songs.tmpl --> <html> <head> <title>Song Listing</title> </head> <body> <h1>My Songs</h1> <table> <!-- TMPL_LOOP NAME=ROWS --> <tr> <td><!-- TMPL_VAR NAME=TITLE --></td> <td><!-- TMPL_VAR NAME=ARTIST --></td> <td><!-- TMPL_VAR NAME=ALBUM --></td> <td><!-- TMPL_VAR NAME=YEAR --></td> </tr> <!-- /TMPL_LOOP --> </table> </body> </html> and there are your column names. But I still find this awkward sometimes when I would prefer to manipulate the data prior to spitting it out to the template. I find myself resorting to javascript when faced with this... I'm sure there is a better way. Well hopefully I've added something to the discussion besides more confusion.. Jim |
From: Doc <n.h...@ve...> - 2002-09-27 14:24:53
|
None of the code at PerlMonks worked for me. At least, ones I the = simplier ones.=20 Has anyone thought about doing HTML::Template::DBI? ----- Original Message -----=20 From: "Jim Lang" <htm...@gu...> To: <htm...@li...> Sent: Thursday, September 26, 2002 6:04 PM Subject: Re: [htmltmpl] HTML-Template and DBI > Doc I think I understand your confusion... >=20 > Without doubt it was the PerlMonks tutorial at > http://perlmonks.thepen.com/65642.html >=20 > that actually allowed me to use DBI and HTML::Template > together. >=20 > But I still had a problem with this part: >=20 > # prepare a data structure for HTML::Template > my $rows; > push @{$rows}, $_ while $_ =3D $sth->fetchrow_hashref(); > =20 > # instantiate the template and substitute the values > my $template =3D HTML::Template->new(filename =3D> 'songs.tmpl'); > $template->param(ROWS =3D> $rows); >=20 >=20 > Yes, it got the data out and put it into the template, but > I didn't like the fact that I didnt have a value, lets say $title, > to use. See, I was used to doing a select, and then a while loop > in which I would output html, so I could just write html freely, > and have $column_name variables for the data output. This is pretty > much what you do inside the tmpl_loop. >=20 > But you only see that in the template file. Again from the > PerlMonks tutorial at http://perlmonks.thepen.com/65642.html >=20 >=20 > <!-- songs.tmpl --> > <html> > <head> > <title>Song Listing</title> > </head> > <body> > <h1>My Songs</h1> > <table> > <!-- TMPL_LOOP NAME=3DROWS --> > <tr> > <td><!-- TMPL_VAR NAME=3DTITLE --></td> > <td><!-- TMPL_VAR NAME=3DARTIST --></td> > <td><!-- TMPL_VAR NAME=3DALBUM --></td> > <td><!-- TMPL_VAR NAME=3DYEAR --></td> > </tr> > <!-- /TMPL_LOOP --> > </table> > </body> > </html> >=20 > and there are your column names. =20 >=20 > But I still find this awkward sometimes when I would prefer to = manipulate > the data prior to spitting it out to the template. I find myself = resorting > to javascript when faced with this... I'm sure there is a better way. >=20 > Well hopefully I've added something to the discussion besides more=20 > confusion.. >=20 > Jim >=20 >=20 >=20 >=20 >=20 > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Html-template-users mailing list > Htm...@li... > https://lists.sourceforge.net/lists/listinfo/html-template-users |
From: Jim L. <htm...@gu...> - 2002-09-27 14:41:06
|
Doc wrote: >None of the code at PerlMonks worked for me. At least, ones I the simplier ones. > > what error messages did you get? > > > > > >----- Original Message ----- >From: "Jim Lang" <htm...@gu...> >To: <htm...@li...> >Sent: Thursday, September 26, 2002 6:04 PM >Subject: Re: [htmltmpl] HTML-Template and DBI > > >>Doc I think I understand your confusion... >> >>Without doubt it was the PerlMonks tutorial at >>http://perlmonks.thepen.com/65642.html >> >>that actually allowed me to use DBI and HTML::Template >>together. >> >>But I still had a problem with this part: >> >># prepare a data structure for HTML::Template >>my $rows; >>push @{$rows}, $_ while $_ = $sth->fetchrow_hashref(); >> >># instantiate the template and substitute the values >>my $template = HTML::Template->new(filename => 'songs.tmpl'); >>$template->param(ROWS => $rows); >> >> >>Yes, it got the data out and put it into the template, but >>I didn't like the fact that I didnt have a value, lets say $title, >>to use. See, I was used to doing a select, and then a while loop >>in which I would output html, so I could just write html freely, >>and have $column_name variables for the data output. This is pretty >>much what you do inside the tmpl_loop. >> >>But you only see that in the template file. Again from the >>PerlMonks tutorial at http://perlmonks.thepen.com/65642.html >> >> >><!-- songs.tmpl --> >><html> >><head> >><title>Song Listing</title> >></head> >><body> >><h1>My Songs</h1> >><table> >><!-- TMPL_LOOP NAME=ROWS --> >> <tr> >> <td><!-- TMPL_VAR NAME=TITLE --></td> >> <td><!-- TMPL_VAR NAME=ARTIST --></td> >> <td><!-- TMPL_VAR NAME=ALBUM --></td> >> <td><!-- TMPL_VAR NAME=YEAR --></td> >> </tr> >><!-- /TMPL_LOOP --> >></table> >></body> >></html> >> >>and there are your column names. >> >>But I still find this awkward sometimes when I would prefer to manipulate >>the data prior to spitting it out to the template. I find myself resorting >>to javascript when faced with this... I'm sure there is a better way. >> >>Well hopefully I've added something to the discussion besides more >>confusion.. >> >>Jim >> >> >> >> >> >>------------------------------------------------------- >>This sf.net email is sponsored by:ThinkGeek >>Welcome to geek heaven. >>http://thinkgeek.com/sf >>_______________________________________________ >>Html-template-users mailing list >>Htm...@li... >>https://lists.sourceforge.net/lists/listinfo/html-template-users >> > > > >------------------------------------------------------- >This sf.net email is sponsored by:ThinkGeek >Welcome to geek heaven. >http://thinkgeek.com/sf >_______________________________________________ >Html-template-users mailing list >Htm...@li... >https://lists.sourceforge.net/lists/listinfo/html-template-users > |
From: Brian M. <bm...@pa...> - 2002-09-27 20:30:30
|
Has anybody gotten an answer from this? I'm also curious what the error messages were. There are a million different ways to connect data from DBI with HTML::Template, and we could suggest different ways of doing it all day for a month....or we could try to help Doc solve his specific problem. Speaking of that specific problem...maybe you could clear it up for us Doc, exactly what is it that you are trying to do? The more detailed the question, the higher chance of an accurate (and applicable) solution. Brian McCain PageMasters Internet Group ----- Original Message ----- From: "Jim Lang" <htm...@gu...> To: "html-template-users" <htm...@li...> Sent: Friday, September 27, 2002 7:40 AM Subject: Re: [htmltmpl] HTML-Template and DBI | Doc wrote: | | >None of the code at PerlMonks worked for me. At least, ones I the simplier ones. | > | > | | what error messages did you get? | | > | > | > | > | > | >----- Original Message ----- | >From: "Jim Lang" <htm...@gu...> | >To: <htm...@li...> | >Sent: Thursday, September 26, 2002 6:04 PM | >Subject: Re: [htmltmpl] HTML-Template and DBI | > | > | >>Doc I think I understand your confusion... | >> | >>Without doubt it was the PerlMonks tutorial at | >>http://perlmonks.thepen.com/65642.html | >> | >>that actually allowed me to use DBI and HTML::Template | >>together. | >> | >>But I still had a problem with this part: | >> | >># prepare a data structure for HTML::Template | >>my $rows; | >>push @{$rows}, $_ while $_ = $sth->fetchrow_hashref(); | >> | >># instantiate the template and substitute the values | >>my $template = HTML::Template->new(filename => 'songs.tmpl'); | >>$template->param(ROWS => $rows); | >> | >> | >>Yes, it got the data out and put it into the template, but | >>I didn't like the fact that I didnt have a value, lets say $title, | >>to use. See, I was used to doing a select, and then a while loop | >>in which I would output html, so I could just write html freely, | >>and have $column_name variables for the data output. This is pretty | >>much what you do inside the tmpl_loop. | >> | >>But you only see that in the template file. Again from the | >>PerlMonks tutorial at http://perlmonks.thepen.com/65642.html | >> | >> | >><!-- songs.tmpl --> | >><html> | >><head> | >><title>Song Listing</title> | >></head> | >><body> | >><h1>My Songs</h1> | >><table> | >><!-- TMPL_LOOP NAME=ROWS --> | >> <tr> | >> <td><!-- TMPL_VAR NAME=TITLE --></td> | >> <td><!-- TMPL_VAR NAME=ARTIST --></td> | >> <td><!-- TMPL_VAR NAME=ALBUM --></td> | >> <td><!-- TMPL_VAR NAME=YEAR --></td> | >> </tr> | >><!-- /TMPL_LOOP --> | >></table> | >></body> | >></html> | >> | >>and there are your column names. | >> | >>But I still find this awkward sometimes when I would prefer to manipulate | >>the data prior to spitting it out to the template. I find myself resorting | >>to javascript when faced with this... I'm sure there is a better way. | >> | >>Well hopefully I've added something to the discussion besides more | >>confusion.. | >> | >>Jim | >> | >> | >> | >> | >> | >>------------------------------------------------------- | >>This sf.net email is sponsored by:ThinkGeek | >>Welcome to geek heaven. | >>http://thinkgeek.com/sf | >>_______________________________________________ | >>Html-template-users mailing list | >>Htm...@li... | >>https://lists.sourceforge.net/lists/listinfo/html-template-users | >> | > | > | > | >------------------------------------------------------- | >This sf.net email is sponsored by:ThinkGeek | >Welcome to geek heaven. | >http://thinkgeek.com/sf | >_______________________________________________ | >Html-template-users mailing list | >Htm...@li... | >https://lists.sourceforge.net/lists/listinfo/html-template-users | > | | | | | | ------------------------------------------------------- | This sf.net email is sponsored by:ThinkGeek | Welcome to geek heaven. | http://thinkgeek.com/sf | _______________________________________________ | Html-template-users mailing list | Htm...@li... | https://lists.sourceforge.net/lists/listinfo/html-template-users | |