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)
Ranking Tabelle? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Ranking Tabelle?


 
DarkFlash
21-04-2002, 00:19 
 
Hallo!

Das ist vielleicht eine dumme Frage, aber ich kriege es einfach nicht hin.

Ich habe eine "Comic Index" Tabelle in der sich Angaben verschiedener Hefte befinden.
Die für diese Abfrage wichtige Spalte ist [autor]. Es gibt mehrere Hefte, und jedes Heft hat logischerweise einen Autor. Nehmen wir an es gibt insgesamt 20 Hefte und davon hat Mr. X 10 geschrieben, Mr.Y 8 und Mr.F 2 (es befinden sich natürlich mehr als nur 20 Hefte in der Tabelle :-)). Ich möchte nun gerne ein Ranking erstellen, das ungefähr folgendermaßen aussehen soll:

Platz Autor Anzahl Hefte
1. Mr.X 10
2. Mr.Y 8
3. Mr.F 2
.
.
.

Jeder Autor soll nur einmal auftauchen und die Anzahl der von ihm geschriebenen Hefte soll addiert und ausgegeben werden.

Mein jetziger Code sieht folgendermaßen aus:

---------------------------------------------------------------------------------

$Query = "Select * from $TableName GROUP BY autor
order by autor asc";

$Result = mysql_db_query ($DBName, $Query, $Link);
$Result2 = mysql_db_query("$DBName", "SELECT COUNT(autor) from comicindex");

$anzahl = mysql_result($Result2,0);

while ($Row = mysql_fetch_array ($Result))
{

print ("$Row[autor] - $anzahl<br>
\n");

}
mysql_close ($Link);

---------------------------------------------------------------------------------

Bei mir wird immer nur die Anzahl aller Hefte ausgegeben. Was muss an dem Code geändert werden?

Grüße
Thilo

 
Titus
21-04-2002, 07:06 
 
$Result = mysql_query("select autor, count(*) from $TableName group by autor");
for ($i=1; list($autor, $anzahl) = mysql_fetch_row($Result); $i++)
echo "$i - $autor - $anzahl hefte<br>";

 
DarkFlash
21-04-2002, 16:27 
 
Super! Vielen Dank. Das funktioniert. Leider werden die Daten nicht absteigend nach der höchsten Anzahl von Heften, sondern nach dem Namen des Autors angezeigt.

Bsp. weise so:

--------------------------------------------
21 - Joe Casey - 9 hefte
22 - Joe Kelly - 11 hefte
23 - John Byrne - 46 hefte
24 - Jordan B. Gorfinkel - 3 hefte
--------------------------------------------

ich hätte es aber lieber so :-)

--------------------------------------------
John Byrne - 46 hefte
Joe Kelly - 11 hefte
Joe Casey - 9 hefte
Jordan B. Gorfinkel - 3 hefte
--------------------------------------------

Wie erreiche ich das es so ausgegeben wird?

Grüße
Thilo

 
hand
21-04-2002, 16:31 
 
Ich kanns nicht checken, aber ich nehme an es müßte so gehen:



$Result = mysql_query("select autor, count(*) from $TableName group by autor order by 2 desc");
for ($i=1; list($autor, $anzahl) = mysql_fetch_row($Result); $i++)
echo "$autor - $anzahl hefte<br>";

 
DarkFlash
21-04-2002, 19:59 
 
Danke. Jetzt funktioniert es wie es soll :D


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:13 Uhr.