in reply to Re: Stuck on an idea..
in thread How to put links in a scroll box?
A lot of people think that by using the prepare/execute/fetch cycle they will be able to fetch only one row at a time. This is not always true. You may have to specify a bit more in order to achieve that ... but, even if you did only fetch one row at a time, this would hog up the CPU from other processes and you still have to send at least twice the amount of data to the browser (data wrapped in HTML). It is not always to the best thing to do, but it is good when you know you will be dealing with millions and millions of records. I recommend running a packet sniffer on the database port to see if all rows are being returned at once, or one row at a time.
Now, time for a rant. You are printing one line of HTML at a time. This is Perl, not Java! ;)
For the record, even if i used HTML::Template for this, i would still use CGI.pm's popup_menu(). Once you get the hang of it, it doesn't seem as daunting as it really is. ;)use strict; use warnings; use DBI; use CGI::Pretty qw(:standard); my $dbh = DBI->connect( qw(DBI:driver:database:host user pass), {RaiseError=>1}, ); my $sth = $dbh->prepare('select id,name from director order by name'); $sth->execute; my $users = $sth->fetchall_arrayref({}); print header, start_form('select_user'), popup_menu('user', [ map $_->{id}, @$users ], undef, { map {$_->{id} => $_->{name}} @$users }, ), p(submit), end_form, ;
jeffa
L-LL-L--L-LL-L--L-LL-L-- -R--R-RR-R--R-RR-R--R-RR B--B--B--B--B--B--B--B-- H---H---H---H---H---H--- (the triplet paradiddle with high-hat)
|
|---|