in reply to Multiple Check boxes and Handling

All you need to do is name them all say "delete_this_value" and set the $oid value as their unique identifier just as you do in your example. You can then use CGI.pm thusly:

use CGI; my $q = new CGI; @deletes = $q->param('delete_this_value'); for (@deletes) { # you get the value of $oid here for all checked boxes # etc }

The vales of $oid for each checkbox will be stored in @deletes

cheers

tachyon

s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print

Replies are listed 'Best First'.
Re: Re: Multiple Check boxes and Handling
by nlafferty (Scribe) on Oct 08, 2001 at 01:58 UTC
    Looks good. One thing in need to do. I need to put each oid value into a separate variable so i can repeat the delete subroutine once per value.

      They are in separate variables in the @deletes array.

      $deletes[0] # contains first $oid to delete $deletes[1] # contains second $oid to delete ... $deletes[n] # contains n+1 th .....

      Here is how you use your array. Assunimg that $oid contains a filepath to a file you want to delete this will do that.

      <code> #/usr/bin/perl -w use CGI; use CGI::Carp('fatalsToBrowser'); use strict; my $q = new CGI; my @deletes = $q->param('delete_this_value'); print "Content-type: text/plain"; foreach my $oid (@deletes) { # you get the value of $oid here for all checked boxes &do_delete($oid); } sub do_delete { my $oid_to_delete = shift; unlink $oid_to_delete or die "Can't unlink $oid $!\n"; print "Deleted $oid_to_delete\n"; }

      cheers

      tachyon

      s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print

        In this case, it's an SQl db. I have:

        search.cgi - Only the relevant form
        sub normal_results{ print <<HTML; <HTML><HEAD><TITLE>search- Timeclock Search</TITLE></HEAD> <BODY BGCOLOR="#FFFFFF"> <CENTER> <a href="$home">Home</A> | <a href="in_form.cgi">Clock In</A> | <a href="search_form.cgi">Search</A> </CENTER> <CENTER><FONT SIZE=6 FACE=ARIAL>Search Results for $username</FONT> +</CENTER> <HR WIDTH=80%> <P> <CENTER><TABLE BORDER=1 CELLSPACING=0> <TR> <TD BGCOLOR="#eecb27" COLSPAN=7><FONT FACE=ARIAL> <CENTER><B>- Employee Timeclock Database</B></CENTER> </FONT></TD> </TR> <TR> <TD BGCOLOR="eecb27"> <FONT SIZE=2 FACE=ARIAL><CENTER><B>Oid</B></CENTER></FONT></TD> <TD BGCOLOR="eecb27"> <FONT SIZE=2 FACE=ARIAL><CENTER><B>Date</B></CENTER></FONT></TD> <TD BGCOLOR="eecb27"> <FONT SIZE=2 FACE=ARIAL><CENTER><B>Username</B></CENTER></FONT>< +/TD> <TD BGCOLOR="eecb27"> <FONT SIZE=2 FACE=ARIAL><CENTER><B>Clocked In</B></CENTER></FONT +></TD> <TD BGCOLOR="eecb27"> <FONT SIZE=2 FACE=ARIAL><CENTER><B>Clocked Out</B></CENTER></FON +T></TD> <TD BGCOLOR="eecb27"> <FONT SIZE=2 FACE=ARIAL><CENTER><B>Daily Total</B></CENTER></FON +T></TD> <TD BGCOLOR="eecb27"> <FONT SIZE=2 FACE=ARIAL><CENTER><B>notes</B></CENTER></FONT></TD +> </TR> HTML while (@row = $sth->fetchrow()){ $total_time = $row[9]; $allhours = $allhours + $total_time; ## Make our HTML look better if no data. $row[0] = "&nbsp;" if($row[0] eq ""); $row[1] = "&nbsp;" if($row[1] eq ""); $row[2] = "&nbsp;" if($row[2] eq ""); $row[3] = "&nbsp;" if($row[3] eq ""); $row[4] = "&nbsp;" if($row[4] eq ""); $row[6] = "&nbsp;" if($row[6] eq ""); $row[7] = "&nbsp;" if($row[7] eq ""); $row[9] = "&nbsp;" if($row[9] eq ""); $row[10] = "&nbsp;" if($row[10] eq ""); print <<HTML; <TR BGCOLOR="#FFFFFF"> <TD><FONT SIZE=2 FACE=ARIAL>$row[0]</FONT></TD> <TD><FONT SIZE=2 FACE=ARIAL>$row[1]</FONT></TD> <TD><FONT SIZE=2 FACE=ARIAL>$row[2]</FONT></TD> <TD><FONT SIZE=2 FACE=ARIAL>$row[3]:$row[4]</A></FONT></TD> <TD><FONT SIZE=2 FACE=ARIAL>$row[6]:$row[7]</FONT></TD> <TD><FONT SIZE=2 FACE=ARIAL>$row[9]</FONT></TD> <TD><FONT SIZE=2 FACE=ARIAL>$row[10]</FONT></TD> HTML } # End of while. print<<HTML; </TR><tr> <td></TD> <td></TD> <td></TD> <td></TD> <td>Total Time:</TD><td bgcolor=#FFFF99>$allhours</TD><td></TD></TR></ +TABLE></CENTER> <P> <HR WIDTH=80%> <P> <CENTER> <FONT SIZE=4> <A HREF="">Main Page</A> </FONT> </CENTER> </BODY></HTML> HTML } # End of normal_results subroutine ################ END NORMAL RESULTS SUBROUTINE


        delete.cgi
        #!/usr/bin/perl use CGI qw/:standard/; require "common.sub"; print header; #$oid = $ENV{QUERY_STRING}; #$sav_oid = $oid; if ($user eq "$admin"){ use CGI; my $q = new CGI; @deletes = $q->param('delete_this_row'); foreach (@deletes) { &Create_DB_Connection; &delete_results; } &print_results; $dbh->disconnect; }else{ &print_error; } ################ BEGIN DELETE RECORD SUBROUTINE sub delete_record{ $SQL="DELETE FROM timeclock WHERE oid = '$sav_oid'"; my $sth = &Do_SQL; } ################ END DELETE RECORD SUBROUTINE ################ BEGIN PRINT RESULTS SUBROUTINE sub print_results{ print <<HTML; <HTML><HEAD><TITLE>Delete Entry</TITLE></HEAD> <BODY BGCOLOR="#FFFFFF"> <CENTER><FONT SIZE=6 FACE=ARIAL>Delete Results</FONT></CENTER> <HR WIDTH=80%> <P> <CENTER> <FONT SIZE=6 FACE=ARIAL>Record Deleted!</FONT> </CENTER> <P> <HR WIDTH=80%> <P> <CENTER> <FONT SIZE=4 FACE=ARIAL> <a href="$home">Home</A> | <a href="in_form.cgi">Clock In</A> | <a href="search_form.cgi">Search</A> </FONT> </CENTER> </BODY></HTML> HTML # Release the statement handle resources $sth->finish; } # End of print_results subroutine ################ END PRINT RESULTS SUBROUTINE