Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Tabellenabfrage Rangliste [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Tabellenabfrage Rangliste


 
Sven4972
02-03-2010, 15:09 
 
Hallo,

ich habe folgende Tabelle:

http://www.skatonline.de/img/ahnen.jpg

Jetzt möchte ich eine Rangliste erstelle, wo es für die erreichten Plätze Punkte gibt und das dann in einer Tabelle ausgeben.

Für Platz 1 soll es 5 Punkte, Platz 2 3 Punkte und Platz 3 1 Punkt geben.

Wie kann ich das realisieren?


LG Sven

 
AmicaNoctis
02-03-2010, 15:23 
 
Hallo,

MySQL kann bei der Abfrage auch rechnen, du musst nur mathematisch definieren können, welcher Rang wieviele Punkte bekommt und schreibst diesen Ausdruck einfach mit in die Spaltenreferenzen (das ist der Teil zwischen "SELECT" und "FROM").

Gruß,

Amica

 
Sven4972
02-03-2010, 16:25 
 
Hallo,

das habe ich bis jetzt:


$abfrage = "SELECT nick, CASE WHEN platz = 1 THEN 5
WHEN platz = 2 THEN 3
ELSE 1 END AS punkte
FROM turnier GROUP BY nick ORDER BY punkte DESC";
$ergebnis = mysql_query($abfrage);
$platz = 0;
while($row = mysql_fetch_object($ergebnis))
{
echo "<tr><td class='style2' style='width: 80px height: 30px;'>";
echo $platz = $platz + 1;
echo "</td><td class='style2' style='width: 270px height: 30px;'>";
echo $row ->nick;
echo "</td><td class='style2' style='width: 80px' height: 30px;>";
echo $row ->punkte;
echo "</td>";
echo "</tr>";
}


Jetzt zeigt er aber nur immer ein Ergebnis pro Nick an und vergibt die Punkte.
Wie bekomme ich es jetzt hin, das er die Punkte für die Nicks zusammenrechnet?


LG Sven

 
AmicaNoctis
02-03-2010, 16:28 
 
:rtfm: Mit GROUP BY und den Aggregatfunktionen (http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html).

 
Sven4972
02-03-2010, 16:40 
 
Hallo,

danke für deine Hinweise, jetzt hab ich es.


$abfrage = "SELECT nick, SUM(CASE WHEN platz = 1 THEN 5
WHEN platz = 2 THEN 3
ELSE 1 END) AS punkte
FROM turnier GROUP BY nick ORDER BY punkte DESC, nick ASC";
$ergebnis = mysql_query($abfrage);
$platz = 0;
while($row = mysql_fetch_object($ergebnis))
{
echo "<tr><td class='style2' style='width: 80px height: 30px;'>";
echo $platz = $platz + 1;
echo "</td><td class='style2' style='width: 270px height: 30px;'>";
echo $row ->nick;
echo "</td><td class='style2' style='width: 80px' height: 30px;>";
echo $row ->punkte;
echo "</td>";
echo "</tr>";
}


LG Sven


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:37 Uhr.