Seite 2 von 5

Verfasst: 14.01.2003 01:24
von PhilippK
Wieso in die Ferne schweifen... ;-)

Gruß und N8,

Philipp

Verfasst: 14.01.2003 08:29
von PhilippK
Zur zweiten Frage:

so wie ich das sehe, gibt's (theoretisch) vier Lösungen:
  1. du schreibst die Platzierungen vor der Ausgabe in die Datenbank, musst eben aufpassen, dass die jedesmal bei Änderung mit aktualisiert wird
  2. du machst das gleiche, nur jedesmal über 'ne temporäre Tabelle als Zwischenspeicher
  3. du lässt dir die Daten von MySQL nach Plätzen sortiert ausgeben, baust dir dann in PHP ein Array auf, fügst die Platznummer hinzu und sortierst dann ggf. das Array nach Benutzerwünschen um
  4. du versuchst es mit 'ner komplexeren Abfrage (die Platzierung entspricht dabei der Zahl der Datensätze mit größerer Punktezahl oder mit gleicher Punktezahl und gleichzeitig größerer Differenz + 1). Da wirst du evtl. noch ein Problem bei gleichplazierten bekommen, außerdem könnte MySQL damit überfordert sein...
Gruß, Philipp

Verfasst: 15.01.2003 00:30
von Condor
Hi,
Lösung 3 hört sich gut an. Genauso habe ich es versucht, doch vergebens. Ich habe das mal ausprobiert, doch dann stand bei jeder Mannschaft der 13 Platz, da ich 13 Datensätze habe. Daher weiss ich nicht wie ich das lösen kann. Hast du vielleicht einen anhaltspunkt. Theoretisch funktioniert alles wunderbar, aber praktisch funktioniert nix.

Verfasst: 15.01.2003 00:47
von PhilippK
Ich würde in zwei Teilen vorgehen:
- zuerst das Auslesen aus der Datenbank
- und wenn das klappt (Testen!) an die Sortierung gehen.

Wenn du fit in Englisch bist, schau mal hier rein:
http://www.php.net/manual/en/function.arsort.php

Da scheint einer schon ein ähnliches Problem gehabt zu haben...

Gruß, Philipp

BTW: Wenn's am ersten Teil noch hapert, bitte nochmals melden

Verfasst: 15.01.2003 02:04
von Condor
Hi,
das auslesen aus der DB und das Sortieren klappt wunderbar, ohne Probleme. Aber das das Script dann den jeweiligen Platz vor die Mannschaft schreibt klappt noch nicht. Wie gesagt, dann habe ich bei jeder Mannschaft den selben Platz. Ich werde mir mal jetzt den Link vornehmen, welchen du mir gepostet hast. Danke das du überhaupt deine Hilfe anbietest. Ist ja auch nicht selbstverständlich.

Verfasst: 15.01.2003 02:14
von Condor
Hallo,
so wie ich das sehe, gehts da um arrays. Aber meine komplette Tabelle ist in einer MySQL-DB. Da gibts ja auch arrays, aber da funktioniert das doch anders oder ? Meine Tabelle hat 6 Spalten: Platz, Team, Spiele, Punkte, Gtore, Btore und Tordiff. Wenn dir das was hilft.

Verfasst: 15.01.2003 15:29
von Gonzo_w
Also was ich da jetzt so mitbekommen habe, funzt alles bis auf die Ausgabe der Platzierung oder wie?

Versuch mal folgendes:
1. Vor die WHILE-Schleife setzt du $platz=1
2. Du inkrementierst $platz erst am Ende der WHILE-Schleife

Wenn ich dein Problem richtig verstanden habe, sollte das evtl. die Lösung sein. Hatte mal so ein ähnliches Problem, da hat das geholfen (bin aber noch Anfänger)!

Verfasst: 15.01.2003 22:53
von PhilippK
Hi Condor,

nochmals zur Vorgehensweise:
1. Zuerst erstellst du die Abfrage auf die MySQL-Datenbank. Die Daten lässt du dir da so sortiert ausgeben, dass du die Platznummern von eins aufsteigend vergeben kannst.
2. Aus den Daten der MySQL-Datenbank baust du dann ein PHP-Array auf (ähnlich dem in dem Artikel auf php.net beschriebenen). Dabei vergibst du auch gleich auch die Platznummern (siehe Beitrag von Gonzo_w).
3. Anschließend sortierst die Daten nach Wunsch wie im Artikel beschrieben.

Gruß, Philipp

Verfasst: 15.01.2003 23:45
von Condor
Hallo,
ich danke euch sehr für eure Hilfe, aber ich glaube ich vergesse die ganze Geschichte am besten. Ich bekomme es einfach nicht hin. Das was Gonzo da geschrieben hat, habe ich die ganze Zeit schon versucht. Dann steht in der DB bei jeder Mannschaft Platz 1.
@PhilipK: Punkt 1 funktioniert ja schon, Punkt 3 ist ja auch kein Problem, aber Punkt 2 kann ich irgendwie nicht realisieren. Ich weiss auch nicht wie das Array dann aussehen soll und den Artikel habe ich auch nur teils verstanden.

Verfasst: 16.01.2003 00:03
von PhilippK
So mal einfach runtergeschrieben:

Code: Alles auswählen

$result = mysql_query("SELECT * FROM $table ORDER by punkte DESC, tordiff DESC", $conn);

$table = array();
$i = 0;

while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  $table[$i]['team'] = $row['team'];
  [...] (andere Felder)
  $i++;
}
Damit hast du das Array, der erste Zähler entspricht dem Platz minus 1.

Wenn du so weit bist, kannst du dich nochmals melden, wenn es mit dem sortieren nicht klappen sollte.

Gruß, Philipp