"Add" button to add additional forms for submission (reusable component?)

Greetings!

I have to customize yform.cgi, to allow for multiple requests of bottle collections.  Right now, it is statically set for 18 different bottle collections (there are 18 identical forms hardcoded in my script).  However, I'd like for the form to display only one form for bottle collection, by default, and have a button, entitled "Add Form", which will return a new form  for bottle collection, every time this button is pushed, so that anywhere from '1n' to 'n-1' forms will be generated at the push of this button.  I'm assuming I have to have a function with the form, and have it called every time the button "Add Form" is pushed .. but I'm really fuzzy about the implementation.  Can anyone please help me out?

Thanks!!
Janice  
jmc430Asked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

inq123Commented:
Hi jmc430,

Just store a count variable in a cookie on user's side (or use a session variable would be more convenient if you're using php).  Every time a user clicks on that add form, have that count added by one (take mod 18 to recycle count).  Display appropriate form based on the value of the count variable.

Cheers!
0
jmc430Author Commented:
Hi inq123,

Can you provide me with an example of how this is done?  I'm using perl ..

Do I use an if then statement and set the count variable equal to the form?

Thanks!
jmc430
0
inq123Commented:
Hi, I just worked out this example for you.  Do note that there're other alternatives to your question like using javascript, but this approach below is more powerful.  Save the code below as cookie.pl in your server's main cgi-bin (url for this cgi-bin should be /cgi-bin).  Also note that if you're on unix you need to change the first line of code to #!/usr/bin/perl.  With my code below, with each button click the user can add one form, with a maximum of 18 forms.  When user reached 18 forms pressing "add" button will not add any more form and also will not decrease any form (unlike I said earlier, by using % 18 to recycle count, which would decrease form.  I think that's not desired).  If user instead of clicking add, clicked submit button in one of those 18 forms to submit an order, then they'll get an acknowledgement page.  I think that should be a complete enough example for you.  Now here's the code:

#!c:/Perl/bin/Perl.exe
use CGI qw/:standard/;
use CGI::Cookie;
use CGI::Carp qw(fatalsToBrowser);
use Dumpvalue;
use strict;

# Create new cookies and send them
my %cookies = fetch CGI::Cookie;
my ($cookie, $count);
if($cookies{'count'})
{
  $count = ($cookies{'count'}->value > 18)? 18 : $cookies{'count'}->value;
}
else
{
  $count = 0;
}
$cookie = new CGI::Cookie(-name=>'count',-value=>$count+1);
if(!param() || param('add')) # meaning that user first accessed this page or pressed add button
{
  print header(-cookie=>$cookie),
        start_html;
  # print the main form with an add button
  print <<"FORM";
    <form name=main method=post action=/cgi-bin/cookie.pl>
      <input type=submit name=add value=add>
    </form>
FORM
 
  for(my $i = 0; $i < $count; $i++)
  {
    print_form($i);
  }
}
else # user submitted an order using one of the 18 forms, then don't update cookie
{
  print header,
        start_html;
  print "we got your order!  Thank you.<br>\n";
}
print end_html;

sub print_form
{
  my $i = shift;
  print <<"FORM";
  <form name=myform$i method=post action=/cgi-bin/cookie.pl>
    <input type=text name=mystuff value=\"this is form #$i\">
    <input type=submit name=submit value=submit>
  </form>
FORM
}
0
PMI ACP® Project Management

Prepare for the PMI Agile Certified Practitioner (PMI-ACP)® exam, which formally recognizes your knowledge of agile principles and your skill with agile techniques.

inq123Commented:
jmc430,

It's been a week, got any result yet?
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
jmc430Author Commented:
Hi ing123,

Sorry for the delayed response..

I hope you're not upset with me!

Apologies again ... hope you have a good day!

jamie
0
inq123Commented:
No, not upset at all.  If I were upset, I'd have made noise long time ago. :)

Thanks for the unexpected points!
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Scripting Languages

From novice to tech pro — start learning today.