Schrift
[thread]8643[/thread]

HTML::Template TMPL_IF Block in TMPL_LOOP Block

Leser: 1


<< >> 10 Einträge, 1 Seite
kruemmel
 2007-01-14 17:28
#73197 #73197
User since
2006-02-12
33 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich hoffe das Thema dieses Threads passt in etwa zu meiner Frage.

Ich habe folgende Tabellen-Boxen in meinem LOOP Block

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- TMPL_LOOP NAME=data -->

<tr>

<td><!-- TMPL_VAR NAME=Monat --></td>
<td><!--TMPL_VAR NAME=Tag --></td>
<td><!--TMPL_VAR NAME=Zeit --></td>
<td><!--TMPL_VAR NAME=Host --></td>
<td><!--TMPL_VAR NAME=Dienst --></td>
<td><!--TMPL_VAR NAME=Meldung --></td>
</tr>

<!-- /TMPL_LOOP -->


Ich nenne es einmal Tabellen-Boxen weil diese Boxen ja mit Werten gefüllt werden. Jetzt möchte ich aber eine Bedingung (TMPL_IF) mit einbauen. Die Bedingung soll auf die erste Box (Monat) angewendet werden. Unzwar soll die gesamte Zeile in der Ausgabetabelle einen roten Hintergrund bekommen wenn der Wert des Monats: "Dec" ist. Kurz gesagt: Rote Zeile wenn Wert Dec in Tabellen-Box Monat auftaucht. Ich habe schon sämtliche Kombinationen dir mir nützlich erschienen ausprobiert es hat aber keine funktioniert. Kann man vielleicht gar keine TMPL_IF Bedingung in ein TMPL_LOOP packen?
renee
 2007-01-14 17:44
#73198 #73198
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Doch geht...
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- TMPL_LOOP NAME=data -->

<tr>

<td <!-- TMPL_IF NAME=IS_DEC -->style="background-color: red"<!-- /TMPL_IF -->><!-- TMPL_VAR NAME=Monat --></td>
<td><!--TMPL_VAR NAME=Tag --></td>
<td><!--TMPL_VAR NAME=Zeit --></td>
<td><!--TMPL_VAR NAME=Host --></td>
<td><!--TMPL_VAR NAME=Dienst --></td>
<td><!--TMPL_VAR NAME=Meldung --></td>
</tr>

<!-- /TMPL_LOOP -->


Im Programm musst Du halt noch den Code anpassen und bei jeder Zeile überprüfen, ob der Monat Dezember ist. Wenn ja, musst Du IS_DEC auf 1 setzen, ansonsten auf 0.

Wenn Du Deinen Code zeigst, wie Du die Daten für die Tabelle bekommst, zeig ich es Dir...
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/
kruemmel
 2007-01-14 17:49
#73199 #73199
User since
2006-02-12
33 Artikel
BenutzerIn
[default_avatar]
hier mal mein Code


Code: (dl )
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
#!/usr/bin/perl -w

use strict;
#use CGI;
use DBI;
use HTML::Template;


# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Datenbankdaten und Verbindung zur DB herstellen
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Datenbank
my $datenbank = "info";
# Datenbankhost
my $datenbankhost = "127.0.0.1";
# Datenbankusername
my $datenbankuser = "root";
# Datenbankpasswort
my $datenbankpw = "";


my $dbh = DBI->connect("DBI:mysql:$datenbank:$datenbankhost","$datenbankuser","$datenbankpw")
or die "Fehler bei der Datenbankverbindung aufgetreten.";

#my $CGI = CGI->new();

