in reply to Re^2: html checkbox and perl cgi
in thread html checkbox and perl cgi

Sorry, could you tell me why the value 'on' is an issue? I thought it is considered on only when it's clicked on. I guess I don't understand the difference between name and value. I thought name is what is passed as the parameter to CGI, not value.

Replies are listed 'Best First'.
Re^4: html checkbox and perl cgi
by tangent (Parson) on Jan 18, 2014 at 20:30 UTC
    Parameters have two parts, a name and a value. To get the value of a parameter you query its name: $query->param('name') will return the value. With a checkbox, the parameter will only have a value if it is checked, if it is not checked the value will be empty. The value 'on' is not really an issue, but you want your variable $TB to have the value 'TB' not 'on'.
Re^4: html checkbox and perl cgi
by AdrianJ217 (Novice) on Jan 18, 2014 at 20:56 UTC
    Thank you. One of my other html forms needed a dropdown menu which didn't need a value. Why is it only checkboxes need a value and not a dropdown menu? Also, I changed the values but still doesn't work. I will try the print statement, but do I have it print back as an html? I'm sorry to bother you so much. I'm kinda new at this.
      It's no bother. Most form inputs do need a value attribute, not just checkboxes. Select menus do have a value but it is contained within the <option> tags. Can you explain what you mean by "still doesn't work". If you comment out your db connection and exit(0); right after your print statements you will get the result in your browser.
        Thank you. So I did comment it out and put the print statements in as below but i got an internal server error which I guess means that there is something wrong with the html file?? Below is the CGI script. Thank you so much.
        #!/usr/bin/perl -w use strict; use DBI; use CGI; my $query = new CGI; print $query->header(); #my $my_database = "TrypSnoDB"; #my $localhost = "localhost"; #my $dsn = "DBI:mysql:$my_database:$localhost"; #my $db_user_name = "adrian"; #my $db_password = "temp_pass"; #my $dbh = DBI->connect("DBI:mysql:database=TrypSnoDB;host=localhost;m +ysql_socket=/private/software/mysql/mysql.sock","adrian","temp_pass", + {'RaiseError' => 1}); if ($query->param('submit1')){ my $family = $query->param('family'); my $TB = $query->param('TB'); my $LM = $query->param('LM'); my $HS = $query->param('HS'); my $SC = $query->param('SC'); my $AT = $query->param('AT'); my $db_query; print qq(TB: $TB<br>; print qq(LM: $LM)<br>; print qq(HS: $HS)<br>; print qq(SC: $SC)<br>; print qq(AT: $AT)<br>; } exit(0); if ($family eq "ALL") { $family = "'C/D' or ST.family='H/ACA'" } else { $family = "'$family'"; } $db_query = "SELECT ST.sno_name,HT.homolog_name FROM sno_Table ST, +Homolog_Table HT,sno_Homologs SH,Organism O WHERE ST.sno_id=SH.sno_id AND SH.homolog_id=HT.homolog_id AND HT.org_i +d=O.org_id and (ST.family=$family) and O.organism='$TB'"; my $sth = $dbh->prepare($db_query); $sth->execute(); my$total = $sth->rows; print "<table border=1>\n <tr> <th>snoRNA</th>\n <th>Homolog</th>\n </tr>\n"; while (my@row = $sth->fetchrow_array()){ my$sno_name = $row[0]; my$homolog_name = $row[1]; print "<tr>\n<td>$sno_name</d><td>$homolog_name</td></tr>\n"; } print "<tr> <th>TOTAL</th>\n <th>$total</th>\n </tr>\n"; print "</table>"; }