Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5687[/thread]

Ausgabefehler.... HILFE: der gibt nur sch.... aus

Leser: 1


<< |< 1 2 >| >> 20 Einträge, 2 Seiten
Gast Gast
 2003-09-04 01:07
#83724 #83724
Hi,

ich arbeite seit einiger Zeit an einer Datenbanksoftware. Diese gibt mehrere Datensätze untereinander aus. Merkwürdigerweise zerstört er hin und wieder das komplette Layout indem er einfach irgendeinen scheiss ausgibt. Kann mir das echt nicht erklären, zumal das unregelmässig auftrtitt. Mal kommt so ein Fehler, mal nicht.

Das ganze sieht z.B. so aus:
http://www.crs-software.de/_qmtec/fehler1.jpg

Meine Software:
Windows XP
Apache 2.045
ActivePerl 5.8.0
Perl-Module: HTML-Template, DBI, DBD-mysql, DBD-odbc

Kann mir einer sagen woran das eventuell liegt? Weiss echt nicht wie ich das wegbekommen kann....
jan
 2003-09-04 01:14
#83725 #83725
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
script posten.
datenbankstruktur posten.
übergebene parameter posten.

ansonten kann man nur raten: du hast irgendwo einen fehler in deinem script ;)
vielleicht hast du ein schließendes tag irgendwo in einem bedingtem block o.ä.
[HR]Doomrunner
 2003-09-04 12:06
