perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 14
Click for quality!




12.02.2012 / 01:56

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl/CGI: Scripts des Perl-Archiv zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragPERL/CGI GD::GRAPH::PIE - Datenübergabe?
Seitenanfang
Hallo Leute,

ich schreibe grad ein Skript, was mir die Daten einer csv-Datei auslesen soll und nach der tabellarischen Anzeige ein Kreisdiagramm erstellen soll.

Das Auslesen der Datenbank funktioniert an und für sich einwandfrei, kann die Daten per HTML-Tags ausgeben lassen. Wenn ich nun aber das GD::Graph::Pie-Modul die Daten aus dem Array übergebe, erhalte ich die Fehlermeldung 'Invalid data set: 0 at D:/xampp/cgi-bin/csv4.cgi line 99'.

Habe jetzt die Referenz von PERL in Bezug auf GD durch, entweder hab ich da zweimal drübergelesen oder es steht nicht drin? Welche Datensätze erwartet das Modul? Ich habe die Daten in ein Array / Liste gefasst, welche meine Umsätze (keine realen Werte) enthält; braucht das Modul auch noch eine Bezeichnung oder ähnliches?

Meine csv enthält folgende Daten:

filialbereich,filialleiter,mitarbeiteranzahl,quartalsumsatz
Nord,Meier,16,350000
Nord,Huber,8,210000
West,Gruber,10,250000
Sued,Klammer,14,330000
Ost,Kaiser,19,340000
Zentral,Moser,35,520000

Das Skript sieht so aus:


#!d:/xampp/perl/bin/perl -w

### Variablendeklarationen und Moduleinbindungen ###
use strict;

use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
use DBI;
my $DBH;
my $STH;

### Statement-Vorbereitung ###
$DBH = DBI->connect("DBI:CSV:csvdb=d:/xampp/cgi-bin")
or die "Konnte Datenbank nicht oeffnen:$!";
$STH = $DBH->prepare("SELECT * FROM csvdb")
or die "Konnte SQL-Statement nicht ausfuehren:$!";

$STH->execute()
or die "Ausfuehren der Datenbankabfrage nicht moeglich:$!";

### Darstellung der Tabellenform und Zwischenspeicherung der Variablendaten für Diagrammberechnung ###

print <<HERE_TEXT;
Content-type:text/html

<HTML>
<HEAD>
<TITLE>Datenanzeige CSV-File</TITLE>
</HEAD>

<BODY>
<CENTER>
<H1>Folgende Umsatzdaten sind ausgelesen worden:</H1>
<HR>
<TABLE BORDER>
<TR>
<TD WIDTH="200"><B>Filialbereich:</B></TD>
<TD WIDTH="100"><B>Filialleiter:</B></TD>
<TD WIDTH="200"><B>Mitarbeiteranzahl:</B></TD>
<TD WIDTH="100"><B>Quartalsumsatz:</B></TD>
</TR>

HERE_TEXT

my @data;
my @diagarray;

while (@data = $STH->fetchrow_array()) {
my $filialbereich = $data[0];
my $filialleiter = $data[1];
my $mitarbeiteranzahl = $data[2];
my $quartalsumsatz = $data[3];

push (@diagarray, $quartalsumsatz);

print qq§<TR>\n<TD><B>$filialbereich</B></TD>\n<TD>$filialleiter</TD>\n<TD>$mitarbeiteranzahl</TD>\n<TD>$quartalsumsatz</TD>\n</TR>\n§;
}
print ("<br><br>");

### Diagramm vorbereiten und zeichnen ###
use GD::Graph::pie; # Modul Diagramm / Kreisdiagramm laden
my $graph = GD::Graph::pie->new(300, 300);

### Diagrammoptionen definieren ###
$graph->set(
title => 'Umsatzverteilung Filialen',
) or die $graph->error;

### DEBUG-BLOCK ZUR PRUEFUNG DER ARRAY-INHALTE ###
### my $diagarray;
### foreach $diagarray(@diagarray)
### {
### print ("$diagarray\n");
### }

### Diagramm plotten ###
my $gd = $graph->plot(\@diagarray) or die $graph->error;

### Diagramm exportieren ###
my $format = $graph->export_format;
print header("image/$format");
binmode STDOUT;
print $graph->plot(\@diagarray)->$format();

Ist vermutlich nur eine Kleinigkeit die ich übersehen hab, aber ich komm nicht drauf?

Für eine kurze Antwort wär ich Euch dankbar!

LG
Mike

Datum: 13.06.2009-20:38

BeitragNachtrag
Seitenanfang
Ein Nachtrag:

Da ich im Skript einige Leerzeilen entfernt habe, stimmt meine Angabe von Zeile 99 nicht mehr. Ist nun Zeile 79 mit dem Inhalt:


my $gd = $graph->plot(\@diagarray) or die $graph->error

Datum: 13.06.2009-20:44

Beitrag[Erledigt]
Seitenanfang
Konnte das Problem mehr oder weniger beseitigen. Musste das Array um die Bezeichnung vertiefen, bzw. erweitern.

Gruß
Mike

Datum: 13.06.2009-21:44

-






-
-