User since
2005-06-06
18
Artikel
BenutzerIn
ich würde gern einen anderen
loop ausgeben lassen wenn die datensätze aus z.B: CAT eq "4"
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
my $sql = "SELECT * FROM db50";
my $sth = $dbh->prepare ( $sql ) || die "Kann Satement nicht vorbereiten: $DBI::errstr\n";
$sth->execute();
my $template = HTML::Template->new(filename => 'test2.html');
my (@eintraege,@ergebnisse,@result,@check);
while(my @result = $sth->fetchrow_array()){
push(@ergebnisse,\@result);
}
foreach my $eintrag(@ergebnisse){
my %hash = (
ID => $eintrag->[0],
NAME => $eintrag->[1],
CAT => $eintrag->[2],
);
push(@eintraege,\%hash);
}
if ($eintraege[2] eq "4") {
$template->param(ABFRAGE_2 => \@eintraege);
}
else {
$template->param(ABFRAGE => \@eintraege);
}
kann mir jemand tipps geben bezüglich des arrays ??
User since
2003-08-04
14371
Artikel
ModeratorIn
Ich habe Dein Problem nicht wirklich verstanden! Erkläre es bitte ausführlicher! Was hast Du, wo willst Du hin, was hast Du schon probiert, etc...
User since
2005-06-06
18
Artikel
BenutzerIn
hallo renee,
ich habe eine db-tabelle mit drei spalten.
id,name,cat
dann lese ich die datensätze aus z.B
DS1,andreas,5
DS2,michael,4
DS3,johannes,7
etc.
das problem:
meine if() anweisung funktioniert hier nicht , warum ?
ich habe in meinen html-tmpl
zwei loops (snippet)
<tmpl_loop name="ABFRAGE1">
<tmpl_loop name="ABFRAGE2">
ich will nun DS2 in oberem besipiel => da Inhalt von CAT eq "4" ist,
in diesem fall
$template->param(ABFRAGE_2 => \@eintraege);
ausgeben lassen
und wenn der Inhalt von CAT nicht eq "4"
$template->param(ABFRAGE => \@eintraege);
ausgeben lassen
ich hoffe es ist verständlicher - wäre über Tipps,Hilfe sehr dankbar\n\n
<!--EDIT|nurri|1118071577-->
User since
2005-06-06
18
Artikel
BenutzerIn
hallo renee,
dein vorschlag funktioniert nicht ...
früher hatte ich html quelltext im cgi-script
im prinzip habe ich da obige html::template problem früher so gelöst:
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 @result = $sth->fetchrow_array) {
if ($result[2] eq "4") {
print qq {
<td>$result[0]</td>
<td>$result[1]</td>
<td><a href="link.pl">$result[2]</a></td> # es geht mir um diesen link bei der ausgabe der datensätze wenn spalte CAT eine zahl 4 beinhaltet, andernfalls
};
}
else {
print qq {
<td>$result[0]</td>
<td>$result[1]</td>
<td>$result[2]</td>
};
}
}
aber dies müsste man doch mit html::template auch hinbekommen
User since
2003-08-04
14371
Artikel
ModeratorIn
Dann würde ich das jetzt so machen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
my $sql = "SELECT * FROM db50";
my $sth = $dbh->prepare ( $sql ) || die "Kann Satement nicht vorbereiten: $DBI::errstr\n";
$sth->execute() or die $dbh->errstr();
my $template = HTML::Template->new(filename => 'test2.html');
my @ergebnisse
while(my @result = $sth->fetchrow_array()){
$result[2] = '<a href=="link.pl">'.$result[2].'</a>' if($result[2] == 4);
my %hash = (
ID => $result[0],
NAME => $result[1],
CAT => $result[2],);
push(@ergebnisse,\%hash);
}
$template->param(ABFRAGE => \@ergebnisse);
User since
2005-06-06
18
Artikel
BenutzerIn
hallo renee,
vielen dank für deine mithilfe
User since
2005-06-06
18
Artikel
BenutzerIn
eine Frage hätte ich noch ...
warum kann das nicht gehen ... ich füge dem %hash einen weiteren string $set hinzu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
my (@ergebnisse,$set);
while(my @result = $sth->fetchrow_array()){
$result[2] = '<a href=="link.pl">'.$result[2].'</a>' if($result[2] == 4);
$set = '<img src="images/ic_parkingAvailable.gif">' if($result[2] == 4);
my %hash = (
ID => $result[0],
NAME => $result[1],
CAT => $result[2],
CHECKED => $set,);
push(@ergebnisse,\%hash);
}
$template->param(ABFRAGE => \@ergebnisse);
aber es erscheint keine Ausgabe
<tmpl_loop name="ABFRAGE">
<tr>
<td> <INPUT TYPE="text" NAME="" value="<tmpl_var name="ID">"></td>
<td><tmpl_var name="NAME"></td>
<td ><tmpl_var name="CAT"></td>
<td ><tmpl_var name="CHECKED"></td>
</tr>
</tmpl_loop>
User since
2003-08-04
14371
Artikel
ModeratorIn
gibt's eine Fehlermeldung?? Eigentlich sollte das so funktionieren...
es gibt keine fehlermeldungen ...
die zuweisung fur den string $set funktioniert aber nicht ... da keine ausgabe erscheint
warum ???