[GastForen Archiv Perl und CGI Schleife funktioniert nicht

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Archiv - Archivierte Foren
Themen
Beiträge
Moderatoren
Letzter Beitrag

Schleife funktioniert nicht

Anonym
Beiträge gesamt: 22827

6. Jun 2003, 09:33
Beitrag # 1 von 22
Bewertung:
(4980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
ich brauch dringend Hilfe.
Ich möchte einen Graphen erstellen, was auch soweit klappt. Jedoch möchte ich die Werte für die y-Achse nicht aus der Datenbank auslesen, sondern berechnen lassen. Sie sollen in Prozent berechnet werden. Bis jetzt habe ich eine unnötig lange Schleife, die aber nicht funktioniert.

<code>
while(<DAT>){ if ($. == 1) {
($xtitle, $ytitle) = (split /;/)[1,0];
chomp($xtitle);
}

else{
chomp;
(@spalte) = split(/;/,$_);

if($spalte[1]<30&&$spalte[1]>=0)
{$spalte[1]='NNO';
$counter=$counter+1;}
elsif($spalte[1]<60&&$spalte[1]>=30) { $spalte[1]='NO';
$counter=$counter+1;}
elsif($spalte[1]<90&&$spalte[1]>=60) {
$spalte[1]='NOO';
$counter=$counter+1;
} elsif($spalte[1] <120&&$spalte[1]>=90) {
$spalte[1]='SOO';
$counter=$counter+1;}
elsif($spalte[1] <150&&$spalte[1]>=120) {
$spalte[1]='SO';
$counter=$counter+1;
} elsif($spalte[1] <180&&$spalte[1]>=150) {
$spalte[1]='SSO';
$counter=$counter+1;}
elsif($spalte[1] <210&&$spalte[1]>=180) {
$spalte[1]='SSW';
$counter=$counter+1;
} elsif($spalte[1] <240&&$spalte[1]>=210) {
$spalte[1]='SW';
$counter=$counter+1;}
elsif($spalte[1] <270&&$spalte[1]>=240) {
$spalte[1]='SWW';
$counter=$counter+1;
} elsif($spalte[1] <300&&$spalte[1]>=270) {
$spalte[1]='NWW';
$counter=$counter+1;}
elsif($spalte[1] <330&&$spalte[1]>=300) {
$spalte[1]='NW';
$counter=$counter+1;
} else{
$spalte[1]='NNW';
$counter=$counter+1;}
$gesamt=$gesamt+1;
}
my $wert=($counter/$gesamt)*100;

$hdaten{$spalte[1]}=$spalte[0]=$wert;
X

Schleife funktioniert nicht

oesi50
  
Beiträge gesamt: 2315

6. Jun 2003, 10:24
Beitrag # 2 von 22
Beitrag ID: #38490
Bewertung:
(4980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi,
hast Du schon mal dein Programm im Debug-Modus untersucht?

perl -d deinprogramm.pl

Grüße Oesi
PS.: Melde Dich doch mal im Forum an (Anonym ist so unpersönlich).


als Antwort auf: [#38480]

Schleife funktioniert nicht

Anonym
Beiträge gesamt: 22827

6. Jun 2003, 10:47
Beitrag # 3 von 22
Beitrag ID: #38499
Bewertung:
(4980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das habe ich noch nicht probiert.
Das muss ich doch in der Eingabeaufforderung tun. Das habe ich gerade versucht, aber dann kommt die Fehlermeldung:
"No such directory or file"

Aber hast du denn verstanden, was die Schleife machen soll?
Ich will, das in der Schleife geguckt wird, ob der Wert aus der Datenbank in dem Bereich liegt, wenn ja soll der counter hochgezählt werden. Zum Schluss soll die gesamte Anzahl berechnet werden. Aus diesen beiden Werten soll dann der prozentuale Wert berechnet werden und in der y-Achse ausgegeben werden.
Jedoch wird dann gar nichts im Browser angezeigt. habe auch über Data::Dumper untersucht, was in den Variablen drin steht, aber das stimmt schon nicht. Weiß aber nicht, wie ich die Schleife anders gestalten kann.
Hast du ne Idee?

LG Muse


als Antwort auf: [#38480]

Schleife funktioniert nicht

Muse
Beiträge gesamt: 13

6. Jun 2003, 10:51
Beitrag # 4 von 22
Beitrag ID: #38501
Bewertung:
(4980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Habe mich jetzt auch angemeldet.

LG Muse


als Antwort auf: [#38480]

Schleife funktioniert nicht

oesi50
  
Beiträge gesamt: 2315

6. Jun 2003, 11:20
Beitrag # 5 von 22
Beitrag ID: #38511
Bewertung:
(4980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi Muse,
kann es sein,das Du als Ergebnis immer 100 erhälst?

Grüße Oesi


als Antwort auf: [#38480]

Schleife funktioniert nicht

Muse
Beiträge gesamt: 13

6. Jun 2003, 11:28
Beitrag # 6 von 22
Beitrag ID: #38514
Bewertung:
(4980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Oesi,

nein, wenn ich das programm so laufen lasse, wie ich es dir geschickt habe, klappt es gar nicht.
Habe aber mal statt $wert als y-Werte einfach nur $gesamt angegeben.
Dann sollte eigentlich für jeden Wert der x-Achse der gleiche y-Wert angezeigt werden, da die Gesamtanzahl doch gleich ist.

Irgendwas haut bei der Schleife nicht hin, weiß aber leider nicht, wie ich sie anders machen soll.

LG muse


als Antwort auf: [#38480]

Schleife funktioniert nicht

oesi50
  
Beiträge gesamt: 2315

6. Jun 2003, 11:36
Beitrag # 7 von 22
Beitrag ID: #38516
Bewertung:
(4980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi Muse,
mit 'klappt nicht' kann ich leider nichts anfangen.
Was gibst Du an Datein rein, was kommt an Daten raus, was steht wann in welchen Arrays?

Grüße Oesi


als Antwort auf: [#38480]

Schleife funktioniert nicht

oesi50
  
Beiträge gesamt: 2315

6. Jun 2003, 11:49
Beitrag # 8 von 22
Beitrag ID: #38521
Bewertung:
(4980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich hab doch was gefunden:
gestalte mal den Anfang so hier:
while(<DAT>){
chomp;
if ($. == 1) {
($ytitle, $xtitle) = (split /;/);
next;
} else{
(@spalte) = split(/;/,$_);

if($spalte[1]<30&&$spalte[1]>=0) {


Grüße Oesi


als Antwort auf: [#38480]

Schleife funktioniert nicht

Muse
Beiträge gesamt: 13

6. Jun 2003, 11:52
Beitrag # 9 von 22
Beitrag ID: #38524
Bewertung:
(4980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
'Klappt nicht' heißt, dass im Browser leider gar nichts angezeigt wird.

Als Input aus der Datenbank gebe ich die Werte: 30,60,90,120,150,180,210,240,270,300,330 mit.
Dann werden doch die Bereich definiert. Es soll dann gesehen werden, in welchen Bereichen diese Werte liegen. Der erste wert liegt z.b. in dem Bereich NO und der zweite in NOO usw.
Wenn man dem Wert einen Bereich zugeordnet hat, soll der counter hochgezählt werden und am Ende soll die Gesamtzahl berechnet werden.
Dann soll der counter zur Gesamtzahl ins Verhältnis gebracht werden und in Prozent auf der y-Achse dargestellt werden.

ich habe über Data::dumper mal versucht herauszufinden, was in $gesamt und in $counter steht, und zwar in dem Zeitpunkt, wo ich die Berechnung durchführen lassen möchte.
In $gesamt steht folgendes: Var1=\0, Var1=\'1', Var1=\'2'...Var1=\'11'

Und in counter steht genau dasselbe.
Normalerweise sollte in counter immer nur 1 stehen, weil jedem Bereich ein Wert zugeordnet wurde und in gesamt sollte 11 stehen, weil es 11 Werte sind. Also scheint die Schleife völlig falsch zu sein, aber leider weiß ich nicht was.

Hoffe ich konnte dir etwas weiterhelfen. Es ist schwierig zu erklären.

LG Muse


als Antwort auf: [#38480]

Schleife funktioniert nicht

Muse
Beiträge gesamt: 13

6. Jun 2003, 11:58
Beitrag # 10 von 22
Beitrag ID: #38527
Bewertung:
(4980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Oesi,

habe deinen Vorschlag mit next versucht, aber das klappt leider auch nicht. Ich brauche das "(split /;/[1,0]);", damit ich dem Programm mitteilen kann, welche Spalten ich aus der Datenbank auswähle, um den Titel darstellen zu können.

LG muse


als Antwort auf: [#38480]

Schleife funktioniert nicht

oesi50
  
Beiträge gesamt: 2315

6. Jun 2003, 12:05
Beitrag # 11 von 22
Beitrag ID: #38528
Bewertung:
(4980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
es geht nicht nur um next!
Bitte verwende das komplett so!
Grüße Oesi


als Antwort auf: [#38480]

Schleife funktioniert nicht

Muse
Beiträge gesamt: 13

6. Jun 2003, 12:12
Beitrag # 12 von 22
Beitrag ID: #38531
Bewertung:
(4980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das habe ich jetzt auch gemacht, aber die Ausgabe ist unverändert.
Ich versuche jetzt erstmal für die y-werte $gesamt einzusetzen, um zu prüfen, ob diese Werte stimmen, aber die Ausgabe mit deinem veränderten Code ist genauso wie meine.

LG Muse


als Antwort auf: [#38480]

Schleife funktioniert nicht

oesi50
  
Beiträge gesamt: 2315

6. Jun 2003, 12:38
Beitrag # 13 von 22
Beitrag ID: #38535
Bewertung:
(4980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi,
so wie Dein Programm aufgebaut ist, sieht die DB-Datei so aus:

Y-Titel;X-Titel
;30
;60
;180
;30
.
.
.
habe ich das jetzt richtig verstanden, Du willst nur das Vorkommen der einzelnen Himmelsrichtungen zählen?

Grüße Oesi


als Antwort auf: [#38480]

Schleife funktioniert nicht

Muse
Beiträge gesamt: 13

6. Jun 2003, 13:43
Beitrag # 14 von 22
Beitrag ID: #38561
Bewertung:
(4980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Genau so, die Dateien sind als csv-Dateien abgelegt.
Es können natürlich auch andere Werte drin stehen, wie :
;50
;60
;95
oder so.
Es sind in der Datei 2 Spalten vorhanden. Ich will jedoch nur die zweite Spalte mit den Windrichtungen benutzen, deshalb $spalte[1].

Dann will ich einfach sehen, in welchem Bereich liegen diese Werte und dann die Bezeichnung zuordnen.
Zum Schluss will ich wissen, wieviele Werte in diesem Bereich liegen. In meinem Anfangsbespiel jeweils einmal.
Die Gesamtanzahl soll auch berechnet werden.

Und dann den prozentualen Anteil am Gesamtwert als y-Werte darstellen.

Hoffe es ist jetzt klar geworden, was ich meine.

LG
Muse


als Antwort auf: [#38480]

Schleife funktioniert nicht

oesi50
  
Beiträge gesamt: 2315

6. Jun 2003, 15:12
Beitrag # 15 von 22
Beitrag ID: #38590
Bewertung:
(4980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi Muse,

hier mal ein kleiner Codeschnipsel, der das realisiert, wovon ich glaube, das es so sein soll
#!/usr/bin/perl
my %hiri = ( # hier folgen jetzt die Himmelsrichtungen
'0' => 'N',
'90' => 'O',
'180' =>'S',
'270' => 'W'
);
open(DAT,"<daten.txt"); # Datendatei öffnen
my $gesamt=0;
while(<DAT>){
chomp;
if ($. == 1) {
($ytitle, $xtitle) = (split /;/);
next;
} else{
(@spalten) = split(/;/);
$hdaten{$spalten[1]}++;
$gesamt++;
}
}
close(DAT);

if ($gesamt>0) {# Division durch Null vermeiden
for (sort { $a <=> $b } keys %hdaten ){
push @{$daten[0]}, $hiri{$_};
push @{$daten[1]}, $hdaten{$_} *100/ $gesamt ;
}
}
# in @daten[0] sind jetzt die Werte der x Achse
# in @daten[1] sind jetzt die Werte der y Achse


Grüße Oesi


als Antwort auf: [#38480]
X

Aktuell

PDF / Print
enfocus_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
17.04.2024

Online
Mittwoch, 17. Apr. 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!