Feedback - Auswertung mit Balkendiagramm gesucht


C

capu

Hallo Freunde!

Ich suche ein enfaches Script in Perl, welches einfache values über ein Balken-Diagramm auswerten kann.

Wo kann ich das eventuelle saugen?

Danke Euch für jede Hilfe!
capu
 

barney

Mitglied
hi,

das sollte dir weiterhelfen es ist nur ein beispiel:

wertung.html:
PHP:
<html>
<body>
<center>
<h1>Bester Kinofilm</h1>
</center><p><big>
Wählen Sie den derzeit besten Kinofilm,
zusätzlich sollten Sie diesen Film auch bewerten.<br>
<a href="cgi-bin/wertung.pl?ergebnis=1">Hier</a>
kann das bisherige Ergebnis betrachtet werden.<p>
<form action="cgi-bin/wertung.pl" method="post">
<input type="radio" name="film" value="End of Days-0">
End of Days<br>
<input type="radio" name="film" value="Die Welt ist nicht genug-1">
Die Welt ist nicht genug <br>
<input type="radio" name="film" value="Der Knochenjäger-2">
Der Knochenjäger<br>
<input type="radio" name="film" value="American Pie-3">
American Pie<br>
<input type="radio" name="film" value="American Beauty-4">
American Beauty<br>
<input type="radio" name="film" value="The Green Mile-5">
The Green Mile<p>
Für die Bewertung gilt Folgendes:<br>
1 = sehr gut; 2 = gut; 3 = befriedigend<br>
4 = ausreichend; 5 = mangelhaft; 6 = ungenügend<p>
Meine Bewertung: <select name="punkte"><option>
<option>1<option>2<option>3
<option>4<option>5<option>6
</select><p>
<input type="submit" value="Stimme abgeben">
</form>
</body>
</html>
wertung.pl:

PHP:
#!/usr/bin/perl
if($ENV{'REQUEST_METHOD'} eq 'GET')
  { $eingabe = $ENV{'QUERY_STRING'}; }
else
  { read(STDIN, $eingabe, $ENV{'CONTENT_LENGTH'}); }
@paare = split(/&/, $eingabe);
foreach $paar (@paare)
{
   ($schluessel, $wert) = split(/=/, $paar);
   $wert =~ tr/+/ /;
   $wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/
   pack("C",hex($1))/eg;
   $FORM{$schluessel} = $wert;
}
# Formularfelder überprüfen
&fehler unless (($FORM{'film'} && $FORM{'punkte'}) || $FORM{'ergebnis'});
# bisherige Wertungen einlesen
open(DATEI,"<wertung.dat") || die "Fehler beim Öffnen\n";
@datei = <DATEI>;
close(DATEI);
chomp($datei[0]);
@stimmen = split(/;/,$datei[0]);
@punkte = split(/;/,$datei[1]);
# wenn neue Wertung
if ($FORM{'film'})
{
  @titel = split(/-/,$FORM{'film'});
  # erhöhen der Stimmen und Punkte
  $stimmen[$titel[1]++;
  $punkte[$titel[1] += $FORM{'punkte'};
  # vorbereiten zum Speichern
  $zeile1 = join(";",@stimmen);
  $zeile2 = join(";",@punkte);
  # Speichern der Daten
  open(DATEI,">wertung.dat") || die "Fehler beim
  Schreiben\n";
  print DATEI "$zeile1\n";
  print DATEI "$zeile2";
  close(DATEI);
}
$gesamtstimmen = 0;
foreach(@stimmen)
{
  $gesamtstimmen += $_;
}
# berechnen von Prozent und Durchschnitt
for($i=0;$i<6;$i++)
{
  $prozent[$i] = sprintf "%2.2f",
  $stimmen[$i]/$gesamtstimmen*100;
  $hoehe[$i] = $prozent[$i]*4+1;
  if($stimmen[$i]!=0)
  {
    $durchschnitt[$i] = sprintf "%2.2f",
    $punkte[$i]/$stimmen[$i];
  }
  else
  {
    $durchschnitt[$i] = '-';
  }
}
# Ausgabe der HTML-Seite mit Diagramm
print "Content-type: text/html\n\n";
print <<ERG;
<html><body><center>
<h1>Ergebnis</h1></center>
<table width=100%>
<tr>
<td><center>S<br>T<br>I<br>M<br>M<br>E<br>N</td>
<td valign=bottom><img src=../bilder/wertung.gif width=20 height=$hoehe[0]></td>
<td valign=bottom><img src=../bilder/wertung.gif width=20 height=$hoehe[1]></td>
<td valign=bottom><img src=../bilder/wertung.gif width=20 height=$hoehe[2]></td>
<td valign=bottom><img src=../bilder/wertung.gif width=20 height=$hoehe[3]></td>
<td valign=bottom><img src=../bilder/wertung.gif width=20 height=$hoehe[4]></td>
<td valign=bottom><img src=../bilder/wertung.gif width=20 height=$hoehe[5]></td>
</tr>
<tr><td></td>
<td>End of Days</td>
<td>Die Welt ist nicht genug</td>
<td>Der Knochenjäger</td>
<td>American Pie</td>
<td>American Beauty</td>
<td>The Green Mile</td>
<tr><td></td>
<td>$stimmen[0] ($prozent[0]%)</td>
<td>$stimmen[1] ($prozent[1]%)</td>
<td>$stimmen[2] ($prozent[2]%)</td>
<td>$stimmen[3] ($prozent[3]%)</td>
<td>$stimmen[4] ($prozent[4]%)</td>
<td>$stimmen[5] ($prozent[5]%)</td>
</tr>
</table><p>
Hier sind zusätzlich noch die Durchschnittsbewertungen
zu den einzelnen Filmen zu sehen:<br>
End of Days - $durchschnitt[0]<br>
Die Welt ist nicht genug - $durchschnitt[1]<br>
Der Knochenjäger - $durchschnitt[2]<br>
American Pie - $durchschnitt[3]<br>
American Beauty - $durchschnitt[4]<br>
The Green Mile - $durchschnitt[5]
</body></html>
ERG
# Fehlerfunktion
sub fehler
{
  print "Content-Type: text/html\n\n";
  print "<html><body><center>\n";
  print "<h1>Unvollständige Angaben</h1></center>\n";
  print "Zu dem gewählten Titel muss auch ";
  print "eine Bewertung abgegeben werden.<p>\n";
  print "Mit dem Zurück-Button Ihres Browsers kommen";
  print " Sie wieder zurück zur vorherigen Seite.\n";
  print "</body></html>";
  exit;
}
ich hab jetzt leider kein geeignetes gif
aber ich bin mir sicher du wirst eines finden.

sollte ungefähr so aussehen nur um 90 grad gedreht


mfg barney
 

Anhänge

Neue Beiträge