#83726 #83726
User since
2003-09-04
77 Artikel
BenutzerIn
[default_avatar]
jo, kann mir zwar nicht vorstellen, dass es am script liegt, aber hier ist es. Ich habe den Ausschnitt gepostet, in dessen Ausgabe der Fehler kommt. Das gesamte Script ist nämlich 1370 Zeilen lang. Wäre echt cool, wenn jemand was finden würde. Ist extrem wichtig.

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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
sub Daten_Ausgabe {
&allgemeineseinlesen;
&Kalender3($allgemein->{freigabemandokusdatum});

# Layout Einlesen
my $template = HTML::Template->new(filename => $LayoutDateienPfad.'mdoku/mhb-liste.htm');
$template->param(benutzer => $in{benutzer});
$template->param(freigabetag => $Zeit[2]);
$template->param(freigabemonat => $Zeit[1]);
$template->param(freigabejahr => $Zeit[4]);
$template->param(ort => $allgemein->{ort});
$template->param(nkuerzel => $allgemein->{namemandokusfreigabe});

# Kapitel:
my $sql = qq{ SELECT * FROM mdoku_kapitel where geloescht = 'n' and aktiv like 'ja' order by nummer, nummer2, nummer3 };

my $sth = $dbh->prepare( $sql );
$sth->execute();

while( $row = $sth->fetchrow_hashref ) {

my %row_data1;

$row_data1{Inhaltnummer} = "$row->{nummer}";

if($row->{tabart} eq "oberkap") {
$row_data1{zeilebg} = "#F4F4F4";
#$row_data1{Bearbeiten} = "<a href=$Tabellenname.pl?ID=$row->{ID}&art=bearbeitenformoberkap&benutzer=$in{benutzer}><image src=\"$BearbeitenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";
$row_data1{Bearbeiten} = "&nbsp;";
#$row_data1{Loeschen} = "<a href=$Tabellenname.pl?ID=$row->{ID}&art=loeschenoberkap&benutzer=$in{benutzer}><image src=\"$LoeschenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";
$row_data1{Inhaltversion} = "&nbsp;";
}
if($row->{tabart} eq "zwkap") {
$row_data1{Inhaltnummer} .= ".$row->{nummer2}";
#$row_data1{Bearbeiten} = "<a href=$Tabellenname.pl?ID=$row->{ID}&art=bearbeitenformzwkap&benutzer=$in{benutzer}><image src=\"$BearbeitenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";
$row_data1{Bearbeiten} = "&nbsp;";
#$row_data1{Loeschen} = "<a href=$Tabellenname.pl?ID=$row->{ID}&art=loeschenzwkap&benutzer=$in{benutzer}><image src=\"$LoeschenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";
$row_data1{Inhaltversion} = "&nbsp;";
}
if($row->{tabart} eq "unterkap") {
if($row->{nummer2} ne "") { $row_data1{Inhaltnummer} .= ".$row->{nummer2}"; }
else{ $row_data1{zeilebg} = "#F4F4F4"; }
if($row->{nummer3} ne "") { $row_data1{Inhaltnummer} .= ".$row->{nummer3}"; }
$row_data1{Bearbeiten} = "<a href=$Tabellenname.pl?ID=$row->{ID}&art=bearbeitenformunterkap&benutzer=$in{benutzer}><image src=\"$BearbeitenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";
#$row_data1{Loeschen} = "<a href=$Tabellenname.pl?ID=$row->{ID}&art=loeschenunterkap&benutzer=$in{benutzer}><image src=\"$LoeschenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";
$row_data1{Inhaltversion} = "$row->{version}";
}

$row_data1{Inhalttitel} = "<a href=\"mdoku_admin.pl?art=ausgabe$row->{tabart}&benutzer=$in{'benutzer'}&ID=$row->{ID}\">$row->{titel}</a>";

push(@loop_data1, \%row_data1);
}
$sth->finish();

$template->param( kapitel => \@loop_data1 );

# Verfahrensanweisungen:
$sql = qq{ SELECT * FROM mdoku_verfahren where geloescht = 'n' order by nummer, nummer2, nummer3, nummer4};
$sth = $dbh->prepare( $sql );
$sth->execute();

while( $row = $sth->fetchrow_hashref ) {

my %row_data2;

$row_data2{vanummer} = "$row->{nummer}";
if($row->{nummer2} ne "") { $row_data2{vanummer} .= ".$row->{nummer2}"; }
if($row->{nummer3} ne "") { $row_data2{vanummer} .= ".$row->{nummer3}"; }
if($row->{nummer4} ne "") { $row_data2{vanummer} .= " - $row->{nummer4}"; }

$row_data2{vatitel} = "<a href=\"mdoku_admin.pl?art=ausgabe$row->{tabart}&benutzer=$in{'benutzer'}&ID=$row->{ID}\">$row->{titel}</a>";
$row_data2{vaversion} = "$row->{version}";

$row_data2{Bearbeiten} = "<a href=$Tabellenname.pl?ID=$row->{ID}&art=bearbeitenformverfahren&benutzer=$in{benutzer}><image src=\"$BearbeitenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";
$row_data2{Loeschen} = "<a href=$Tabellenname.pl?ID=$row->{ID}&art=loeschenverfahren&benutzer=$in{benutzer}><image src=\"$LoeschenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";

push(@loop_data2, \%row_data2);
}
$sth->finish();

$template->param( verfahren => \@loop_data2 );

# Arbeitsanweisungen:
$sql = qq{ SELECT * FROM mdoku_arbeit where geloescht = 'n' order by nummer, nummer2, nummer3, nummer4};
$sth = $dbh->prepare( $sql );
$sth->execute();

while( $row = $sth->fetchrow_hashref ) {

my %row_data3;

$row_data3{Inhaltnummer} = "$row->{nummer}";
if($row->{nummer2} ne "") { $row_data3{Inhaltnummer} .= ".$row->{nummer2}"; }
if($row->{nummer3} ne "") { $row_data3{Inhaltnummer} .= ".$row->{nummer3}"; }
if($row->{nummer4} ne "") { $row_data3{Inhaltnummer} .= " - $row->{nummer4}"; }

$row_data3{Inhalttitel} = "<a href=\"mdoku_admin.pl?art=ausgabe$row->{tabart}&benutzer=$in{'benutzer'}&ID=$row->{ID}\">$row->{titel}</a>";
$row_data3{Inhaltversion} = "$row->{version}";

$row_data3{Bearbeiten} = "<a href=$Tabellenname.pl?ID=$row->{ID}&art=bearbeitenformarbeit&benutzer=$in{benutzer}><image src=\"$BearbeitenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";
$row_data3{Loeschen} = "<a href=$Tabellenname.pl?ID=$row->{ID}&art=loeschenarbeit&benutzer=$in{benutzer}><image src=\"$LoeschenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";

push(@loop_data3, \%row_data3);
}
$sth->finish();

$template->param( arbeitsanweisungen => \@loop_data3 );

print $template->output;
}


