?
Solved

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

Posted on 2003-10-24
6
Medium Priority
?
195 Views
Last Modified: 2013-12-25
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  
0
Comment
Question by:jmc430
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
6 Comments
 
LVL 8

Expert Comment

by:inq123
ID: 9618053
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
 

Author Comment

by:jmc430
ID: 9627050
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
 
LVL 8

Expert Comment

by:inq123
ID: 9631000
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
Get real performance insights from real users

Key features:
- Total Pages Views and Load times
- Top Pages Viewed and Load Times
- Real Time Site Page Build Performance
- Users’ Browser and Platform Performance
- Geographic User Breakdown
- And more

 
LVL 8

Accepted Solution

by:
inq123 earned 2000 total points
ID: 9667933
jmc430,

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

Author Comment

by:jmc430
ID: 11559333
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
 
LVL 8

Expert Comment

by:inq123
ID: 11560037
No, not upset at all.  If I were upset, I'd have made noise long time ago. :)

Thanks for the unexpected points!
0

Featured Post

Get 15 Days FREE Full-Featured Trial

Benefit from a mission critical IT monitoring with Monitis Premium or get it FREE for your entry level monitoring needs.
-Over 200,000 users
-More than 300,000 websites monitored
-Used in 197 countries
-Recommended by 98% of users

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this tutorial I will focus on how to use WhizBase as a tool for sending ICQ messages to ICQ. Here I will use a new technology in WhizBase, published in WhizBase 5.1 version. In this tutorial I will use 3 files, pager.wbsp for the processing, e…
This article will show, step by step, how to integrate R code into a R Sweave document
Learn the basics of lists in Python. Lists, as their name suggests, are a means for ordering and storing values. : Lists are declared using brackets; for example: t = [1, 2, 3]: Lists may contain a mix of data types; for example: t = ['string', 1, T…
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
Suggested Courses

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question