|< 1 2 >| | 13 Einträge, 2 Seiten |
do { $parent--; }while( $parent >= 0 ) # do
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
sub erstelle_navs {
my $insert_id = shift;
my $parent = shift;
my $vnav = get_template_bn('vnav');
my $vnav_sub = get_template_bn('vnav_sub');
do {
# -- 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 = undef;
if( $parent == 0 ){
# oberste Ebene: visible egal, da visible nur für subnavs!
$cmd = "SELECT keyword, titel FROM seiten WHERE parent='$parent'";
}else{
$cmd = "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 = undef;
if ( $parent == 0 ){
$vnav_template = $vnav;
}else{
$vnav_template = $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 ) # do
} #erstelle_navs
[E|B,11.01.2004, 21:03]@pktm
Welchen Startwert hat denn $parent?
Denk dran, dass "do" zuerst ausgeführt wird und erst dann die "while"-Schleife ausgewertet wird.
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
63
64
65
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
|< 1 2 >| | 13 Einträge, 2 Seiten |