Thread Drop down aus DB einlesen und zuordnen!?: Brauche Hilfe bei Syntax-Anpassung (8 answers)
Opened by Lena85 at 2003-12-23 02:20

Strat
 2003-12-24 01:16
#602 #602
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
super; dann koennte der Code in etwa folgendermaszen lauten:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#! /usr/bin/perl
use warnings;
use strict;
use DBI;
use CGI;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);

my $dsn = "....""
my ($user, $password) = ('user', 'password');

my $cgi = CGI->new();

my $dbh = DBI->connect("dbi::ODBC:$dsn", $user, password);
unless ($dbh) {
die "Error in connect: ", $DBI->errstr, "\n";
} # unless

my $statement = qq~SELECT dropdown, id, akw, isselected FROM tabellenname
ORDER BY dropdown, id~;

my $sth = $dbh->prepare($statement);
unless ($sth) {
die "Error in preparing SQL: ", $dbh->errstr, "\n";
} # unless

$sth->execute() or die "Error in executing SQL: ", $dbh->errstr, "\n";

my @selects = ();
my $lastDropdown = '':
while (my $line = $sth->fetchrow_hashref()) {
my $dropdown = $line->{dropdown};
delete($line->{dropdown};

# in die unterliste hinzufuegen, wenn diese dropdown schon
# mal vorkam
if ($dropdown eq $lastDropDown) {
push (@{ $selects[-1]->{subselect} }, $line);
} # if

# sonst naechstes select (fuege neues element der hauptliste hinzu
else {
push (@selects, { subselect => [ $line ], dropdown => $dropdown } );
} # else
} # while
$sth->finish();

# neues template erzeugen
my $template = HTML::Template->new(
filename => '.....',

# cached die templates => schneller, aber nicht notwendig
shared_cache => 1,
)
or die "Error: couldn't read new Template: $!\n";

# template fuellen
$template->param(SELECT => $selects);
# eventuell weitere parameter ...

# html-header ausgeben
print $cgi->header(-type => 'text/html');
print $template->output();

Habe den Code nicht getestet, aber so ungefaehr koennte er funktionieren. Bei CGI solltest du jedoch vielleicht das Programm mit die(...) beenden, sondern vielleicht zu einer Fehlerseite umleiten...


Das Template dazu:
[html]
....
<!-- TMPL_UNLESS NAME=SELECT -->
<!-- TMPL_LOOP NAME=SELECT -->

<select name="<!-- TMPL_VAR NAME=DROPDOWN -->">
<!-- TMPL_LOOP NAME=SUBSELECT -->
<option value="<!-- TMPL_VAR NAME=ID ESCAPE=HTML -->" <!--TMPL_IF NAME=ISSELECTED -->selected="selected"</TMPL_IF>>
<TMPL_VAR NAME=AKW ESCAPE=HTML -->
</option>
<!-- /TMPL_LOOP -->
</select>

<!-- /TMPL_LOOP -->
<!-- TMPL_ELSE -->
<p>Keine Daten vorhanden</p>
<!-- /TMPL_UNLESS -->
...
[/html]

Dir auch frohe Weihnachten
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Drop down aus DB einlesen und zuordnen!?: Brauche Hilfe bei Syntax-Anpassung