I am building a project to track short track auto racing results. The
initial form below is displayed to a user where they select a race and input
how many cars started the race. The following script dyanamically creates
select boxes equal in number to the amount of cars starting the race. The
idea is for the user to select a driver for each finishing position. I
would then like to insert the results into an sql database. There would be
a row for each result containing the DRIVER_ID, FinishingPosition and
RACE_ID. What I am having trouble with is getting the form results passed
in a format I can then feed to a foreach (row of data) INSERT statement in
Perl. The variable tracker is used to tell the script what portion to
exectue. The processing script below tracker=1 section is where I want to
work the data. I have done a lot of research and tried different things but
really am stuck on this one. What I have in there right now returns the
variable names and values into a hash...but I don't think it is what I need.
Any help and guidance is appreciated. Thank you.
____________________________________________________________________________
______________
INITIAL FORM
#!/usr/bin/perl -w
use diagnostics;
use CGI;
use DBI;
#declare form variables
my $query = CGI->new();
my $hostname = ' ';
my $database = ' ';
my $user = ' ';
my $password = ' ';
my $driver = 'mysql';
#oonnect to database
my $dsn = "DBI:$driver:database=$database;host=$hostname";
my $dbh = DBI->connect($dsn, $user, $password) or die "Cant connect to
the DB:
$DBI::errstr\n";
#prepare data
my $getrace = $dbh->prepare("
SELECT
RACES.RACE_ID,
RACES.sequence,
TYPES.typelong,
SCHEDULE.event,
SCHEDULE.date,
PARTY.lname,
POINTFUND.description
FROM
TYPES LEFT JOIN RACES ON TYPES.TYPE_ID = RACES.TYPE_ID
LEFT JOIN POINTFUND ON RACES.POINTFUND_ID = POINTFUND.POINTFUND_ID
INNER JOIN SCHEDULE ON SCHEDULE.SCHEDULE_ID = RACES.SCHEDULE_ID
LEFT JOIN PARTY ON PARTY.PARTY_ID = SCHEDULE.TRACK_ID
ORDER BY
SCHEDULE.date, PARTY.lname");
$getrace->execute();
my $rce;
while (my @row = $getrace->fetchrow_array()) {
$rce .= qq| <option value="$row[0]">$row[4]- $row[6]- $row[2] $row[1] -
$row[3]</option>\n|;
}
$getrace->finish;
$dbh->disconnect;
print "Content-Type: text/html\n\n";
print <<EndOfHTML;
<html>
<head>
<title>Input Race Results</title>
</head>
<body>
<FORM METHOD=POST ACTION="http:// .cgi">
<INPUT TYPE="hidden" NAME="tracker" VALUE="0">
Select Race:
<select name="races">
$rce
</select>
<BR>
Number of starting positions: <INPUT TYPE="text" NAME="startingpos"
SIZE="5">
<P><FORM METHOD=POST ACTION="http://www. .cgi">
<INPUT TYPE=submit VALUE="Go to Results">
</FORM>
</body>
</html>
EndOfHTML
exit;
____________________________________________________________________________
__________________
FORM TO PROCESS DATA
#!/usr/bin/perl -w
print "Content-Type: text/html\n\n";
use diagnostics;
use CGI;
use DBI;
use CGI::Carp qw/fatalsToBrowser/;
#declare form variables
my $query = CGI->new();
my $tracker = $query->param('tracker');
my $race = $query->param('races');
my $finishpos = $query->param('finishpos');
my $spots = $query->param('startingpos');
my $results = $query->param('result');
my $hostname = ' ';
my $database = ' ';
my $user = ' ';
my $password = ' ';
my $driver = 'mysql';
my $trace_level = '2';
my $NewLocation = "http:// ";
#connect to database
my $dsn = "DBI:$driver:database=$database;host=$hostname";
my $dbh = DBI->connect($dsn, $user, $password) or die "Cant connect to the
DB:
$DBI::errstr\n";
my $getrace = $dbh->prepare("
SELECT
RACES.RACE_ID,
RACES.sequence,
TYPES.typelong,
SCHEDULE.event,
SCHEDULE.date,
PARTY.lname,
POINTFUND.description
FROM
TYPES LEFT JOIN RACES ON TYPES.TYPE_ID = RACES.TYPE_ID
LEFT JOIN POINTFUND ON RACES.POINTFUND_ID = POINTFUND.POINTFUND_ID
INNER JOIN SCHEDULE ON SCHEDULE.SCHEDULE_ID = RACES.SCHEDULE_ID
LEFT JOIN PARTY ON PARTY.PARTY_ID = SCHEDULE.TRACK_ID
WHERE RACES.RACE_ID = $race");
$getrace->execute();
my $rce;
while (my @row = $getrace->fetchrow_array()) {
$rce .= qq| $row[4]- $row[6]- $row[2] $row[1] - $row[3]\n|;
}
$getrace->finish;
#format driver output for reader
my $getdrv = $dbh->prepare("SELECT
ROSTER.ROSTER_ID,
ROSTER.carnum,
ROSTER.DRIVER_ID,
PARTY.lname,
PARTY.fname,
PARTY.suffix
FROM
ROSTER,
PARTY
WHERE
PARTY.PARTY_ID = ROSTER.DRIVER_ID
ORDER BY
PARTY.lname, PARTY.fname");
$getdrv->execute();
my $drv;
while (my @row = $getdrv->fetchrow_array()) {
$drv .= qq| <option value="$row[0]">$row[3], $row[4]</option>\n|;
}
$getdrv->finish;
my $finish;
if ($tracker eq 0){
$loop = 1;
do {
if ($loop <= $spots) {
$finish .=qq| <tr><td><INPUT TYPE=\"hidden\" NAME=\"finishpos$loop\"
VALUE=\"$loop\"</td><td><INPUT TYPE=\"hidden\" NAME=\"race$loop\"
VALUE=\"$race\"</td><td>$loop.</td><td>
<SELECT NAME=\"result$loop\"\n><option></option>$drv</SELECT></td></tr>|;
$loop++;
}
}until($loop > $spots);
print <<EndOfHTML;
<html>
<head>
<title>Input Race Results</title>
</head>
<body>
<FORM METHOD=GET ACTION="http://www. .cgi">
<INPUT TYPE="hidden" NAME="tracker" VALUE="1">
<br>
Race: $rce
<br>
<br>
<br>
<table>
$finish
</table>
<br>
<P><INPUT TYPE=submit>
</form>
</body>
</html>
EndOfHTML
}elsif($tracker eq 1){
@names = $query->param;
@values = $query->param('$_');
for $name (@names) { next if $name eq 'tracker'; $hash{$name} =
$query->param($name); }
foreach (sort(keys(%hash))) { print "$_ equals $hash{$_}"; }
print (%hash);
@them = @values[0 .. 3];
print (@them);
}else{
print("failure!\n");
}
$dbh->disconnect;
exit;
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]