Jump to content

Two forms on one page in Perl


Recommended Posts

Am trying to get these two forms to work on my one page in Perl. When the first form submits, assuming the query is not in the Prolog file, it goes to the second form, which is a yes/no radio button submit. If yes, the query is sent again and appended; if no, the page does nothing. I know it has something to do with the @spres and the actual param being sent, because it works fine for the first part (seeing if the query is in the Prolog file), but when I have to actually submit the second form, the form goes blank, even if I have a simple print the param request (as is at the bottom of the code.)

 

I am trying to avoid doing to separate form pages, because even if I did manage the second page, after the query is done, the page would have to be sent back to the original form. Any help or ideas?

 

#!/usr/bin/perl

use strict;
use warnings;
use AI::Prolog;
use AI::Prolog::Engine;
use AI::Prolog::Term;
use CGI;
use CGI qw(:standard);
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
use CGI::Session ( '-ip_match' );
use Data::Dumper;

my $q = new CGI; #query, handle common gateway interface
my $pq = CGI->new(); #query spiderform
my $yn = CGI->new(); #query yes/no form

print "Content-type: text/html\n\n";

my $file = 'ancestry.pl';

open(PROLOGFILE, $file ) or die "$! \n";
local $/;
my $prologRules = <PROLOGFILE>;

my $prolog = AI::Prolog->new( $prologRules );

print <<PROG;

<form method="post" name="prol" action="loadanc.pl">
<input type="text" name="pqry" maxlength="150">
<input type="submit" value="send" name="sent">
<input type="reset" value="erase">
</form>

PROG

if($pq->param("sent")) {
my $prolq = param("pqry");
my @sp = split(/\W/,$prolq);

$prolog->query($prolq);
AI::Prolog::Engine->formatted(1); 

my ($results,@spres); #grab results, make array

while ($results = $prolog->results) {
	@spres = split(/\W/,$results);
	print "$spres[1] is the $spres[0] of $spres[3]<br>";							
	} #end while	


if (!@spres) {
	print "Failed: shall I add?";	

print <<QFORM;

<form method="post" name="yesno">
<input type="radio" name="sec" value="yes" />Yes
<input type="radio" name="sec" value="no" />No<br />

<input type="submit" value="send" name="ynquery">
<input type="reset" value="erase">
</form>
QFORM

if($pq->param("ynquery")) {
   print "test";
}
}

close( PROLOGFILE );

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.