In article <3827643.1005996666@[10.0.0.140]>,
 [EMAIL PROTECTED] (Birgit Kellner) wrote:

> I want to use CGI.pm to parse form input and store all name/value-pairs in 
> a hash.
> 
> At present, the code I have reads like this:
> 
> my $in = new CGI;
> my %in = &parse_form;
> 
> sub parse_form {
> 
> my @names = $in->param;
> foreach my $name ( @names ) {
>       if (param($name)) {
>       $in{$name} = $in->param($name);}
>       }
> foreach my $key (keys %in) {
>       if ($in{$key} eq "---") { # if this is a select field with no value 
> selected, it will have the value "---"
>               delete ($in{$key});
>               }
>       }
> return (%in)}
> 
> There are two cases where I run into problems with this code:
> 
> - multiple select fields. I guess storing all names in @names gets rid of 
> duplicate instances of names; at any rate, there are only unique array 
> elements in @names when the foreach loop loops over them. The problem is 
> that I won't know the names of the multiple select fields in advance, so I 
> can't do something specific with them. I thought of adding a hidden input 
> field to the form, with the name "multiple" and the value of the multiple 
> select field. Then I could first parse this field and, if it has a value, 
> treat the multiple select field differently from the other fields. (Implies 
> that I can only have one multiple select field per form, but that's fine.)
> 
> - there are forms where I have a text input field named "fieldname" and a 
> select field with the same name. Users are to select an item from the list 
> or alternatively, if the item does not occur in the list, enter a new 
> value. What the parse_form *should* do is ignore names without values from 
> the start, and not read them into @names and *then* check whether they have 
> values.
> 
> Thanks a lot for any advice,
> 
> Birgit Kellner
> 

look in cgi_docs.html (comes with CGI.pm when you install it.. check in 
the .cpan directory or wherever you installed it)

under Creating a New CGI Query Object, there's the sub-header "Fetching 
the Parameter List as a Hash" which has the details you need.

-- 
Scott R. Godin            | e-mail : [EMAIL PROTECTED]
Laughing Dragon Services  |    web : http://www.webdragon.net/
It is not necessary to cc: me via e-mail unless you mean to speak off-group.
I read these via nntp.perl.org, so as to get the stuff OUT of my mailbox. :-)

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to