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

Hilfe bei Website mit Perl/CGI/XML benötigt! (Seite 3)

Leser: 1


<< |< 1 2 3 4 5 6 >| >> 58 Einträge, 6 Seiten
GwenDragon
 2006-01-03 12:56
#6370 #6370
User since
2005-01-17
14848 Artikel
Admin1
[Homepage]
user image
[quote=wusel81,03.01.2006, 11:21]Hm also ohne den fad jetzt zu ändern, sondern das cgi file umkopiert in /htdocs, scheint es zu funktionieren !!![/quote]
Na ja, es ist such kein CGI für mod_perl, sondern ein &„normales&“ ;)
Dann gehört es aber in ein Verzeichnis namens cgi-bin, das müßte schon existieren.
;)
wusel81
 2006-01-03 12:58
#6371 #6371
User since
2005-12-20
27 Artikel
BenutzerIn
[default_avatar]
Naja so funktioniert es ja erstmal... werde jetzt mal rumexperimentieren.
wusel81
 2006-01-03 14:16
#6372 #6372
User since
2005-12-20
27 Artikel
BenutzerIn
[default_avatar]
Hm also ich bin jetzt schon ein Stück weiter...
Das ist meine bis dato erstellte Datei:
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
#!D:\xampp\perl\bin\perl.exe
use strict;
use warnings;
use HTML::Template;

print "Content-type: text/html\n\n";

# Hier wird das Template geoeffnet
my $template = HTML::Template->new(filename => 'irland.tmpl');

# Hier soll jeweils eine Datei mit dem Text geöffnet werden
open(TEXTDATEI, "text.txt");
my $text = <TEXTDATEI>;
close(TEXTDATEI);
$template->param(TEXT => $text);

# Gleichbleibende Bildpfade fuer Header und Navigation
my $header = '/images/header.jpg';
my $navi = '/images/navi.gif';
$template->param(HEADER => $header);
$template->param(NAVI => $navi);

# Eine Datei mit den Linkpfaden
my $link1 = '/irland.cgi';
$template->param(LINK1 => $link1);

# Eine Datei mit den Bildpfaden
my $bild = '/images/menschen.gif';
my $titel = '/images/titel_menschen.gif';
$template->param(BILD => $bild);
$template->param(TITEL => $titel);


print $template->output();


und das Template:
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
<html>
<head>
<title>Irland</title>
</head>

<body>
<div align="center"><br>
<br>
<table width="650" border="0">
<tr>
<td colspan="2"><div align="center"><img src="<!-- TMPL_VAR NAME=HEADER -->" alt="Header" width="650" height="168" /></div>
<div align="center"></div></td>
</tr>
<tr>
<td colspan="2"><div align="center"><img src="<!-- TMPL_VAR NAME=NAVI -->" alt="Navigation" width="650" height="23" border="0" usemap="#Map" /></div>
<div align="center"></div></td>
</tr>
<tr>
<td height="23"><div align="center"></div></td>
<td width="386"><div align="center">
</div></td>
</tr>
<tr>
<td width="260"><div align="center"><img src="<!-- TMPL_VAR NAME=BILD -->" alt="Land" width="250" height="298" align="left" /></div></td>
<td rowspan="2">
<!-- TMPL_VAR NAME=TEXT -->
</td>
</tr>
<tr>
<td><div align="center"><img src="<!-- TMPL_VAR NAME=TITEL -->" alt="Titel" width="250" height="69" align="left" /></div></td>
</tr>
<tr>
<td><div align="center"></div></td>
<td><div align="center"></div></td>
</tr>
</table>
</div>

<map name="Map" id="Map"><br>
<area shape="rect" coords="26,3,93,20" href="<!-- TMPL_VAR NAME=LINK1 -->" target="_self" alt="Home" />
<area shape="rect" coords="124,3,185,20" href="land.html" target="_self" alt="Land" />
<area shape="rect" coords="218,3,350,20" href="geschichte.html" target="_self" alt="Geschichte" />
<area shape="rect" coords="382,3,504,20" href="menschen.html" target="_self" alt="Menschen" />
<area shape="rect" coords="536,3,622,20" href="politik.html" target="_self" alt="Politik" />
</map>

</body>
</html>


Problem 1:
Ich kann zwar die Textdatei einlesen, allerdings nur die erste Zeile. Das liegt denk ich daran das ich ein array zum schreiben brauche. Aber damit funzt es leider trotzdem nicht?

