Berechung des prozentualen Anteils und Speichern der neuen Stimmanzahlen in der Datei
$gesamt=0;
for($i=0; $i<=$#wert; $i++)
{
if($names[$i] =~ $Formular[1])
{
$wert[$i]++;
$aktuell=$i;
}
$gesamt=$gesamt+$wert[$i];
}
Zunächst wird der Skalar $gesamt auf 0 gesetzt.
Anschließend wird eine Schleife sooft durchlaufen, bis der letzte Wert des Arrays @Wert erreicht ist. $#wert ermittelt die Anzahl der Array-Elemente.
In dieser Schleife wird mit if($names[$i] =~ $Formular[1]) geprüft, ob der Teamname an $i-ter Stelle des Arrays @names im aus dem HTML-Formular übertragenen Teamnamen enthalten ist,
wobei dieser im Array @Formular an Position 1 gespeichert wurde.
Wenn dies zutrifft, also die Teamnamen identisch sind, wird der Stimmanzahl dieses Teams, die in @wert an der Stelle ist, deren Wert $i gerade hat, um 1 erhöht.
Ferner wird der Stand der Laufvariablen $i im Skalar $aktuell gespeichert, da hierauf später noch mal zurückgegriffen wird.
Dieser Teil des Scriptes ist logischerweise nur im Abstimm-Script enthalten.
Außerdem wird in der Schleife die Anzahl der Gesamtstimmen berechnet. Dies geschieht mit $gesamt=$gesamt+$wert[$i],
wobei der Gesamtanzahl die Anzahl der Stimmen an $i-ter Stelle von @wert hinzuaddiert werden.
open(WERTS, ">anzahl.txt");
for($i=0; $i<=$#wert; $i++)
{
if($i==$aktuell)
{
print WERTS "$wert[$i]\n";
}
else
{
print WERTS "$wert[$i]";
}
}
close(WERTS);
Mit open(WERTS, ">anzahl.txt") wird die Datei anzahl.txt zum Schreiben geöffnet.
In einer Schleife werden alle $werte in die Datei geschrieben, wobei dem $aktuellen Wert noch ein Zeilenumbruch hinzugefügt werden muss. (if($i==$aktuell)...)
Dabei wird erneut eine Laufvariable verwendet, die solange um 1 erhöht wird, bis die Anzahl der der in @wert gespeicherten Daten überschritten ist.
Es wird jeweils der $i-te $wert[$i] der Datei hinzugefügt.
Zum Schluss wird die Datei wieder geschlossen. (close(WERTS))
$rund=0;
$top=0;
for($i=0;$i<=$#wert;$i++)
{
if($gesamt!=0)
{
$pro[$i]=int(($wert[$i]/$gesamt)*100);
}
else
{
$pro[$i]=0;
}
if($pro[$i]>$pro[$top])
{
$top=$i;
}
$rund=$rund+$pro[$i];
}
Hier werden als erstes die Skalare $rund und $top auf 0 gesetzt.
Danach ist erneut eine Schleife definiert, die alle $#werte überprüft, wobei erneut die Laufvariable $i verwendet wird.
In dieser Schleife wird anfangs geprüft, ob überhaupt Stimmen abgegeben worden sind, bzw. ob die Gesamtanzahl der Stimmen ungleich 0 ist: if($gesamt!=0)...
Ist dies der Fall, so wird mit $pro[$i]=int(($wert[$i]/$gesamt)*100)
im Array @pro an $i-ter Stelle der Prozentsatz des $wert[$i] an $i-ter Stelle gespeichert, wobei beim Prozentwert die Nachkommastellen abgeschnitten werden: int(($wert[$i]/$gesamt)*100)
Falls noch keine Stimme abgegeben wurde, werden alle $prozentwerte auf 0 gesetzt.
Da durch das Abschneiden ein Gesamt-Prozentwert von <100 rauskommen kann,
wird dies zur späteren Überprüfung in dem Skalar $rund gespeichert.
Ferner wird hierfür die Array-Element-Nummer mit dem höchsten Prozentwert ermittelt und in $top gespeichert:
Mit if($pro[$i]>$pro[$top]) wird überprüft, ob der Prozentwert an $i-ter Stelle
größer ist als der an der an der $top-ten Stelle im Array @pro.
Trifft dies zu, so wird $top der Wert von $i zugewiesen.
if(($rund!=100)&&($rund!=0))
{
$pro[$top]=$pro[$top]+(100-$rund);
}
Zunächst wird überprüft, ob der Skalar $rund (s. oben)
nicht den Wert 100 und den Wert 0 hat: if(($rund!=100)&&($rund!=0))...
Trifft dies zu, so wird dem größten Prozentwert, dessen Array-Element-Nummer
im Skalar $top gepeichert wurde der restliche Prozentbetrag hinzuaddiert:
$pro[$top]=$pro[$top]+(100-$rund)
©opyrights @ Nils Heuermann & Stefan Dyck 2000