How to create a Combobox in html form

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • spyka
    New Member
    • Sep 2010
    • 10

    How to create a Combobox in html form

    Actually I have a CGI form which consists of
    textfields and I need a combobox in which I can
    enter my own data dynamically. May be it seems very
    silly question but I am new to cgi-perl as well as
    HTML so no idea what to do. Here is my form:

    Code:
    #!C:\perl\bin\perl.exe
    
    use CGI;
    use CGI qw/:standard/;
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
    my $q = new CGI;
    use DBI;
    use CGI qw(:all);
    use strict;
    use warnings;
    print "Content-Type: text/html\n\n";
    print $q->header ( );
    
    if ( $q->param("submit") )
    {
    process_form ( );
    }
    else
    {
    display_form ( );
    }
    
    
    sub process_form
    {
    if ( validate_form ( ) )
    {
    display_form ( );
    }
    }
    
    
    sub validate_form
    {
    my $User_Name = $q->param("User_Name");
    my $User_Password= $q->param("User_Password");
    my $User_Permission = $q->param("User_Permission");
    my $User_Department= join(", ",$q->param
    ("User_Department"));
    my $error_message = "";
    $error_message .= "Please enter your name<br/>" if
    ( !$User_Name );
    $error_message .= "Please enter your Password<br/>" 
    if( ! $User_Password );
    $error_message .= "Please Select a permission<br/>"
    if( !$User_Permission );
    $error_message .= "Please select atleast 1 
    department<br/>" if(!$User_Department);
    
    if ( $error_message )
    {
    display_form (
    $error_message,$User_Name,$User_Password,$User_Per mission
    ,$User_Department);
    return 0;
    }
    else
    {
    my $dbh = DBI->connect
    ("dbi:SQLite:DEVICE.db","", "",{RaiseError => 1,
    AutoCommit =>
    1 } );
    my $sql = "SELECT COUNT(UserName) FROM UsersList 
    WHERE UserName='$User_Name'";
    my $sth = $dbh->prepare($sql) or die("\n\nPREPARE 
    ERROR:\n\n$DBI::errstr");
    $sth->execute or die("\n\nQUERY 
    ERROR:\n\n$DBI::errstr");
    my ($n) = $dbh->selectrow_array($sth);
    $sth->finish();
    if ($n > 0) {
    print "Record Already Exists";
    }
    else {
    my $sql = "INSERT INTO UsersList 
    (UserName,Password,Permission,Department) VALUES 
    ('$User_Name ',' 
    $User_Password','$User_Permission','$User_Departme nt')";
    my $sth = $dbh->prepare($sql);
    $sth->execute;
    print "Record Added Successfully";
    $sth->finish();
    $dbh->commit or die $dbh->errstr;
    }
    $dbh->disconnect;
    }
    }
    
    sub display_form
    {
    my $error_message = shift;
    my $User_Name = shift;
    my $User_Password = shift;
    my $User_Permission= shift;
    my $User_Department= shift;
    
    my $User_Permission_Add_sel = $User_Permission 
    eq "Add" ? " checked" : "";
    my $User_Permission_Edit_sel =$User_Permission
    eq "Edit" ? " checked" : "";
    my $User_Permission_Delete_sel =$User_Permission
    eq "Delete" ? " checked" : "";
    my $User_Permission_View_sel =$User_Permission
    eq "View" ? " checked" : "";
    
    my $User_Department_html = "";
    my $dbh = DBI->connect
    ("dbi:SQLite:DEVICE.db","", "",{RaiseError => 1,
    AutoCommit =>
    1 } );
    my $sql = "select DepartmentName from Departments 
    order by DepartmentName";
    my $sth = $dbh->prepare($sql);
    $sth->execute() ;
    
    while (my $User_Department_option= $sth- 
    >fetchrow_array)
    {
    $User_Department_html.= "<option
    value=\"$User_Department_option\"";
    $User_Department_html.= " selected" if (
    $User_Department_option eq
    $User_Department );
    
    $User_Department_html.= ">$User_Department_option</option
    >";
    }
    $sth->finish();
    $dbh->commit or die $dbh->errstr;
    print <<END_HTML;
    <html>
    <head><title>Form Validation</title></head>
    <body>
    
    <form action="AddUser.cgi" method="post">
    <input type="hidden" name="submit" value="Submit">
    
    <p>$error_message</p>
    
    
    <TABLE BORDER="1" align="center">
    <TR>
    <TD>Name</TD>
    <TD> <input type="text" name="User_Name" 
    value="$User_Name"></TD>
    </TR>
    
    <TR>
    <TD>Password</TD>
    <TD colspan="2"><input type="password"
    name="User_Password" value="$User_Password" 
    size="20" maxlength="15" /></TD>
    
    </TR>
    <TR>
    <TD>Role</TD>
    <TD>"HERE I NEED A COMBOBOX"</TD>
    </TR>
    
    <TR>
    <TD>Permission</TD>
    <TD><input type="radio" name="User_Permission" 
    value="Add"$User_Permission_Add_sel>Add<input 
    type="radio" name="User_Permission"
    value="Edit"$User_Permission_Edit_sel>Edit<input 
    type="radio" 
    name="User_Permission"
    value="Delete"$User_Permission_Delete_sel>Delete<i nput
    type="radio" name="User_Permission" 
    value="View"$User_Permission_View_sel>View</TD>
    </TR>
    
    <TR>
    <TD>Department</TD>
    <TD colspan="2"> <select name="User_Department" 
    MULTIPLE
    SIZE=4>$User_Department_html</select></TD>
    
    </TR>
    </TR>
    <TR>
    <TD align="center" colspan="2">
    <input type="submit" name="submit" value="ADD">
    </TD>
    </TR>
    </TABLE
    </form>
    
    </body></html>
    END_HTML
    
    }
    Last edited by numberwhun; Sep 14 '10, 12:41 AM. Reason: Please use code tags!!!
  • numberwhun
    Recognized Expert Moderator Specialist
    • May 2007
    • 3467

    #2
    First, you really need to learn to enclose your code in code tags. After even as little as 6 posts you should have been instructed to do this before. Please be sure and do it in the future.

    As for the combo box, you should really learn some HTML and learn how to add it. You say you don't know any, then can we assume that you got this code from elsewhere?

    Regards,

    Jeff

    Comment

    Working...