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
 

Neue Beiträge

Zurück