Die Datenbankstruktur:
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
CREATE TABLE `mdoku_kapitel` (
`ID` text,
`geloescht` char(2) default NULL,
`nummer` text,
`nummer2` text,
`nummer3` text,
`titel` text,
`textdatei` text,
`bild1` text,
`bild2` text,
`bild3` text,
`bild4` text,
`bild5` text,
`bild6` text,
`bild7` text,
`bild8` text,
`bild9` text,
`bild10` text,
`unterlage1` text,
`unterlage2` text,
`unterlage3` text,
`unterlage4` text,
`unterlage5` text,
`unterlage6` text,
`unterlage7` text,
`unterlage8` text,
`unterlage9` text,
`unterlage10` text,
`unterlage11` text,
`unterlage12` text,
`unterlage13` text,
`unterlage14` text,
`unterlage15` text,
`unterlage16` text,
`unterlage17` text,
`unterlage18` text,
`unterlage19` text,
`unterlage20` text,
`version` text,
`benutzer` text,
`archiver` text,
`tabart` text,
`stand` int(11) default NULL,
`archivdatum` int(11) default NULL,
`aktiv` text NOT NULL,
`unterlage21` text NOT NULL
) TYPE=MyISAM;
format_c
 2003-09-04 12:27
#83727 #83727
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Hast du bei deinem HTML-Zeug schon mal an ein Here-Dokument gedacht oder ein anderes Quoting zeichen zu verwenden mittels qq?
Damit lassen sich schon viele Fehler ausschließen, weil du den HTML-Code dann auch einigemaßen formatiert schreiben kannst.

Gruß Alex
Dubu
 2003-09-04 13:13
#83728 #83728
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Es waere interessant zu wissen, wie denn der HTML-Quellcode an der kaputten Stelle aussieht. In der gerenderten Form ist das ziemlich witzlos.

Edit: Ach ja, und ich muss format_c beipflichten, der Code ist so fast unlesbar. Empfehlung: perlop#Quote_and_Quote_like_Operators\n\n

<!--EDIT|Dubu|1062668025-->
SirLant
 2003-09-04 14:29
#83729 #83729
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Schön zu lesen ist sowas:
[html]$var = qq ~<table cellpadding='0' cellspacing='0' border='0' width='95%' bgcolor='#37496D' align='center'>
<tr>
<td>
<table cellpadding='0' cellspacing='1' border='0' width='100%'>
<tr>
<td bgcolor='#37496D'>
<table border='0' width='100%' cellspacing='0' cellpadding='0' bgcolor='#37496D'>
<tr>
<td valign='middle' align='left' id='titlemedium'> <b>Thema</b>: Ausgabefehler.... HILFE, der gibt nur sch.... aus</td><td valign='middle' align='right' id='titlemedium'>< <a href='http://board.perl-community.de/cgi-bin....iew=old'>Älteres Thema</a> | <a href='http://board.perl-community.de/cgi-bin....5;view=new'>Neueres Thema</a> > </td>

</tr>
</table>
</td>
</tr>
</table>~;[/html]\n\n

<!--EDIT|SirLant|1062671432-->
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Strat
 2003-09-04 15:06
