CSV-Datei einlesen

Hallo,

ich habe schon mehrere Foren durchsucht und schon einiges gelesen - doch so richtig verstehen will ich es nicht. Wie kann man in ein HTML-Formular eine einfache CSV-Datei einlesen und über das HTML-Formaler einfach anzeigen lassen.

Des Weiteren möchte ich diese einfache Tabelle mit den Werten in einem Kreisdiagramm mir anzeigen lassen. Wie spreche ich aber die einzelnen Werte in der Tabelle in dem Diagramm-Skript an?

Ich habe bereits verschiedene Skripte mir angeschaut, da es einen ähnlichen Beitrag hier schon gibt - jedoch scheitert bei mir es schon bei den grundlegenden Dingen.

Vielleicht kann mir jemand mal ein Beispielskript erläutern.

Hallo,

ich habe schon mehrere Foren durchsucht und schon einiges
gelesen - doch so richtig verstehen will ich es nicht. Wie
kann man in ein HTML-Formular eine einfache CSV-Datei einlesen
und über das HTML-Formaler einfach anzeigen lassen.

In Perl?

Des Weiteren möchte ich diese einfache Tabelle mit den Werten
in einem Kreisdiagramm mir anzeigen lassen. Wie spreche ich
aber die einzelnen Werte in der Tabelle in dem Diagramm-Skript
an?

Wo hast Du Dein Diagramm-Skript, in dem es nur noch am
„Ansprechen der aber die einzelnen Werte in der Tabelle“
fehlt?

Ich habe bereits verschiedene Skripte mir angeschaut, da es
einen ähnlichen Beitrag hier schon gibt - jedoch scheitert bei
mir es schon bei den grundlegenden Dingen.

Welche Dinge sind für Dich „grundlegende Dinge“?

Vielleicht kann mir jemand mal ein Beispielskript
erläutern.

Versuch doch bitte mal, ein konkretes
„Beispielproblem“ zu erläutern - desweiteren
die von Dir unternomenen Schritte und die
Ausstattung des Servers, auf dem das dann
mal läuft/laufen soll, zu nennen.

Grüße

CMБ

Hallo,

also meine CSV-Datei habe ich mit Excel erstellt und sieht folgends aus:

25, 23, 22
34, 56, 43

Es ist als wirklich nur eine Anordnung einfacher Werte, welche ich unter der Datei werte.csv gespeichert habe.

Als nächstes soll ich ein HTML-Formular schreiben, in welchem diese Werte in einer Tabelle angezeigt werden sollen - ich habe aber keine Ahnung wie ich die Daten in HTML einfügen soll (ich vermute mit einem CGI-Skript). Wenn ich richtig bin muss ich als erstes eine Verbindung zu der CSV-Datenbank aufbauen. Dann könnte ich auf diese Datei zugreifen.

welche Attribute ich bei einem Kreisdiagramm eingeben kann ist mir klar. Jedoch fehlt mir der Befehl, wie das Kreidiagramm auf die Daten der CSV-Datei zurückgreift. Ich weiß nicht ob ich jede Tabellezelle einzeln ansprechen muss oder nur die gesamte Datei mit einbinde.

Ich hoffe ich hab mich schon genauer jetzt ausdrücken können.
Also ich würde für die Aufgabenstellung nach meiner Ansicht 2 Perl-Skripts benötigen, nur komm ich mit dem HTML-Formular nicht klar.

Vielen Dank.

Hallo,

Als nächstes soll ich ein HTML-Formular schreiben, in welchem
diese Werte in einer Tabelle angezeigt werden sollen - ich
habe aber keine Ahnung wie ich die Daten in HTML einfügen soll
(ich vermute mit einem CGI-Skript). Wenn ich richtig bin muss
ich als erstes eine Verbindung zu der CSV-Datenbank aufbauen.
Dann könnte ich auf diese Datei zugreifen.

Welcher Server, welche Perl-Module sind verfügbar.

welche Attribute ich bei einem Kreisdiagramm eingeben kann ist
mir klar. Jedoch fehlt mir der Befehl, wie das Kreidiagramm
auf die Daten der CSV-Datei zurückgreift. Ich weiß nicht ob
ich jede Tabellezelle einzeln ansprechen muss oder nur die
gesamte Datei mit einbinde.

Welches „Kreisdiagramm“?

Grüße

CMБ

Guten Morgen,

Für die Datenbank habe ich das DBI:CSV-Modul installiert. Um die grafischen Elemente anzeigen zu lassen, wurde das Tk-Modul installiert. Ein Kreisdiagramm wird auch als Tortendiagramm bezeichnet.

Als Server verwende ich momentan den Apache Webserver von XAMPP.

Mein Skript für das Tortendiagramm:

#!/usr/bin/perl -w

use strict;
use CGI;
use GD::Graph::stuck_out_tongue:ie;

use constant TITLE => „Einfache Zahlenwerte“;

my $q = new CGI;
my $graph = new GD::Graph::stuck_out_tongue:ie( 300, 300 );
my $data = (
zahlen.csv
);

$graph->set(
title => TITLE,
‚3d‘ => 0
);

my $gd_image = $graph->plot( $data );

print $q->header( -type => „image/png“, -expires => „-1d“ );

binmode STDOUT;
print $gd_image->png;

Irgendetwas fehlt oder ist einfach falsch an dem Skript.

