#!/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;
}