Wie schaffe ich es jetzt dieses Array in einer HTML Tabelle wiederzugeben? Müsste ich für Jahr, Einnahmen und Ausgaben jeweils ein Extra Array erstellen?
du hast 2 arrays? @res und @data? wozu?
im übrigen hast du ja zeilen mit werten, und sowas
speichert man üblicherweise in einem array of arrays.
also pro zeile:
push @data, \@fields; # @fields sind die nach komma gesplitteten werte
Wie schaffe ich es jetzt dieses Array in einer HTML Tabelle
wiederzugeben? Müsste ich für Jahr, Einnahmen und Ausgaben
jeweils ein Extra Array erstellen?
wenn du tatsächlich ein array of arrays hast, dann geht das einfach:
use HTML::Template::Compiled;
my $htc = HTML::Template::Compiled-\>new(
filename =\> 'template.html',
plugin =\> [qw/ ::HTML\_Tags /],
);
$htc-\>param(data =\> [
[qw/ Jahr Einnahmen Ausgaben /],
@data
]);
im template:
du könntest auch die html-funktionen von CGI.pm dafür verwenden. oder zu fuss:
my $csv = new Text::CSV_XS;
open(FILE,„daten“) || die „Datei nicht vorhanden“;
while (my $line = ) {
$csv->parse($line);
my @row = $csv->fields;
push(@data,@row);
}
warum die erste zeile nicht gelesen wird, kann ich dir auch nicht sagen,
aber vorher solltest du dich auf ein modul festlegen und es dann nochmal
probieren.
Leider hab ichs immer noch nicht ganz geschafft. Der Code hat
sich auch wieder ein wenig verändert.
Ausgelesen wird dir CSV Datei und auch als Tabelle
dargestellt. Das einzige Problem ist, das die erste Zeile der
CSV Datei nicht mitgelesen wird.
Kann mir jemand von euch vielleicht einen Tip geben?
Klaro
Das bei dir die erste Zeile nicht gelesen wird, kann ich mir auch nicht so richtig erklären. Fehlt da vielleicht irgendwo ein Trenner oder hat es ein komisches Zeilenende? oder sind da Sonderzeichen im Spiel?
Ich hab mir auch dienen Code angesehen und würde auf den DBI-Kram verzichten. Ich würde das nur in Erwägung ziehen, wenn ich auf bestimmte Daten in der CSV Datei zugreifen will.
So sähe das in etwa aus wenn ich das machen würde:
# CPAN Module
use Text::CSV\_XS;
use IO::Handle;
# Dateiname (evtl. noch eine Pfadangabe hinzufuegen
my $file = 'text.csv';
# File oeffnen
open(my $io, $file) or die "Can't open $file: $!";
# CSV\_XS Objekt erstellen
# hier noch den Attribut Hash anpassen
my $csv = Text::CSV\_XS-\>new({sep\_char =\> ";",
binary =\> 1,
eol =\> \$;
});
# Datei zeilenweise durchgehen
# parsen und als Tabelle ausgeben
while ($io) {
my $row = $csv-\>getline($io);
print ''.$row-\>[0].''.$row-\>[1].''.$row-\>[2].''."\n";
last if $io-\>eof();
}