my $sth = $dbh->prepare('select Monat, Tag, Zeit, Host, Dienst, Meldung
from infotable');

$sth->execute();

my $rows;
push @{$rows}, $_ while $_ = $sth->fetchrow_hashref();

my $template = HTML::Template->new(filename => 'template1.html');
$template->param(data => $rows);

#print $CGI->header();
print "Content-Type: text/html\n\n";
print $template->output();

$dbh->disconnect();
renee
 2007-01-14 18:33
#73200 #73200
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
push @{$rows}, $_ while $_ = $sth->fetchrow_hashref();


zu

Code: (dl )
push @{$rows}, {%$_, IS_DEC => $_->{Monat} eq 'Dec' ? 1 : 0} while $_ = $sth->fetchrow_hashref();
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/
pq
 2007-01-14 18:48
#73201 #73201
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
oder mit CPAN:HTML::Template::Compiled:
<td <!-- TMPL_SWITCH Monat --><!-- TMPL_CASE Dec -->style="background-color: red"<!-- /TMPL_SWITCH -->><!-- TMPL_VAR NAME=Monat --></td>
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
kruemmel
 2007-01-14 21:25
#73202 #73202
User since
2006-02-12
33 Artikel
BenutzerIn
[default_avatar]
kann es sein das mit der Zeile

Code: (dl )
<td <!-- TMPL_SWITCH Monat --><!-- TMPL_CASE Dec -->style="background-color: red"<!-- /TMPL_SWITCH -->><!-- TMPL_VAR NAME=Monat --></td>


etwas nicht stimmt? Mein error log sagt da ist ein Fehler drin.
renee
 2007-01-14 23:05
#73203 #73203
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Benutzt Du denn auch CPAN:HTML::Template::Compiled statt CPAN:HTML::Template??

Und welchen Fehler meldet denn die error.log?
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/
kruemmel
 2007-01-14 23:21
#73204 #73204
User since
2006-02-12
33 Artikel
BenutzerIn
[default_avatar]
ja ich benutze HTML::Template::Compiled


hier nochmal meine Scripte

Code: (dl )
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/perl -w

use strict;
use CGI;
use DBI;
#use HTML::Template;
use HTML::Template::Compiled;


# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Datenbankdaten und Verbindung zur DB herstellen
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Datenbank
my $datenbank = "info";
# Datenbankhost
my $datenbankhost = "127.0.0.1";
# Datenbankusername
my $datenbankuser = "root";
# Datenbankpasswort
my $datenbankpw = "";


my $dbh = DBI->connect("DBI:mysql:$datenbank:$datenbankhost","$datenbankuser","$datenbankpw")
or die "Fehler bei der Datenbankverbindung aufgetreten.";

my $CGI = CGI->new();

my $sth = $dbh->prepare('select Monat, Tag, Zeit, Host, Dienst, Meldung
from infotable');

$sth->execute();

my $rows;
push @{$rows}, $_ while $_ = $sth->fetchrow_hashref();
#push @{$rows}, {%$_, IS_DEC => $_->{Monat} eq 'Dec' ? 1 : 0} while $_ = $sth->fetchrow_hashref();

my $template = HTML::Template->new(filename => 'template1.html');
$template->param(data => $rows);

print $CGI->header();
#print "Content-Type: text/html\n\n";
print $template->output();

$dbh->disconnect();





<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">

<head>

<title><"Ergebnis von auth.log"></title>

</head>

<body>

<h1>Tabelle f&uuml;r die Datei auth.log</h1>

<table border="1">
<caption>Assoziationen</caption>
<tr>

<th>Monat</th>
<th>Tag</th>
<th>Zeit</th>
<th>Host</th>
<th>Dienst</th>
<th>Meldung</th>

</tr>

<!-- TMPL_LOOP NAME=data -->

<tr>

<td <!-- TMPL_SWITCH Monat --><!-- TMPL_CASE Dec -->style="background-color: red"<!-- /TMPL_SWITCH -->><!-- TMPL_VAR NAME=Monat --></td>
<td><!-- TMPL_VAR NAME=Tag --></td>
<td><!-- TMPL_VAR NAME=Zeit --></td>
<td><!-- TMPL_VAR NAME=Host --></td>
<td><!-- TMPL_VAR NAME=Dienst --></td>
<td><!-- TMPL_VAR NAME=Meldung --></td>

</tr>

<!-- /TMPL_LOOP -->

</table>

</body>

</html>




und hier die Fehlermeldung


Quote
[Sun Jan 14 22:12:47 2007] [error] [client 127.0.0.1] Can't locate object method "new" via package "HTML::Template" at /opt/lampp/htdocs/xampp/testperl.pl line 37.
[Sun Jan 14 22:12:47 2007] [error] [client 127.0.0.1] Premature end of script headers: testperl.pl


Die Fehlermeldung weist als Folge auf Zeile 37 im testperl.pl hin. Die Zeile 37 heisst:

my $template = HTML::Template->new(filename => 'template1.html');


Wenn ich die Variante von Renee probiere funktioniert es. Ich würde aber auch gerne Wissen warum die andere nicht funktioniert. Habe mal die Erklärung vom HTML::Template::Compiled auf CPAN gelesen und verglichen. Konnte aber keinen Fehler finden.\n\n

<!--EDIT|kruemmel|1168809990-->
pq
 2007-01-15 01:18
#73205 #73205
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
du musst ja auch beim new() die richtige klasse angeben...
Code: (dl )
my $template = HTML::Template::Compiled->new(filename => 'template1.html');
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
kruemmel
 2007-01-15 07:43
#73206 #73206
User since
2006-02-12
33 Artikel
BenutzerIn
[default_avatar]
Danke pq ich war wohl gestern Abend schon etwas blind.


Ich danke euch allen das ihr mich so großartig unterstützt habt und mir eine große Unterstützung wart im Thema Perl wieder etwas mehr heran zu schreiten. Perl ist schon ein großes Thema das sehe ich ja schon an meinen oreilly Büchern. Naja mühsam ernährt sich das Eichhörnchen.
<< >> 10 Einträge, 1 Seite



View all threads created 2007-01-14 17:28.