Schrift
[thread]509[/thread]

umschreibung: HTML::Template

Leser: 2


<< |< 1 2 >| >> 18 Einträge, 2 Seiten
nurri
 2005-06-08 22:22
#5082 #5082
User since
2005-06-06
18 Artikel
BenutzerIn
[default_avatar]
hallo ich will eine tabelle mit 2 spalten ausgeben
folgt ausssieht . z.B

------------------------------------
ORT1 | ORT2 |
------------------------------------
NAME1 | NAME2 |
------------------------------------
ORT3 | ORT4 |
------------------------------------
NAME3 | NAME4 |
------------------------------------

usw. sozusagen den nächsten datensatz in die 2 .Spalte
und dann soweiter

im cgi script hatte ich das so gelöst:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
while(my ($ort,$name) = $sth -> fetchrow_array){
push @ort,$ort;
push @name,$name;


if ( $count > 0 && $count % 2 == 0 ) {
print qq{</tr><tr >};
}

print qq {
<td>
# etc $ort
</td>
};
$count++;
}


ich muss auch gestehen das ich mit diesen Referenzierungen nicht zurechtkomme ...

vielleicht versteht jemand was ich meine und könnte mir dazu etwas erklären oder weiterhelfen

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
my $template = HTML::Template->new(filename => 'deneme.html');

my (@ergebnisse);

while(my @result = $sth->fetchrow_array()){

my %hash = (
ort => $result[0],
name => $result[1],

);
push(@ergebnisse,\%hash);
}



$template->param(ABFRAGE => \@ergebnisse);


danke\n\n

<!--EDIT|nurri|1118308881-->
renee
 2005-06-08 23:48
#5083 #5083
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
wo liegt jetzt Dein Problem?? Was hast Du probiert? Gibt es Fehler?
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/
nurri
 2005-06-09 13:19
#5084 #5084
User since
2005-06-06
18 Artikel
BenutzerIn
[default_avatar]
was hast du vor ??

ich möchte db-daten in eine verschachtelte tabelle ausgeben die folgt aussieht

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
<table width="75%" border="1" bordercolor="#0000FF">
<tmpl_loop name="ABFRAGE">

<tr>
<td><table width="75%" border="1" align="center" bordercolor="#FF0000">
<tr>
<td><tmpl_var name="ort"></td>
</tr>
<tr>
<td><tmpl_var name="name"></td>
</tr>
</table></td>
<td><table width="75%" border="1" align="center" bordercolor="#FF0000">
<tr>
<td><tmpl_var name="ort"></td>
</tr>
<tr>
<td><tmpl_var name="name"></td>
</tr>
</table></td>
</tr>
</tmpl_loop name="ABFRAGE">
</table>


was hast du probiert

früher hatte ich die ausgabe im obengenannten cgi-script mir if() gelöst

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
while(my ($ort,$name) = $sth -> fetchrow_array){
push @ort,$ort;
push @name,$name;


if ( $count > 0 && $count % 2 == 0 ) {
print qq{</tr><tr >};
}

pirnt qq {

<td><table width="75%" border="1" align="center" bordercolor="#FF0000">
<tr>
<td><tmpl_var name="$ort"></td>
</tr>
<tr>
<td><tmpl_var name="$name"></td>
</tr>
</table></td>

};
$count++;
}


dadudrch hatte ich 2 spalten, pro spalte ein datensatz und dann wegen while() weiterführend ausgegeben

mein problem

ich komme mit der Logik des HTML::Templates in manchen bereichen nicht zurecht, habe mir die tutorials in cpan.org auch durchgelesen - kommte mir aber diesbezüglich nichts erklären oder daraus schließen lassen ...
renee
 2005-06-09 13:56
#5085 #5085
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Vielleicht solltest Du mal http://perl.renee-baecker.de/HTML_Template.pdf lesen, um eine kleine Einführung in CPAN:HTML::Template zu bekommen...
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/
nurri
 2005-06-09 15:15
#5086 #5086
User since
2005-06-06
18 Artikel
BenutzerIn
[default_avatar]
hallo renee,

habe mir die PDF angeschaut steht genauso viel wie in der CPAN.

Egal...

also das Prinzip eine Bildergalerie via HTML::Template auszugeben ist im prinzip die selbe anforderungen wie meine Tabelle.

------------------------------------
bild1 | bild2 |
------------------------------------
bild3 | bild4 |
------------------------------------
bild5 | bild6 |
------------------------------------

aber ich glaube, ich bin im Wald auf einem Holzweg gelandet ...
nehmen wir mal für ein Bild - einen Datensatz wie obrige beispiele $ort, dann müsste es doch möglich sein dies wie im "Gallerybeispiel" ausgeben zu lassen ...

ich werde noch etwas suchen ...
aber wenn jemand solch ein Problem auch hatte und eine Ansatz gefunden hat, wäre ich dankbar
Strat
 2005-06-09 16:13
#5087 #5087
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
dafuer fallen mir mehrere Moeglichkeiten ein...

