Thread Baumstruktur mit unbekannter Tiefe mit HTML::Template::Compiled (8 answers)
Opened by renee at 2009-07-26 16:30

MartinR
 2009-07-27 09:28
#123594 #123594
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
2009-07-26T20:02:41 renee
Kannst Du da Deine Lösung kurz skizzieren?


Meil SQL-Teil sieht stark vereinfacht so aus
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
SELECT
struktur_1.struktur_id,
struktur_1.struktur_txt,
struktur_1.ebene
FROM
struktur AS struktur_1,
struktur AS struktur_2
WHERE
struktur_1.links BETWEEN struktur_2.links AND struktur_2.rechts
GROUP BY
struktur_1.links


Die Routine zum Erstellen der Struktur dann i.e. so
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
sub StrukturAuslesen {
my $self = shift;

my ( @Struktur, $struktur_id, $struktur_text, $ebene );
$self->SqlStatements::HoleStrukturSQL();
$self->{HoleStrukturSQL}->execute();
$self->{HoleStrukturSQL}->bind_columns(undef, \( $struktur_id, $struktur_text, $ebene ));

while ( $self->{HoleStrukturSQL}->fetch() ) {
my $padding = ($ebene * 5);
my %StrukturHash = (
ID => $struktur_id,
PADDING => $padding,
TITEL => $struktur_text,
);
push (@Struktur, \%StrukturHash);
}

return \@Struktur;
}


und im Template vereinfacht sowas
Code: (dl )
1
2
3
4
5
6
7
<!--TMPL_LOOP STRUKTUR_ZEILEN -->
<div id="tr_objekt_<!-- TMPL_VAR ID -->" class="struktur_zeile">
<div style="margin-left:<!-- TMPL_VAR PADDING -->px;">
<!--TMPL_VAR TITEL -->
</div>
</div>
<!--/TMPL_LOOP STRUKTUR_ZEILEN -->



Wie gesagt, ich habe mir angewohnt gleich beim Anlegen eines Datensatzes die "Ebene" zu berechnen und dann mit im Datensatz zu speichern.
Last edited: 2009-07-27 09:32:35 +0200 (CEST)

View full thread Baumstruktur mit unbekannter Tiefe mit HTML::Template::Compiled