Des Weiteren habe ich eine HTML-Seite nun erstellt, wie kann ich aber die CSV-Daten einbinden? Und wie werden diese Daten in einer Tabelle angezeigt?

Vielen Dank.

Für die Datenbank habe ich das DBI:CSV-Modul installiert.

das ist ja schonmal gut, aber das modul heisst DBD::CSV und ist ein treiber für DBI.

und wenn du den richtigen namen an perldoc fütterst bzw. dir die richtige doku bei CPAN anschaust, kannst du dort auch beispielcode finden:
http://search.cpan.org/~jzucker/DBD-CSV-0.22/lib/DBD…

mit diesem modul musst du die daten einlesen (genau wie bei jedem anderen DBD modul auch), und zwar in eine array-of-arrays-struktur.
wenn du mit sowas noch nicht gearbeitet hast, siehe http://p3rl.org/perllol

auch GD::Graph hat eine dokumentation, indem beispiele stehen. die methode plot() nimmt keinen dateinamen als argument, sondern eben eine arrayref mit arrayrefs als werten.

[…]

wie kann
ich aber die CSV-Daten einbinden? Und wie werden diese Daten
in einer Tabelle angezeigt?

ich würde sagen, du solltest schritt für schritt vorgehen. erstmal musst du lernen, wie du mit DBD::CSV daten aus einer csv herauskriegst und wie du auf verschachtelte strukturen in perl zugreifst.
wenn du das hast, ist die übergabe an GD::Graph ein leichtes, und ein darstellen einer html-tabelle sollte dann auch kein problem mehr sein (im prinzip nur 2 verschachtelte loops).

mit diesem modul musst du die daten einlesen (genau wie bei
jedem anderen DBD modul auch), und zwar in eine
array-of-arrays-struktur.
wenn du mit sowas noch nicht gearbeitet hast, siehe
http://p3rl.org/perllol

und wenn du noch gar nicht mit DBI gearbeitet hast, gibt es hier ein nettes, kleines tutorial:
http://perloo.de/DBI/

1 Like

Vielen Dank Tina. Das hilft mir echt schon mehr weiter.

Also das Modul heißt in meinem ppm wirklich DBI… - naja egal.
Leider verstehe ich nur eins dann noch nicht richtig. Wenn ich eine csv-Datei anlege in welcher 6 Tabellenzellen gespeichert werden sollen, dann gebe ich doch die Zahlenwerte nur durch Komma getrennt an oder?

34, 56, 29, 87
38, 09, 85, 93

Dieser Aufbau bewirkt, dass mir eine Tabelle mit 3 Spalten auf 2 Zeilen erstellt wird oder?

Wenn ich diese Datei in einem HTML-Dokument aufrufe, so würde die Tabelle dargestellt werden ohne das ich eine Tabelle in HTML noch anlegen muss oder?

Irgendwie verstehe ich immer nur einen Teil aber der große AHA-Effekt tritt nicht ein.

Trotzdem danke für die hilfreichen Links.

Also das Modul heißt in meinem ppm wirklich DBI… - naja
egal.

im vorherigen post sagtest du, es hiesse ‚DBI:CSV‘. jetzt sagst du, es hiesse DBI.
es gibt das modul DBI und es gibt für dieses modul verschiedene treiber, fur jede datenbank einen, und die heissen DBD::CSV, DBD::mysql, und so weiter.
wenn „dein ppm“ DBI::CSV anbietet, ist da irgendwas nicht in ordnung.

Leider verstehe ich nur eins dann noch nicht richtig. Wenn ich
eine csv-Datei anlege in welcher 6 Tabellenzellen gespeichert
werden sollen, dann gebe ich doch die Zahlenwerte nur durch
Komma getrennt an oder?

weiss ich nicht. du kannst auch statt komma das semikolon nehmen, hängt ganz an dir. comma seperated ist auch ein überbegriff. du kannst es dem DBD::CSV modul sagen, welchen trenner du nimmst. aber ja, komma ist üblich.
so, du sagst 6 tabellenzellen…

34, 56, 29, 87
38, 09, 85, 93

hier hast du jetzt 8 zellen.

Dieser Aufbau bewirkt, dass mir eine Tabelle mit 3 Spalten auf
2 Zeilen erstellt wird oder?

ich sehe 4 spalten in 2 zeilen.
die anzahl solltest du schonmal richtig hinkriegen, *bevor* du ein modul benutzt, um die daten auszulesen…

Wenn ich diese Datei in einem HTML-Dokument aufrufe, so würde
die Tabelle dargestellt werden ohne das ich eine Tabelle in
HTML noch anlegen muss oder?

hm? „tabelle in HTML anlegen“? das HTML erzeugt sich nicht von selbst, ich sagte ja im letzten artikel, dass du da 2 verschachtelte schleifen für nehmen musst. oder du benutzt die funktionalität von CGI.pm. oder ein templating-system, um das du fruher oder später nicht mehr drumherum kommst.

wie gesagt, schritt für schritt. versuch erstmal, die datei anzulegen. dann versuch sie mit DBD::CSV auszulesen. zeile für zeile. einfach das ergebnis printen und ein bisschen damit spielen. wenn du dann perldoc perllol und perlrftut gelesen hast und du die daten jonglieren kannst, dann versuch daraus eine html-tabelle zu machen. bzw. die daten an GD zu verfüttern.