Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re: HTML::Template with checkbox

by GrandFather (Sage)
on Sep 05, 2012 at 02:38 UTC ( #991727=note: print w/replies, xml ) Need Help??

in reply to HTML::Template with checkbox

Show us runnable sample code that demonstrates the problem. Note that template loops with nested data require a nested data structure so your sample code should show us how you create that structure. Most likely you want something like:

use strict; use warnings; use HTML::Template; my $html = <<HTML; <TMPL_LOOP NAME="files_loop"> <tr id="TMPL_VAR ID>"> <td><TMPL_VAR NAME ="index"></td> <td><TMPL_VAR NAME ="filename"> </td> <td><input type="checkbox" name="field" <TMPL_VAR NAME="check">> </td> </tr> </TMPL_LOOP> <form action="index.cgi" method="post"> <input type="submit" name="Edown" value=" Download "> <input type="hidden" name="cmd" value="download"> </form> HTML my $tmpl = HTML::Template->new(scalarref => \$html); my @loopParams = ( {index => 1, filename => 'plonk', check => 'f1'}, {index => 2, filename => 'pip', check => 'f2'} ); $tmpl->param(files_loop => \@loopParams); print $tmpl->output();


<tr id="TMPL_VAR ID>"> <td>1</td> <td>plonk </td> <td><input type="checkbox" name="field" f1> </td> </tr> <tr id="TMPL_VAR ID>"> <td>2</td> <td>pip </td> <td><input type="checkbox" name="field" f2> </td> </tr> <form action="index.cgi" method="post"> <input type="submit" name="Edown" value=" Download "> <input type="hidden" name="cmd" value="download"> </form>
True laziness is hard work

Replies are listed 'Best First'.
Re^2: HTML::Template with checkbox
by bebewinla (Novice) on Sep 05, 2012 at 16:03 UTC

    I have my cgi script very similar to what you have. hastable contains the filenames to be output it. I don't have the f1,f2...values for the check, not sure if it's needed.

    $q = new CGI; $template = HTML::Template->new(filename => "$displaypage", associate => $q); my @loop; foreach $index (sort {$a <=> $b} keys %hashtable) { my ($fn) = @{$hashtable{$index}}; my %row = ( index => $index, fn => $fn , check => " "); push (@loop, \%row); } $template->param(files_loop=> \@loop); send_header(); print $template->output;

    so after user click on the checkboxes for the files that he wants to download, then he click on the "download" button, in my cgi script it will go to "sub downloadFiles", in here I am not sure how to get the values of the checkboxes or filenames , I tried this :

    sub downloadfiles { @files = $q->param("field"); ... }
    It did not get any values in @files. Not sure what values it should returned. I tried you suggestion adding f1,f2 with instead using index number 1,2,3... but still don't know how to get the checkboxes values. Please help.

      Oh, silly me. You don't provide a value attribute for your checkbox so nothing gets returned. You need something like:

      <td><input type="checkbox" name="field" value="<TMPL_VAR NAME="fi +lename">">

      for your checkbox line. That will return the file name if the checkbox is checked.

      True laziness is hard work

        how do you fetch the checkbox value ? I tried using q->param("field") it returns nothing, do you think the associate => $q is wrong when creating new template. should I take it out, but then how do I fetch the checkbox values

        $q = new CGI; $template = HTML::Template->new(filename => "$displaypage", associate => $q);

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://991727]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (4)
As of 2018-02-18 06:05 GMT
Find Nodes?
    Voting Booth?
    When it is dark outside I am happiest to see ...

    Results (250 votes). Check out past polls.