sub erstelle_navs { my $insert_id = shift; my $parent = shift; die "Undefinierte Parameter in Funktion erstelle_navs" unless defined $insert_id and defined $parent; die "Unsinniger Wert für \$parent '$parent'" unless $parent >= 0; die "Unsinniger Wert für \$insert_id '$insert_id'" unless $insert_id >= 0; my $vnav = get_template_bn('vnav'); my $vnav_sub = get_template_bn('vnav_sub'); while ($parent >= 0) { # -- ist die aktuelle Nummer überhaupt irgendwo als parent angegeben? my $cmd0 = "SELECT parent FROM seiten"; my $sth0 = $dbh->prepare($cmd0) || die $dbh->errstr; my $rv0 = $sth->execute || die $dbh->errstr; if ($rv0 eq "0E0") { last; } else { my $found = 0; while (my ($proveParent) = $sth0->fetchrow_array()) { if ($proveParent == $parent) { $found = 1; } } unless ($found) { --$parent; next; } } # gibt an, dass was gemacht wurde $template->param("error" => "seite erstellt ($parent)"); my $cmd = $parent == 0 ? "SELECT keyword, titel FROM seiten WHERE parent='$parent'" : "SELECT keyword, titel FROM seiten WHERE parent='$parent' and visible=1"; my $sth = $dbh->prepare($cmd) || die $dbh->errstr; my $rv = $sth->execute || die $dbh->errstr; my $vnav_template = $parent == 0 ? $vnav : $vnav_sub; my @rec_sites = (); # merken, für welche Seiten die Nav erstellt wird my $seiten = []; #array für LOOP-values while (my ($keyword, $titel) = $sth->fetchrow_array()) { push @{ $seiten }, { "link" => $cgi->a({href => $template->{relative_url} . "?action=$keyword" }, "$titel")}; push @rec_sites, $titel; } # while( my ($keyword, $titel) = $sth->fetchrow_array() ) { $sth->finish(); # dieselbe Nav für alle mit gleichem parent! my $vnav_zw_t = HTML::Template->new(arrayref => [$vnav_template], die_on_bad_params => 0, associate => [$template, $cgi]); $vnav_zw_t->param("vnav" => $seiten); # insert foreach my $elem (@rec_sites) { my $cmd1 = "UPDATE seiten SET vnav=" . $dbh->quote($vnav_zw_t->output()) . " WHERE titel=" . $dbh->quote($elem); unless ($dbh->do($cmd1)) { die($dbh->errstr, "Error in executing Sql-Statement:\n\t$cmd1"); } } --$parent; } # while $parent >= 0 } #erstelle_navs