Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Fetched data in HTML..

by anu2011 (Initiate)
on Sep 26, 2011 at 19:21 UTC ( #927930=perlquestion: print w/ replies, xml ) Need Help??
anu2011 has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I posted a message about Fetching MySQL data using Perl. Many of you took time to reply to my posting. Many thanks for everyone who tried to help me. Actually, my question should have been about "fetching data and showing them in a HTML form." This is where we have problems with. We are able to save any user entered data into a table, but the problem we have is the opposite: "displaying extracted data in a form." Does anyone have hands on experience doing something similar to this...? I'd appreciate your expertise advise.

Comment on Fetched data in HTML..
Re: Fetched data in HTML..
by ww (Bishop) on Sep 26, 2011 at 19:34 UTC
    Looks like a question for HTML_Monks; populating a form is fundamentally the same as any other print operation; getting the form right is OT.
Re: Fetched data in HTML..
by planetscape (Canon) on Sep 26, 2011 at 19:40 UTC
Re: Fetched data in HTML..
by keszler (Priest) on Sep 26, 2011 at 19:44 UTC
Re: Fetched data in HTML..
by aaron_baugher (Deacon) on Sep 26, 2011 at 20:04 UTC

    The simplest (and ugliest) way is to simply print out your form with the data inserted. Something like (untested):

    my $h = $sth->fetchrow_hashref; # error checking left out print <<END; <form> Username: <input name='username' value='$h->{username}' /><br /> Notes: <textarea name='notes'>$h->{notes}</textarea> <input type='submit' /> </form> END

    You can clean that up somewhat by using the CGI.pm module's HTML functions, so instead of printing a chunk of HTML, you call those functions for the individual tags:

    print( start_form, 'Username: ', textfield('username', $h->{username}), br, 'Notes: ', textarea('notes', $h->{notes}), submit, end_form );

    The next abstraction up would be a templating system like Template::Toolkit, where you keep your HTML in a separate template file, with placeholders where you want your data inserted, then put your data in a particular variable and pass it to the template.

    The next step up from that is something like Catalyst or Dancer, which will use a templating system on the output side, and also have plugins for easy access to your data on the database side.

    Somewhere in the middle of these I'd put inline-coding systems like HTML::Mason, which lets you put your code in your HTML (somewhat like PHP) instead of putting your HTML in your code. This still has the problem of the two getting jumbled, though.

    % my $h = $sth->fetchrow_hashref; <form> Username: <input name='username' value='<% $h->{username} %>' /><br /> Notes: <textarea name='notes'><% $h->{notes} %></textarea> <input type='submit' /> </form>

    I'm probably forgetting an option or two, but which of these options you should use depends on the complexity of your project, the ratio of HTML to code (if there's very little of one or the other, having them mixed may not be a big problem), what other subsystems might be helpful to you (like the plugins available for Dancer), and personal preference.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://927930]
Approved by planetscape
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (6)
As of 2014-10-23 04:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (124 votes), past polls