Wrox Programmer Forums

Need to download code?

View our list of code downloads.

Go Back   Wrox Programmer Forums > Open Source > Perl
Password Reminder
Register
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read
Welcome to the p2p.wrox.com Forums.

You are currently viewing the Perl section of the Wrox Programmer to Programmer discussions. This is a community of tens of thousands of software programmers and website developers including Wrox book authors and readers. As a guest, you can read any forum posting. By joining today you can post your own programming questions, respond to other developers’ questions, and eliminate the ads that are displayed to guests. Registration is fast, simple and absolutely free .
DRM-free e-books 300x50
Reply
 
Thread Tools Search this Thread Display Modes
  #1 (permalink)  
Old September 13th, 2010, 08:38 AM
Registered User
 
Join Date: Sep 2010
Posts: 1
Thanks: 0
Thanked 0 Times in 0 Posts
Default Create a Combobox in html

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:

#!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

}
Reply With Quote
  #2 (permalink)  
Old September 14th, 2010, 07:48 AM
Authorized User
Points: 93, Level: 1
Points: 93, Level: 1 Points: 93, Level: 1 Points: 93, Level: 1
Activity: 0%
Activity: 0% Activity: 0% Activity: 0%
 
Join Date: Aug 2009
Location: Moldova
Posts: 23
Thanks: 0
Thanked 2 Times in 2 Posts
Default

1. Use placeholders
2. Read "Learning Perl" or "Beginning Perl"
3. To create multiple select you can use $q->scrolling_list
4. There is no combo box, but you can use text field and scrolling list.

I formatted your code with perltidy and done some changes in the code. Next time please use [ CODE ] tags in this forum.

Code:
#!C:\perl\bin\perl.exe

use strict;
use warnings;
use CGI;
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
my $q = CGI->new;
use DBI;
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 at least 1 department<br/>" if ( !$User_Department );

    if ($error_message) {
        display_form(
            $error_message,   $User_Name, $User_Password,
            $User_Permission, $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=?";
        my $sth = $dbh->prepare($sql) or die(
            "\n\nPREPARE
ERROR:\n\n$DBI::errstr"
        );
        $sth->execute($User_Name) 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 (?,?,?,?)";
            my $sth = $dbh->prepare($sql);
            $sth->execute($User_Name,$User_Password,$User_Permission,$User_Department);
            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<input
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

}
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to create a recursive function for combobox aneesh_sunu@yahoo.co.in PHP How-To 0 May 5th, 2007 04:04 AM
How to create a dropdown combobox in asp.net zach2004 VB.NET 2002/2003 Basics 1 September 12th, 2004 09:32 PM
Create HTML shadowpug VB.NET 2002/2003 Basics 6 April 9th, 2004 08:13 AM
Create list of logical drives in combobox bcmaverik VB.NET 2002/2003 Basics 1 February 7th, 2004 02:31 PM
Create list of logical drives in combobox bcmaverik Beginning VB 6 3 January 30th, 2004 02:47 PM



All times are GMT -4. The time now is 11:26 PM.


Powered by vBulletin®
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
© 2013 John Wiley & Sons, Inc.