#83730 #83730
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Habe den code mal durch perltidy gejagt:
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
sub Daten_Ausgabe {
&allgemeineseinlesen;
&Kalender3( $allgemein->{freigabemandokusdatum} );

# Layout Einlesen
my $template =
HTML::Template->new(
filename => $LayoutDateienPfad . 'mdoku/mhb-liste.htm' );
$template->param( benutzer => $in{benutzer} );
$template->param( freigabetag => $Zeit[2] );
$template->param( freigabemonat => $Zeit[1] );
$template->param( freigabejahr => $Zeit[4] );
$template->param( ort => $allgemein->{ort} );
$template->param( nkuerzel => $allgemein->{namemandokusfreigabe} );

# Kapitel:
my $sql =
qq{ SELECT * FROM mdoku_kapitel where geloescht = 'n' and aktiv like 'ja' order by nummer, nummer2, nummer3 };

my $sth = $dbh->prepare($sql);
$sth->execute();

while ( $row = $sth->fetchrow_hashref ) {

my %row_data1;

$row_data1{Inhaltnummer} = "$row->{nummer}";

if ( $row->{tabart} eq "oberkap" ) {
$row_data1{zeilebg} = "#F4F4F4";

#$row_data1{Bearbeiten} = "<a href=$Tabellenname.pl?ID=$row->{ID}&art=bearbeitenformoberkap&benutzer=$in{benutzer}><image src=\"$BearbeitenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";
$row_data1{Bearbeiten} = "&nbsp;";

#$row_data1{Loeschen} = "<a href=$Tabellenname.pl?ID=$row->{ID}&art=loeschenoberkap&benutzer=$in{benutzer}><image src=\"$LoeschenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";
$row_data1{Inhaltversion} = "&nbsp;";
}
if ( $row->{tabart} eq "zwkap" ) {
$row_data1{Inhaltnummer} .= ".$row->{nummer2}";

#$row_data1{Bearbeiten} = "<a href=$Tabellenname.pl?ID=$row->{ID}&art=bearbeitenformzwkap&benutzer=$in{benutzer}><image src=\"$BearbeitenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";
$row_data1{Bearbeiten} = "&nbsp;";

#$row_data1{Loeschen} = "<a href=$Tabellenname.pl?ID=$row->{ID}&art=loeschenzwkap&benutzer=$in{benutzer}><image src=\"$LoeschenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";
$row_data1{Inhaltversion} = "&nbsp;";
}
if ( $row->{tabart} eq "unterkap" ) {
if ( $row->{nummer2} ne "" ) {
$row_data1{Inhaltnummer} .= ".$row->{nummer2}";
}
else { $row_data1{zeilebg} = "#F4F4F4"; }
if ( $row->{nummer3} ne "" ) {
$row_data1{Inhaltnummer} .= ".$row->{nummer3}";
}
$row_data1{Bearbeiten} =
"<a href=$Tabellenname.pl?ID=$row->{ID}&art=bearbeitenformunterkap&benutzer=$in{benutzer}><image src=\"$BearbeitenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";

#$row_data1{Loeschen} = "<a href=$Tabellenname.pl?ID=$row->{ID}&art=loeschenunterkap&benutzer=$in{benutzer}><image src=\"$LoeschenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";
$row_data1{Inhaltversion} = "$row->{version}";
}

$row_data1{Inhalttitel} =
"<a href=\"mdoku_admin.pl?art=ausgabe$row->{tabart}&benutzer=$in{'benutzer'}&ID=$row->{ID}\">$row->{titel}</a>";

push ( @loop_data1, \%row_data1 );
}
$sth->finish();

$template->param( kapitel => \@loop_data1 );

# Verfahrensanweisungen:
$sql =
qq{ SELECT * FROM mdoku_verfahren where geloescht = 'n' order by nummer, nummer2, nummer3, nummer4};
$sth = $dbh->prepare($sql);
$sth->execute();

while ( $row = $sth->fetchrow_hashref ) {

my %row_data2;

$row_data2{vanummer} = "$row->{nummer}";
if ( $row->{nummer2} ne "" ) {
$row_data2{vanummer} .= ".$row->{nummer2}";
}
if ( $row->{nummer3} ne "" ) {
$row_data2{vanummer} .= ".$row->{nummer3}";
}
if ( $row->{nummer4} ne "" ) {
$row_data2{vanummer} .= " - $row->{nummer4}";
}

$row_data2{vatitel} =
"<a href=\"mdoku_admin.pl?art=ausgabe$row->{tabart}&benutzer=$in{'benutzer'}&ID=$row->{ID}\">$row->{titel}</a>";
$row_data2{vaversion} = "$row->{version}";

$row_data2{Bearbeiten} =
"<a href=$Tabellenname.pl?ID=$row->{ID}&art=bearbeitenformverfahren&benutzer=$in{benutzer}><image src=\"$BearbeitenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";
$row_data2{Loeschen} =
"<a href=$Tabellenname.pl?ID=$row->{ID}&art=loeschenverfahren&benutzer=$in{benutzer}><image src=\"$LoeschenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";

push ( @loop_data2, \%row_data2 );
}
$sth->finish();

$template->param( verfahren => \@loop_data2 );

# Arbeitsanweisungen:
$sql =
qq{ SELECT * FROM mdoku_arbeit where geloescht = 'n' order by nummer, nummer2, nummer3, nummer4};
$sth = $dbh->prepare($sql);
$sth->execute();

while ( $row = $sth->fetchrow_hashref ) {

my %row_data3;

$row_data3{Inhaltnummer} = "$row->{nummer}";
if ( $row->{nummer2} ne "" ) {
$row_data3{Inhaltnummer} .= ".$row->{nummer2}";
}
if ( $row->{nummer3} ne "" ) {
$row_data3{Inhaltnummer} .= ".$row->{nummer3}";
}
if ( $row->{nummer4} ne "" ) {
$row_data3{Inhaltnummer} .= " - $row->{nummer4}";
}

$row_data3{Inhalttitel} =
"<a href=\"mdoku_admin.pl?art=ausgabe$row->{tabart}&benutzer=$in{'benutzer'}&ID=$row->{ID}\">$row->{titel}</a>";
$row_data3{Inhaltversion} = "$row->{version}";

$row_data3{Bearbeiten} =
"<a href=$Tabellenname.pl?ID=$row->{ID}&art=bearbeitenformarbeit&benutzer=$in{benutzer}><image src=\"$BearbeitenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";
$row_data3{Loeschen} =
"<a href=$Tabellenname.pl?ID=$row->{ID}&art=loeschenarbeit&benutzer=$in{benutzer}><image src=\"$LoeschenBild\" width=\"15\" height=\"15\" border=\"0\"></a>";

push ( @loop_data3, \%row_data3 );
}
$sth->finish();

$template->param( arbeitsanweisungen => \@loop_data3 );

print $template->output;
}
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
[HR]Doomrunner
 2003-09-04 19:28
