Abfrage, Sortieren, Ausgeben

Hi,



Genau das tut doch "COUNT(*) AS Anzahl"...

LG

Mein aktuelle Code tut das doch auch, dafür brauch ich ja nen Array oder? Aktuell lasse ich mir das so anzeigen:
PHP:
$username = "Name";
$link = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($datenbank, $link);
			
$result = mysql_query("SELECT * FROM images 
WHERE dbimghost='$username'", $link); 
$num_rows = mysql_num_rows($result); 

echo "$username hat schon $num_rows Grafikbilder hochgeladen<br>";

So, diese Abfrage mach ich aber nun für jeden User einzeln. Ich möchte das aber einfacher haben, sprich der soll einfach automatisch alle zusammenzählen, sprich: User1 zusammenzählen -> merken, User2 zusammenzählen-> merken. bis hin zu user xy.

Und dann sortiert nach dem höchsten ausgeben also:

User 2 = 500
User 1 = 200
Userxy = 50

Die bisher aufgezeigten Beispiele haben zwar etwas geholfen, aber irgendwie bin ich immer noch nicht schlauer :(.
 
Wenn ich das so mache, gibt er mir folgendes aus:

Array ( [User1] => 3 [User2] => 14 )

Die Anzahl stimmt, aber wie mache ich jetzt, dass er es mir auch schön in einer Tabelle anzeigt

guckst du hier:

PHP:
<?php
$array = array ( user1, user2, user3, user4, user5, user6);
$link = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($datenbank, $link);
$vergl = array();
foreach ($array as $username) {
$result = mysql_query("SELECT * FROM images
WHERE dbimghost='$username'", $link); 
$num_rows = mysql_num_rows($result);
$vergl[$username] = $num_rows;
}
echo "<table>";
natsort($vergl);
foreach ($vergl as $name => $anzahl) {
echo "<tr><td>$user</td><td>hat</td><td>$anzahl</td><td>Bilder hochgeladen</td></tr>";
}
echo "</table>";
?>

Dies wird dir aber glaube ich den user mit den meisten downloads ganz nach unten tun.
Um es umzukehren, schau mal hier nach: http://www.redio.de/bibliothek/Sortierverfahren#Selectionsort
 
guckst du hier:

PHP:
<?php
$array = array ( user1, user2, user3, user4, user5, user6);
$link = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($datenbank, $link);
$vergl = array();
foreach ($array as $username) {
$result = mysql_query("SELECT * FROM images
WHERE dbimghost='$username'", $link); 
$num_rows = mysql_num_rows($result);
$vergl[$username] = $num_rows;
}
echo "<table>";
natsort($vergl);
foreach ($vergl as $name => $anzahl) {
echo "<tr><td>$user</td><td>hat</td><td>$anzahl</td><td>Bilder hochgeladen</td></tr>";
}
echo "</table>";
?>

Dies wird dir aber glaube ich den user mit den meisten downloads ganz nach unten tun.
Um es umzukehren, schau mal hier nach: http://www.redio.de/bibliothek/Sortierverfahren#Selectionsort

Ha perfekt, du bistn Schatz ;).

Habs nun so hinbekommen, dass ich natsort durch arsort ausgetauscht hab, zudem war noch ein Fehler bei $user, da musste $name rein. So genau hab ich mir das vorgestellt :).

Vielen Dank. Mein Kumpel hatte recht, dass hier immer jemand hilft :).

Hier die Lösung:

PHP:
$array = array (User1, User2, User3);
$link = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($datenbank, $link);
$vergl = array();
foreach ($array as $username) {
$result = mysql_query("SELECT * FROM images_grafiker
WHERE dbimghost='$username'", $link); 
$num_rows = mysql_num_rows($result);
$vergl[$username] = $num_rows;
}
echo "<table>";
arsort($vergl);
foreach ($vergl as $name => $anzahl) {
echo "<tr><td>$name</td><td>hat</td><td>$anzahl</td><td>Bilder hochgeladen</td></tr>";
}
echo "</table>";
 
Hi,

mit der gruppierten Abfrage hättest Du genau 1 Query für alle User gebraucht, statt für jeden einzeln eine Abfrage an die DB zu senden. Ich weiss ja nicht, wieviele User Du hast oder noch erwartest...

LG
 
Zurück