Problem 2:
Das ganze soll ja nachher so sein, dass wenn ich einen der Links klicke (die Links kommen auch aus einer Datei), ähnlich wie auf er urlaub-im-ferienpark.de seite aus dem pdf, der Link irland.cgi?id=geschichte die Inhalte der "Geschichte" Seite aufruft.
Sprich Text und Bilder sollen angezeigt werden.
Wie mache ich dass, das beim Klick auf einen Link diese ID gesetzt wird udn ich die Daten somit aufrufen kann?
esskar
 2006-01-03 14:22
#6373 #6373
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
zu 1:
Code: (dl )
my $text = join '', <TEXTDATEI>;

vergiss nicht zu prüfen, ob du die Datei öffnen konntest!
wusel81
 2006-01-03 15:14
#6374 #6374
User since
2005-12-20
27 Artikel
BenutzerIn
[default_avatar]
@esskar: aha... mit dem join befehl liest er alle zeilen ein, dass ja schonmal super!
esskar
 2006-01-03 15:30
#6375 #6375
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=wusel81,03.01.2006, 14:14]@esskar: aha... mit dem join befehl liest er alle zeilen ein, dass ja schonmal super![/quote]
join erwartet als zweiten parameter ein Array.
<FILE> stellt die Datei als Array von Zeilen bereit.
wusel81
 2006-01-03 16:08
#6376 #6376
User since
2005-12-20
27 Artikel
BenutzerIn
[default_avatar]
Kann es sein, dass wenn ich eine Variable $id im Script anlege,
jedoch nicht ins Template einbaue, dass das cgi dann nicht mehr funzt?

Wollte jetzt grade zum testen folgendes erstellen:
Code: (dl )
1
2
3
4
5
6
7
8
$id = "geschichte";
$id2 = "geschichte";
if ($id eq $id2)
{
my $textname = "text";
}

open(TEXTDATEI, "$textname.txt");


Aber da kommt bei mir immer ein Fehler.
steffenw
 2006-01-03 16:16
#6377 #6377
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wenn Du dem Template per param(...) eine Variable übermittelst, dann sollte sie im Template auch drin sein. Wenn nicht, kommen Fehler, weil das Template nicht stimmt.

Die Beziehung vom Script zum Template wird durch die Parametrisierung hergestellt.
$SIG{USER} = sub {love 'Perl' or die};
wusel81
 2006-01-03 16:18
#6378 #6378
User since
2005-12-20
27 Artikel
BenutzerIn
[default_avatar]
Ja aber ich hab dem Template ja $id und $id2 gar nicht via param(...) übergeben ???
steffenw
 2006-01-03 16:30
#6379 #6379
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Du machst ja in Deinerm Script üerhaupt keine Fehlerbehandlung. Gleich mal ergänzt:
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
#!D:\xampp\perl\bin\perl.exe
use strict;
use warnings;
use HTML::Template;
use CGI::Carp qw(fatalsToBrowser);# Zeigt Dir Fehler an
$SIG{_ _ W A R N _ _}  = sub {die 'WARN: '.shift}; # Sorgt dafür, daß Warnungen auch als Fehler im Browser angezeigt werden. Ich hab's nur gesperrt geschrieben, damit es hier nicht unterdrückt wird.

print "Content-type: text/html\n\n";

# Hier wird das Template geoeffnet
my $template = HTML::Template->new(filename => 'irland.tmpl');

# Hier soll jeweils eine Datei mit dem Text geöffnet werden
open(TEXTDATEI, "text.txt") or die "Can't open text.txt: $!";
my $text = <TEXTDATEI>;
close(TEXTDATEI);
$template->param(TEXT => $text); # use Encode::Entities; und encode_entities $text, denn $text kann HTML enthalten.

# Gleichbleibende Bildpfade fuer Header und Navigation
my $header = '/images/header.jpg';
my $navi = '/images/navi.gif';
$template->param(HEADER => $header);
$template->param(NAVI => $navi);

# Eine Datei mit den Linkpfaden
my $link1 = '/irland.cgi';
$template->param(LINK1 => $link1);

# Eine Datei mit den Bildpfaden
my $bild = '/images/menschen.gif';
my $titel = '/images/titel_menschen.gif';
$template->param(BILD => $bild);
$template->param(TITEL => $titel);


print $template->output();
\n\n

<!--EDIT|steffenw|1136308335-->
$SIG{USER} = sub {love 'Perl' or die};
<< |< 1 2 3 4 5 6 >| >> 58 Einträge, 6 Seiten



View all threads created 2005-12-20 19:44.