http://qs321.pair.com?node_id=732366


in reply to Select data rows from a grid with Perl

The way you normally approach this is by also giving the checkboxes a value (and in that case it helps if you give them all the same name, since they are related)...

#!/usr/bin/perl -w use CGI; my $cgi = CGI->new; print $cgi->header, $cgi->start_html, $cgi->start_form; if ( my @selected = $cgi->param( 'my_checkbox' ) ) { print "<hr>\n"; print "<p>You selected: ".join( ', ', @selected )."</p>\n"; } print "<ul>\n"; for my $x ( 1 .. 100 ) { print qq{<li><input type="checkbox" name="my_checkbox" value="$_"> + $_</li>\n}; } print "</ul>\n"; print $cgi->submit,$cgi->end_form, $cgi->end_html;

Also look at [cpan://


www.jasonkohles.com
We're not surrounded, we're in a target-rich environment!

Replies are listed 'Best First'.
Re^2: Select data rows from a grid with Perl
by Anonymous Monk on Dec 23, 2008 at 20:25 UTC
    For the checkbox values it's OK, what about the rest of the information of the row that the checkbox(s) belong to, like:
    <td><input id="" name="ctl1" type="checkbox"></td> <td>Alfreds Futterkiste</td> <td>Berlin</td> <td>Germany</td>

    I have checked this checkbox, I need to send the rest of the information with it, thats what I am looking for. After the check in front of this checkbox I would get:
    Alfreds Futterkiste Berlin Germany
      What about passing all the values I am looking for inside the checkbox tag like:
      <td width=\"400\" align=\"center\"> <input name=\"pass_values\" value=\"$value1 $value2 $value3 $value4 $ +value5 $more_values_here\" type=\"checkbox\" /> Check</td>

      Is this a way around this, or is there a better way to do it?
        It would work but isn't very pretty. Some HTML/javascript as follows might be better.

        (This is untested, so there may be bugs, but it's hacked from code I've developed before, so shouldn't be far wrong. See the javascript DOM.).
        <tr id="ctl1" name="ctl1" title="Click to toggle the selection of thi +s row"> <td> <input type="checkbox" onClick="rowSelected('ctl1')"> </td> <span> <td>Alfreds Futterkiste</td> <td>Berlin</td> <td>Germany</td> </span> </tr> <tr id="ctl2" name="ctl2" title="Click to toggle the selection of thi +s row"> <td> <input type="checkbox" onClick="rowSelected('ctl2')"> </td> <span> <td>etc. etc. etc.</td> </span> </tr> <!-- etc. etc. etc --> <input type='hidden' value='' name='dataToSend'> function rowSelected(id) { if (document.getElementById(id)) { var data=""; var dataArray=document.getElementById(id).getElementsByTagName +("span")[0].getElementsByTagName("td"); for (var i=0; i<dataArray.length; i++) { data=data+dataArray[i].innerHTML; } //overwrites previously selected checkbox so may want to conca +tenate document.getElementById('dataToSend').innerHTML=data; } }