1.) nach jeder zweiten zeile ein </tr><tr> einzufuegen: dies kann man mit HTML::Template selbst machen
Beim new noch als Parameter loop_context_vars => 1 mitgeben, dann bekommst du in <!-- TMPL_LOOP name=... --> noch weitere Variablen, wie z.B.
Code: (dl )
1
2
3
<!-- TMPL_UNLESS NAME= -->
 </tr><tr>
<!-- /TMPL_UNLESS -->

(oder TMPL_IF)

Mit sowas bist du allerdings fuer immer und ewig auf zwei Spalten festgelegt; deshalb verwende ich da lieber die folgende Loesung:

2.) eine zweidimensionale LOOP, z.B.
Code: (dl )
1
2
3
4
5
6
schleifeX => 
 [
   { schleifeY => [ {inhalt => 'a'}, {inhalt => 'b'} ] },
   { schleifeY => [ {inhalt => 'c'}, {inhalt => 'd'} ] },
   { schleifeY => [ {inhalt => 'e'}, {inhalt => 'f'} ] },
 ];

dann koennte das template folgendermaszen aussehen (und ist flexibel, weil du ueber perl die anzahl der spalten steuern kannst)
Code: (dl )
1
2
3
4
5
6
7
8
9
<table>
<!-- TMPL_LOOP NAME=schleifeX -->
 <tr>
 <!-- TMPL_LOOP NAME=schleifeY -->
   <td><!-- TMPL_VAR NAME=inhalt --></td>
 <!-- /TMPL_LOOP -->
 </tr>
<!-- /TMPL_LOOP -->
</table>

Somit brauchst du nur noch deine Perl-Datenstruktur demgemaess anpassen...

3.) du setzt an jedes Element, nach dem eine neue zeile beginnen soll, einen merker, den du mit TMPL_IF ueberpruefst, z.B.
Code: (dl )
1
2
3
4
5
6
schleife => 
[
{inhalt => 'a'}, {inhalt => 'b', next => 1},
{inhalt => 'c'}, {inhalt => 'd', next => 1},
{inhalt => 'e'}, {inhalt => 'f', next => 1},
];

und dann
Code: (dl )
1
2
3
4
5
6
7
8
<table>
<tr>
<!-- TMPL_LOOP NAME=schleife -->
<td><!-- TMPL_VAR NAME=inhalt --></td>
<!-- TMPL_IF NAME=next --></tr><tr><!-- /TMPL_IF -->
</tr>
<!-- /TMPL_LOOP>
</table>
\n\n

<!--EDIT|Strat|1118319414-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
nurri
 2005-06-16 16:09
#5088 #5088
User since
2005-06-06
18 Artikel
BenutzerIn
[default_avatar]
ich habe jetzt die variante 2 versucht - vergeblich

habe folgendes probiert:

die test.pl



Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
chdir("../../pics");

my(@bilder,@ergebnisse);

push (@bilder, glob "*.jpg");
push (@bilder, glob "*.gif");

foreach my $bild(@bilder){

my %hash = (
schleifeX =>
[
{ schleifeY => [ {inhalt => '$bild'} ] },

]


);
push(@ergebnisse,\%hash);
}

$template->param(schleifeX => \@ergebnisse);


die test.html

Code: (dl )
1
2
3
4
5
6
7
8
9
<table>
<!-- TMPL_LOOP NAME=schleifeX -->
<tr>
<!-- TMPL_LOOP NAME=schleifeY -->
<td><img src="../../pics/><!-- TMPL_VAR NAME=inhalt -->"</td>
<!-- /TMPL_LOOP -->
</tr>
<!-- /TMPL_LOOP -->
</table>


ich weiss nicht wie ich die loops im html-template referenzieren soll ????
Strat
 2005-06-16 16:24
#5089 #5089
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
my @files = glob("*.jpg");
my $width = 3;

my @images = ();

for my $i (0..$#files) {
 if ($i % $width == 0) { # new row, append to dimension X
   push (@images, { schleifeY => [ { inhalt => $files[$i] } ] } );
 }
 else { # new column, append to dimension Y
   push (@{ $images[-1]->{schleifeY} }, { inhalt => $files[$i] } );
 } # else
} # for

$template->param(schleifeX => \@images);

nicht getestet\n\n

<!--EDIT|Strat|1118931484-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Strat
 2005-06-16 16:29
#5090 #5090
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
vielleicht ist folgender Weg einfacher verstaendlich:
Code: (dl )
1
2
3
4
5
6
7
my $row = -1;
for my $i (0..$#files) {
 my $modulo = $i % $width;
 $row++ if 0 == $modulo; # start a new row

 $images[$row]->{schleifeY}->[$modulo]->{inhalt} = $files[$i];
} # for
\n\n

<!--EDIT|Strat|1118925179-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
nurri
 2005-06-16 16:43
#5091 #5091
User since
2005-06-06
18 Artikel
BenutzerIn
[default_avatar]
output

syntax error - near "$i ("

habe es mit foreach probiert geht auch nicht ...
<< |< 1 2 >| >> 18 Einträge, 2 Seiten



View all threads created 2005-06-08 22:22.