On Tuesday, April 30, 2002, at 04:17 PM, Tor Hildrum wrote:
> First of all, I would just like to apologize for not sending this to the > CGI-list, but I prefer this list. As this is where I've gotten the best > help > in the past. Blame yourself :) > > I was reading CGI.pm when I discovered that you could use the -value > argument from submit buttons, and assign them to variables. > From CGI.pm: > ########### > submit() will create the query submission button. Every form > should have one of these. > The first argument (-name) is optional. You can give the button > a name if you have several submission buttons in your form and > you want to distinguish between them. The name will also be used > as the user-visible label. Be aware that a few older browsers > don't deal with this correctly and never send back a value from a > button. > The second argument (-value) is also optional. This gives the > button a value that will be passed to your script in the query > string. You can figure out which button was pressed by using > different values for each one: > $which_one = $query->param('button_name'); > ########## > > I was thinking of ways I could use this, and tried with this idea: > > my $q = new CGI; > my $buttonVelgArrangement = undef; > > if ($buttonRegistrer) { FerdigRegistrering(); } > elsif ($buttonVelgArrangement) { Registrer(); } > else { VelgArrangement(); } > > sub VelgArrangement { > print $q->start_html, > $q->h1("here is a form"), > ## FORM HERE > $q->submit(-name=>'velgarrangement', value=>'Velg'), > $q->end_html; > my $button = \$buttonVelgArrangement; > $button = $q->param('velgarrangement'); > } first you are assigning to $button your flag that you test and then overwrite that with the value returned from the submit. don't need both, do you? in neither case do you assign anything to $buttonVelgArrangement which is the flag you are testing above. i would think you want to assign something to $buttonVelgArrangement. and same for the other flag. > When I try to use this method, nothing happens when I press the submit > button. Is this method possible, or am I misunderstanding something? > I was hoping it would jump to Registrer(). > Is the problem that when I hit the submit-button, a new CGI call is sent > to > the server, and $buttonVelgArrangement is again undef? > Has anyone used this feature of the submit button before (in what way?)? > > Any help/info is greatly appreciated. > > Tor > (I added my test code below) > > -- START FULL EXAMPLE CODE > #!/usr/bin/perl > use Strict; > use DBI; > use CGI qw(:standard); > > my $q = new CGI; > my $host = "localhost"; > my $user = "tor"; > my $password = "password"; > my $database = "nuug"; > my $table = "arrangement"; > my $buttonVelgArrangement = undef; > My $buttonRegistrer = undef; > > if ($buttonRegister) { FerdigRegistrering(); } > elsif ($buttonVelgArrangement) { Registrer(); } > else { VelgArrangement(); } > > sub VelgArrangement { > my @arrangement; > my $dbh = DBI->connect("DBI:mysql:database=$database;host=$host", $user, > $password, {'RaiseError' => 1}); > my $sth = $dbh->prepare("select * from $table"); > $sth->execute(); > while (my $ref = $sth->fetchrow_hashref()) { > push(@arrangement, $ref->{'kort'}); > } > > print $q->header, > $q->start_html('Registrering'), > $q->h1("NUUG Arrangementsregistrering "), hr, > $q->h3("Velg arrangement: "), popup_menu(-name=>'arrangement', > -values=>\@arrangement), > $q->hr, > $q->submit(-name=>'velgarrangement', -value=>'Velg'), > $q->end_html; > my $button = \$buttonVelgArrangement; > $button = $q->param('velgarrangement'); > } > > sub Registrer { > print $q->header, > $q->start_html('Registrering'), > $q->startform(), > $q->textfield(-name=>'navn', -default=>'Ola Nordmann', -size=>35, > -maxlength=>50), > $q->textfield(-name=>'epost', -default=>'Ola\@nordmann.no', > -size=>50, -maxlength=>50), > $q->endform, > $q->p,h1('Du valgte: '), $q->param('arrangement'), > $q->submit(-name=>'registrer', value=>'Registrer'), > $q->end_html; > My $button = \$buttonRegistrer; > $button = $q->param('registrer'); > } > > ## I haven't done FerdigRegistrering(), since this submit-experimenting > ## didn't work. > > --END OF CODE > > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] >