#83731 #83731
User since
2003-09-04
77 Artikel
BenutzerIn
[default_avatar]
Hi,

der Fehlercode sieht dann wie folgt aus:

[html]
<tr bgcolor="">
<td height="21" width="17%" class="normtext">
<div align="center">VA -
5.1 - 02
</div>
</td>
<td class="normtext" height="21">
<table width="95%" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td class="normtext2">
<a href="mdoku_admin.pl?art=ausgabeverfahren&benutzer=vUONfpDiPFGgWqpMC&ID=1062508433">Umweltmanagementprogramm</a>
</td>
</tr>
</table>
</td>
<td height="21" width="10%" class="normtext">
<div align="center">
0 ¡    &† H ¤ ¾N þÿþÿ    þÿþÿýÿýÿ   þÿþÿÿÿÿÿ  ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿ M <div align="center">VA -
5.1 - 07
</div>
</td>
<td class="normtext" height="21">
<table width="95%" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td class="normtext2">
<a href="mdoku_admin.pl?art=ausgabeverfahren&benutzer=vUONfpDiPFGgWqpMC&ID=1062508655">Geschäftsplan / Businessplan</a>
M </td>
</tr>
</table>
</td>
<td height="21" width="10%" class="normtext">
<div align="center">
1
</div>
</td>
</tr>
[/html]
jan
 2003-09-04 19:34
#83732 #83732
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
da muss dann aber noch was anderes hineinpfuschen, denn dein code gibt kein <div align="center"> aus
Heromaster
 2003-09-04 19:46
#83733 #83733
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Ich tippe mal drauf, das Du ein HTML-Template benutzst, das mit Dreamwaver erstellt wurde. Den Fehler macht das Prog gerne, wenn man via Copy & Paste längere Abschnitte HTML-Code im Editor einfügt.
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2003-09-04 01:07.