Abfrage, Sortieren, Ausgeben

web7

Grünschnabel
Hi,

ich bin eigentlich Anfänger in PHP und brauch ein bissle eure Hilfe :).

Hab eine SQL Abfrage in PHP:

PHP:
$username = "....";
$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 nun möchte ich aber das nicht für jeden User einzeln definieren. Geht das, dass er automatisch aus der Tabelle dbimghost zusammenzählt, sprich da steht jetzt Username web7. Er schaut dann überall wo web7 steht und schreibt dann hin: web7 hat schon 200 Bilder hochgeladen. Das soll er dann mit allen machen (aktuell 6 User). Und dann sortieren, sprich der, der am meisten hat, soll oben sein.

Ich verzweifel schon, probiere immer wieder, aber bekomme das irgendwie nicht hin.

Könnt ihr mir bitte helfen? Wäre wirklich klasse
 
Bei SQL giebts "COUNT". Hab leider grad keine zeit für ein Beispiel.
Edit. Ne glaub das ist ein denk Fehler von mir.
 
Zuletzt bearbeitet:
Hmm kannst du nicht einfach alle einträge auslesen?
Dann einfach
$Bilder[$NameVomMaler]++;
Bei jeder wiedergegebenen Zeile?
 
So:

PHP:
$username = "....";
$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>";

$arr = array();
for($i = 1; $i <= $num_rows; $i++) {

$fetch = mysql_fetch_assoc($result);

$arr[] = $fetch['img'];

}
unset($i);
for($i = 0; $i < count($arr); $i++) {

$ak = $i != count($arr)-1 ? $i+1 : count($arr);

// $ak.... echo......... 

}

// Nicht getestet :D
 
Ich bin mit jetzt nicht sicher ob ich dich richtig verstanden habe, aber versuch mal folgendes:

Code:
SELECT username, count(*) AS anzahl FROM tabelle GROUP BY username ORDER BY anzahl

username und tabelle noch anpassen.

Ergebnis des Selects sähe dann z.B. folgendermaßen aus:

Code:
user2    400
user4    346
user1    256
user3     34
...
 
Zuletzt bearbeitet:
Hi,
schreibe doch die user in ein array und lasse dann für jeden user die abfrage machen, so bekommst du dein ergebnis. mit natsort() wird es dann der Größe nach sortiert:

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;
}
natsort($vergl);
print_r($vergl);
?>
 
Hi,
schreibe doch die user in ein array und lasse dann für jeden user die abfrage machen, so bekommst du dein ergebnis. mit natsort() wird es dann der Größe nach sortiert:

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;
}
natsort($vergl);
print_r($vergl);
?>

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, sprich User2 hat mehr, also daher an Platz eins, User1 hat weniger, daraufhin auf Platz2...
 
Ich bin mit jetzt nicht sicher ob ich dich richtig verstanden habe, aber versuch mal folgendes:

Code:
SELECT username, count(*) AS anzahl FROM tabelle GROUP BY username ORDER BY anzahl

username und tabelle noch anpassen.

Ergebnis des Selects sähe dann z.B. folgendermaßen aus:

Code:
user2    400
user4    346
user1    256
user3     34
...

Die Anzahl hab ich ja nicht in einer Tabelle, das soll er ja vorher zusammenzählen. Könnt ich ja eigentlich mit mehreren Befehlen machen, aber geht bestimmt auch einfacher ;)
 
Zurück