http://baseportal.de/baseportal/MarkusJakubiec/main
Hallo,
unter der oben angegebenen Adresse habe ich ein Portal zur Eingabe für Streckensegelflüge eingerichtet. Jeder Flug erhält je nach Weite eine bestimmte Punktzahl. Nun möchte ich eine Rangliste der verschiedenen Piloten automatisch erstellen: wenn ein Pilot seinen Flug eingibt, soll er seine neue Position in der aktualisierten Rangliste möglichst sofort wiederfinden.
Wie macht man soetwas?
Gruß
Markus
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 23.Juni.2003, 13:44.
Re: Rangliste - nach den Punkten sortieren...
Antworten
Hallo Christoph,
vielen Dank für die Antwort. Die Rangliste ist aber doch leider noch etwas komplexer: ich habe nämlich vergessen zu erwähnen, daß die Piloten mehrere Flüge machen. Es werden DMST-Punkte und OLC-Punkte zu einer Gesamtpunktzahl zusammengezählt. Wenn in beiden Fällen die Punktzahl > 0 ist, gibt es nochmal einen Bonus von 100 Punkten. Alle Flüge eines Piloten werden zur Gesamtpunktzahl summiert.
Die Rangliste soll den Pilotenrang nach Gesamtpunktzahl ausgeben.
Mein Wissen über Perl und HTML ist minimal. Wenn Ihr mir trotzdem helfen würdet, wäre das sehr nett!
Gruß
Markus Jakubiec
http://baseportal.de/baseportal/MarkusJakubiec/main
http://baseportal.de/cgi-bin/baseportal.pl?htx=/MarkusJakubiec/test/Testkopie
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 24.Juni.2003, 16:15.
Re: Rangliste - nach den Punkten sortieren... kein problem ;-)
Jo, das ist recht schnell zu lösen:
<loop code=perl>
$punkte=$_loop{"DMST-Punkte"}+$_loop{"OLC-Punkte"}; # beide punktearten addieren
$punkte+=100 if $_loop{"DMST-Punkte"}>0 && $_loop{"OLC-Punkte"}>0; # wenn beide > 0 dann 100 dazuaddieren
push @liste, "$punkte#$Vorname#$Name"; # in einer liste sammeln
</loop>
<table>
<perl>
@liste=sort { $a <=> $b } @liste; # liste nach punktzahl sortieren
foreach $ein (@liste) # durch die liste gehen
{
($punkte, $Vorname, $Name)=split /#/, $ein; # Eintrag in Einzelteile aufteilen
out "<tr><td>".(++$i).</td><td>$Vorname</td><td>$Name</td><td>$punkte</td></tr>"; # ausgeben ;-)
}
</perl>
</table>
nicht getestet, aber müsste klappen... einzige hakeligkeit: du hast zahlen wie "418,00" - also ein komma also dezimalzeichen (oder wie heisst das? ;-) ) - Perl will eigentlich nen Punkt. Im Moment scheint das aber kein Problem zu sein, weil dahinter eh nur Nullen stehen... Im Bedarf müsste man vorher das Komma in einen Punkt wandeln... ;-)
Antworten
Beitrag von Markus Jakubiec (8 Beiträge) am Mittwoch, 25.Juni.2003, 00:07.
Re: Rangliste - nach den Punkten sortieren... kein problem ;-)
Hallo Christoph,
leider bin ich ein ziemlicher Laie und krieg`s einfach nicht hin.
Es fehlt mir noch die Möglichkeit, die Punktzahlen der verschiedenen Flüge aufzuaddieren. Die meisten Piloten haben mehrere Flüge gemacht und in der Rangliste soll die Gesamtpunktzahl der Piloten über alle ihre Flüge aufgeführt werden. Erschwerend kommt hinzu, daß evtl. im Verlauf der Saison sich weitere Piloten eintragen werden.
Hier gibt es immer wieder eine Syntax-Fehlermeldung:
foreach $ein (@liste) # durch die liste gehen
{
($punkte, $Vorname, $Name)=split /#/, $ein; # Eintrag in Einzelteile aufteilen
out "<tr><td>".(++$i).</td><td>$Vorname</td><td>$Name</td><td>$punkte</td></tr>"; # ausgeben ;-)
}
</perl>
Wenn Du mal Segelfliegen möchtest, hast Du einen Freiflug gut ;)
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 26.Juni.2003, 04:17.
Re: Rangliste - nach den Punkten sortieren... kein problem ;-)
Mein Fehler, hab ein " vergessen, nach dem (++$i). - also
out "<tr><td>".(++$i)."</td><td>$Vorname</td><td>$Name</td><td>$punkte</td></tr>"; # ausgeben ;-)
lautet die Zeile richtig... Jetzt müsste's klappen ;-)
> Es fehlt mir noch die Möglichkeit, die Punktzahlen der verschiedenen Flüge aufzuaddieren. Die meisten Piloten haben mehrere Flüge gemacht und in der Rangliste soll die Gesamtpunktzahl der Piloten über alle ihre Flüge aufgeführt werden. Erschwerend kommt hinzu, daß evtl. im Verlauf der Saison sich weitere Piloten eintragen werden
Ist das jetzt eine neue Aufgabenstellung? ;-) Naja, uffz, also dann müsste man die Punkte bzgl. der Piloten sammeln......... So:
<loop code=perl>
$name="$Vorname#$Name";
$punkte{$name}=$_loop{"DMST-Punkte"}+$_loop{"OLC-Punkte"};
$punkte{$name}+=100 if $_loop{"DMST-Punkte"}>0 && $_loop{"OLC-Punkte"}>0;
</loop>
<table>
<perl>
@liste=sort { $punkte{a} <=> $punkte{$b} } (keys %punkte);
foreach $ein (@liste)
{
$punkte=$punkte{$ein};
($Vorname, $Name)=split /#/, $ein;
out "<tr><td>".(++$i)."</td><td>$Vorname</td><td>$Name</td><td>$punkte</td></tr>";
}
</perl>
</table>
Wenn ich nich wieder einen Tippfehler drin habe, sollte es klappen ;-)
> Wenn Du mal Segelfliegen möchtest, hast Du einen Freiflug gut ;)
Bin ich sofort dabei!!!!! Wo? ;-)
Antworten
Beitrag von Markus Jakubiec (8 Beiträge) am Donnerstag, 26.Juni.2003, 13:36.
Re: Rangliste - nach den Punkten sortieren
Hallo Christoph,
die Liste gibt jeweils die Punktzahl des letzten Fluges aus - summiert aber noch nicht alle Flüge der Piloten auf :(
Mitfliegen kannst Du entweder in Grambek (20km südlich von Lübeck) oder in der Nähe von Gifhorn.
Wenn das zuweit weg von Dir ist - dann sag mir mal die Region und ich sehe mal nach, wen ich in Deiner Gegend kenne - (Segelflieger kenne ich fast überall in Deutschland).
Wenn Du mal Dein datenbankbegeistertes Herz höherschlagen lassen willst, sieh Dir mal die Seite www.segelflugszene.de an ...
Gruß
Markus
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 26.Juni.2003, 15:08.
Re: Rangliste - nach den Punkten sortieren
Wie definiert sich denn "alle Flüge eine Piloten" ? Ich dachte anhand des Vornamen + Namen...? Also es gibt mehrere Einträge für "Stefan Meier" mit jeweils unterschiedlichen Punkten - diese werden in der jetzigen Version addiert (so ich keine Fehler gemacht habe ;-) )...
20 km südlich von Lübeck klingt garnicht so weit entfernt von Berlin - müsste ein Wochenendausflug sein...?
Antworten
Beitrag von Markus Jakubiec (8 Beiträge) am Donnerstag, 26.Juni.2003, 17:04.
Re: Rangliste - nach den Punkten sortieren
Ja, das ist richtig! Aber in der ausgegebenen Liste taucht nur der chronologisch letzte Flug des jeweiligen Piloten auf - die Punkte seiner vorangegangenen Flüge werden nicht mitaddiert...
Berlin ist übrigens perfekt - bei uns fliegt nämlich ein ganzer Berliner Verein auf der Grambeker Heide (www.grambekerheide.de und www.blcl.de)-da gibt es reichlich Mitfahrgelegenheiten. Und die Segelfliegerei ist ein endloses Betätigungsfeld für Datenbankspezialisten ;)
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 26.Juni.2003, 18:51.
Re: Rangliste - nach den Punkten sortieren
Antworten
Beitrag von Sander (8133 Beiträge) am Donnerstag, 26.Juni.2003, 20:21.
Re: Rangliste - nach den Punkten sortieren
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 26.Juni.2003, 20:26.
Re: Rangliste - nach den Punkten sortieren
Antworten
Hallo Christoph,
die Segelflugpiloten nutzen die Datenbank wie verrückt - es funktioniert perfekt!
Vielen Dank nochmal - und wir hoffen, Euch mal auf der Grambeker Heide zu sehen.
Gruß
Markus
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 30.Juni.2003, 14:27.
Re: Rangliste - nach den Punkten sortieren
Das ist prima ;-)
Jau, ich will auf jeden Fall fliegen! ;-)
Antworten
Beitrag von Markus Jakubiec (8 Beiträge) am Montag, 30.Juni.2003, 14:43.
Re: Rangliste - nach den Punkten sortieren
Sind meine Tel.-Nummern und die E-Mail-Adressen bei Dir angekommen?
Antworten
Beitrag von Markus Jakubiec (8 Beiträge) am Donnerstag, 26.Juni.2003, 22:52.
Re: Rangliste - nach den Punkten sortieren
Es funktioniert! Vielen, vielen Dank.
Ihr wollt doch nicht etwa freiwillig aus einem heilen Flugzeug springen ?!?
Kommt lieber mal zu uns in den schönen Kreis Herzogtum Lauenburg. (ich habe Dir eine E-Mail mit Details an die obige Adresse geschickt)
Gruß
Markus
Antworten
Beitrag von sander (0 Beiträge) am Freitag, 27.Juni.2003, 00:14.
Re: Rangliste - nach den Punkten sortieren
Antworten