> I know I am missing a lot in my knowledge, but I'm trying to figure
> something out & seemingly am in a hole...
MySQL can do a lot of this for you, I believe...
You want a random record from the database and retrieve a particular field
from that record:
# Untested, but you would call this subroutine like so:
# getRandomRecord( $dbh, "SELECT field_Im_interested_in FROM $TABLE
# WHERE month like $month and day like $day" );
# NOTE: $sql (2nd parameter) can't already have a LIMIT in it, or any SQL
# statement which a LIMIT suffix would result in an invalid SQL statement.
sub getRandomRecord {
my( $dbh, $sql ) = @_;
my ( $sth, $randomNumber, $myValue );
$sth = $dbh->prepare( $sql );
$sth->execute;
$randomNumber = int(rand( $sth->rows ) );
$sth->finish;
# $randomNumber will be 0 <= $randomNumber < $sth->rows, which
# fits nicely with MySQL's LIMIT clause
( $myValue ) = $dbh->selectrow_array( $sql . " LIMIT $randomNumber,
1" );
return $myValue;
}
HTH & Have Fun!
Jason
> the task is as follows:
>
> 1) query a mysql database for as many records as match a criteria
> (I can do this OK)
>
> 2) put the resulting records, how ever many there are, into a list or an
> array
>
> 3) count the number of records I have retrived
> (I can do this OK)
>
> 4) choose a random record number
> (I can do this)
>
> 5) get the record corresponding to the random record number from the array
>
> 6) get a particular field from the stored record
>
> I am using DBI to get the data from the database. here is what I have so
> far:
>
> sub getRandomRecord{
> my $cgi = shift;
> my $dbh = shift;
> my $month = shift;
> my $day = shift;
>
> my $searchResult;
> my $returnValue;
>
> #prepare and execute SQL statement
> $sqlstatement = "SELECT * FROM $TABLE WHERE month like $month and day
> like $day";
> $sth = executeSQLStatement($sqlstatement, $dbh);
>
> $counter = 0;
>
> # put the records returned in an array/list & count how many
> while ($searchResult = $sth->fetchrow_array() )
> {
> # get the 4th field from the record in the array & put it in the list
> my @list = ($searchResult[3]);
> ++$counter;
> }
>
> # pass the counter to the random integer routine & get a value back
> my $randomNumber = getRandomNumber($counter);
>
> $returnValue = @list[$randomNumber];
>
> # clean up the DBI
> $sth->finish();
>
> return $returnValue
> }
>
>
>
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]