Re: CGI and DBI : using db queries in html

[email protected] (neil)
Newsgroups perl.beginners.cgi
Organization http://groups.google.com
Message-ID <[email protected]>
Thanks to all who replied (David Moreno Garza, Paul Lallo, and Sean
Davis who replied off-list).

Sean very kindly pointed out that I was in fact only one row with my
fetchrow_array statement.

Paul is correct and [ @studies ] and \@studies are in this instance
synonyms.

My script now works :D and for reference is included below (in case
others are searching for similar solutions).

Thanks for your help,

Neil

#!/usr/bin/perl -w
use strict;
use CGI;
use DBI;

### Initialise a new CGI object
my $q   = new CGI;

## Define the database connection
my $user = "xxxx";
my $dbh  = DBI ->
connect('DBI:mysql:localhost:database=gdraw;host=localhost;port=3306',
$user,'xxxx') || exit;

## Grab the datasets that are available by querying the
## 'studies' table
##
## TODO : Eventially need to make this so that it is base
##        on the user's permissions
my $statement = 'SELECT study FROM studies';
my $query     = $dbh   -> prepare($statement);
$query -> execute();
print "$query\n";
my @studies;

## Grab all rows from the query and place in the @studies array
 while(my $study = $query   -> fetchrow_array){
   push @studies, $study;
 }

## Print the web-page
print $q -> header,
      $q -> start_html(-title => "gDRAW - Genotype Database, R &
Analysis Web-interface", -style => {-src => "/css/gdraw1.css"}), "\n",
      $q -> h1("Existing Data"), "\n",
      $q -> p("You can select cohorts, markers and phenotypes to load
from below"), "\n",

## Start the form
      $q -> start_form(-action => "dbselect2.pl", -method => "post", -
enctype=>"multipart/form-data"),

## Have a pull-down box for selecting the studies that the
## user can access
     $q -> popup_menu(-name => 'study_select', -values =>
[ @studies ], -default => '' -labels => ''),

## End the form
      $q -> endform,
      $q -> hr, "\n",
      $q -> p("<a href=\"\" target=\"\">gDRAW</a> was written by <a
href=\"mailto:nshephard \<at\> gmail.com\">Neil Shephard</a>."), "\n",
      $q -> end_html;

exit;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.