Thread Probleme mit 2fachem Template-Loop (23 answers)
Opened by Bob at 2009-12-29 22:29

renee
 2009-12-30 08:33
#129815 #129815
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Bei so etwas ist es immer sehr nützlich, sich Gedanken darüber zu machen, was das Template an dieser Stelle erwartet. In diesem Fall ist es

Code: (dl )
1
2
3
4
5
6
7
8
9
box_list => [
{
box_name => 'irgendein name',
box_links => [
{ link => 'linktext1' },
{ link => 'linktext2' },
]
}
]


Wenn man das weiß, kann man besser einschätzen, wie man die Daten aus der DB speichert.

Du könntest es dann so machen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
my $stmt_box_name = 'SELECT box_name FROM navibox';
my $stmt_links = 'SELECT id,link_titel,link,categorie,box_name,option,content FROM navigation WHERE box_name=?';

my $sth_box_name = $dbh->prepare( $stmt_box_name ) or die $dbh->errstr;
my $sth_links    = $dbh->prepare( $stmt_links ) or die $dbh->errstr;

$sth_box_name->execute or die $dbh->errstr;

my @boxes;

while( my ($box_name) = $sth_box_name->fetchrow_array ) {
    $sth_links->execute( $box_name );

    my @links;
    while( my $hashref = $sth_links->fetchrow_hashref ) {
        push @links, { link => $hashref->{link} };
    }

    push @boxes, { box_name => $box_name, box_links => \@links };
}

$template->param( box_list => \@boxes );
(ungetestet)

Edit: die fetchrow_xxx-Methoden gehören zu den Statementhandles, nicht zum DB-Handle. Danke @murphy für den Hinweis.
Last edited: 2009-01-01 15:06:36 +0100 (CET)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/

View full thread Probleme mit 2fachem Template-Loop