Popup aus Datenbank füllen mit CGI

hjmettel

Grünschnabel
Hi, SOS :)

Ich haber eine Datenbank (PostgreSQL) und möchte ein Popup-Menü im CGI-Script mit Daten aus dieser DB füllen. Habe den prepare auf das select und den execute, danach die übergabe in ein array (mittel fetchrow).

Habe nun das problem, das ergebnis in ein popup zu bringen. so wie ich es jetzt habe, bringt er mir zwar jeden datensatz, aber so, daß er mir jeden datensatz in einem popup bringt, also bei 3 einträgen in drei einträgen in der postresql-db bekomme ich 3 popups. Ich denke, daß irgendwie etwas mit meine schleifenkonstrukt falsch ist

while ( my $rowRef = $genreSth->fetchrow_hashref() ) {
@genre = ($rowRef->{'genrebez'} );

print(
$q->start_form(
-name => "form_auwahl",
-action => $q->url(), # der absolute URL des aktuellen Skripts ohne Parameter
),
$q->div([
$q->label( {
-for => "genre", },
"Genre:", )
]) .
$q->popup_menu(
{
-name => "genre",
-values => $genre[0],
-labels => $genre[0],
}),
$q->end_form(), ); };

für hilfe wäre ich dankbar
 
Ich würde Dir zu einem Template-Modul raten...

Wenn Du es trotzdem mit CGI.pm machen willst:

Code:
my @all_values;

while ( my $rowRef = $genreSth->fetchrow_hashref() ) {
    @genre = ($rowRef->{'genrebez'} );
    push @all_values, $genre[0];
}

print  $q->start_form(
    -name => "form_auwahl",
    -action => $q->url(), # der absolute URL des aktuellen Skripts ohne Parameter
),
$q->div([
$q->label( {
    -for => "genre", },
    "Genre:", )
]) .
$q->popup_menu(
{
    -name => "genre",
    -values => \@all_values,
    -default => $all_values[0],
}),
$q->end_form();


Mit einem Template-Modul:

Code:
use HTML::Template::Compiled;

my @all_values;

while ( my $rowRef = $genreSth->fetchrow_hashref() ) {
    @genre = ($rowRef->{'genrebez'} );
    push @all_values, $genre[0];
}

my $tmpl = HTML::Template::Compiled->new( scalarref => \_genre_template($q) );
$tmpl->param( GENRE => \@all_values );
print $tmpl->output;


sub _genre_template{
    my ($cgi) = @_;
    my $url    = $cgi->url;
    return qq~<form name="form_auwahl" action="$url">
    <div><label for="genre"></label>
    <select>
        <TMPL_LOOP NAME=GENRE><option value="<TMPL_VAR NAME=VALUE>"><TMPL_VAR NAME=VALUE></option>
        </TMPL_LOOP>
    </select>
    </div>
</form>~;
}
ungetestet
 
Also, ich habe das probiert und er zeigt mir
- ein popup mit einem Eintrag
- ein weiteres popup mit zwei Einträgen
- ein drittes popup (so wie es sein soll) mit allen 3 Einträgen

Was habe ich da noch verkehrt gemacht
 

Neue Beiträge

Zurück