Hallo,
ich habe eine mysql DB namens info mit einer Tabelle namens infotable. Aus dieser DB bzw. Tabelle sollen alle Daten ausgelesen und ausgegeben werden. Das ganze mache mit Perl und dem Modul HTML::Template. Hier einmal mein Template und mein Perl Script
HTML Template:
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
<!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ü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>TPMPL_VAR NAME="monat"</td>
<td>TPMPL_VAR NAME="tag"</td>
<td>TPMPL_VAR NAME="zeit"</td>
<td>TPMPL_VAR NAME="host"</td>
<td>TPMPL_VAR NAME="dienst"</td>
<td>TPMPL_VAR NAME="meldung"</td>
</tr>
</TMPL_LOOP>
</table>
</body>
</html>
und hier mein Perl Script
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
#!/usr/bin/perl -w
use strict;
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 $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 $template->output();
$dbh->disconnect();
Wenn ich das Perl Script ausführe bekomme ich eine Fehlermeldung in das error.log File. Die Fehlermeldung sieht so aus:
[Sat Jan 13 21:40:45 2007] [error] [client 127.0.0.1] HTML::Template->output() : fatal error in loop output : HTML::Template : Attempt to set nonexistent parameter 'meldung' - this parameter name doesn't match any declarations in the template file : (die_on_bad_params => 1) at /usr/local/share/perl/5.8.8/HTML/Template.pm line 2997
[Sat Jan 13 21:40:45 2007] [error] [client 127.0.0.1] at /opt/lampp/htdocs/xampp/testperl.pl line 38
[Sat Jan 13 21:40:45 2007] [error] [client 127.0.0.1] Premature end of script headers: testperl.pl
Kann es sein, dass das Modul HTML::Template einen Fehler hat? Ich benutze die Version 2.8. Ich verstehe nicht was mit dem Parameter meldung nicht stimmt. Es ist ein Parameter aus der Tabelle infotable unzwar der letzte der Tabelle. Hat vielleicht einer von euch eine Idee ?
edit pq: code-tags hinzugefügt\n\n
<!--EDIT|pq|1168792872-->