Leser: 20
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
my $data = [
{
SERVER => $ergf[1],
DATENBANKLISTE => [
{
DATENBANK => $ergf[0]
},
]
}
{
SERVER => $ergf[1],
DATENBANKLISTE => [
{
DATENBANK => $ergf[0]
},
{
DATENBANK => $ergf[0]
}
]
}
];
#möglicher zusammenbau:
my $ref1={'SERVER'=>$ergf[1], 'DATENBANKLISTE'=>[{'DATENBANK'=>$ergf[0]}]};
my $ref2={'SERVER'=>$ergf[1], 'DATENBANKLISTE'=>[{'DATENBANK'=>$ergf[0]},{'DATENBANK'=>$ergf[0]}]};
my $data=[$ref1,$ref2];
1 2 3 4 5 6 7 8 9
my @superArray; #hostnamen in array speichern while (my @ergf = $abfr1->fetchrow_array){ if(grep $_ eq $ergf[1], @superArray){ #tue nichts, weil bereits im array }else{ push(@superArray, $ergf[1]); } }
1 2 3 4 5 6 7 8 9 10
my $data; ROW: while ( my @line = $q->fetchrow_array ) { for my $i ( @$data ) { if ( $i->{SERVER} eq $line[0] ) { push @{ $i->{DATENBANKLISTE} }, { DATENBANK => $line[1] }; next ROW; } # if } # for push @$data, { SERVER => $line[0], DATENBANKLISTE => [{ DATENBANK => $line[1] }] }; } # while
1 2 3 4 5
# also brauchst du das hier nicht ;) my $data = {}; while ( my @line = $q->fetchrow_array ) { push @{ $data->{$line[0]} }, $line[1]; } # while
1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- TMPL_LOOP NAME=SERVERLISTE -->
<li><a href="#"><!-- TMPL_VAR NAME=SERVER --></a>
<ul>
<!-- TMPL_LOOP NAME=DATENBANKLISTE -->
<li><a href="#"><!-- TMPL_VAR NAME=DATENBANK --></a>
<ul>
<li><a href="?section=status_db.pl&datenbank=<!-- TMPL_VAR NAME=DATENBANK -->">Status</a></li>
</ul>
</li>
<!-- /TMPL_LOOP -->
</ul>
</li>
<!-- /TMPL_LOOP -->
$navigation->param(SERVERLISTE => @data);
1
2
3
4
5
6
7
8
9
10
11
12
13
<%loop serverliste %>
<li><a href="#"><%= server %></a>
<ul>
<%loop dbs %>
<li><a href="#"><%= _ %></a>
<ul>
<li><a href="?section=status_db.pl&datenbank=<%= _ %>">Status</a></li>
</ul>
</li>
<%/loop dbs %>
</ul>
</li>
<%/loop serverliste %>
1 2 3 4 5 6 7 8 9 10
my @data = ( { server => "foo", dbs => [qw/ f1 f2 f3 /], }, { server => "bar", dbs => [qw/ b1 b2 b3 b4 /], }, );
1 2 3 4 5
my $htc = HTML::Template::Compiled->new( filename => '...', default_escape => "HTML", # unbedingt zur gewohnheit machen ); $htc->param(serverliste => \@data);