Ich möchte für mein Forum eine Rangliste machen, wo die Benutzer nach ihren Beiträgen geordnet werden. Aber ich möchte ganz links auch noch eine Spalte mit dem Rang haben. Wie kann man das am besten machen?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Einträge nummerieren
Einklappen
Neue Werbung 2019
Einklappen
X
-
Stichworte: -
-
Nein das meine ich nicht. Wenn ein User 100 Beiträge hat ist er im monet z.B. auf Rang 1 und wenn jetzt ein anderer mehr als 100 schreibt kommt er auf rang 1.
Kommentar
-
Du könntest in einer Schleife für jeden User die Anzahl der Beiträge in der DB bestimmen und dann in einem Array die ermittelten Daten abspeichern. Danach das Array sortieren:
Keine Ahnung ob das funktioniert, musst du mal ausprobieren!PHP-Code:$ranking = array();
$user_ids = array(1, 2, 3);
foreach ($user_ids as $id) {
$sql = "SELECT
COUNT(*) as num
FROM
tabelle
WHERE
user_id = $id
";
$result = mysql_query($sql) OR die (mysql_error());
$row = mysql_fetch_array($result);
if (!isset($ranking[$row["num"]])) {
$ranking[$row["num"]] = array($id);
} else {
$ranking[$row["num"]][] = $id;
}
}
//dann sortieren
ksort($ranking); //oder krsort($ranking);
//Ausgabe nach Anzahl an Beiträge geordnet
$entries = -1;
foreach ($ranking as $key => $value) {
if ($entries != $key) {
echo '<p>Beiträge: ' . $key . '</p>';
$entries = $key;
}
echo '<p>' . $value . '</p>';
}
Kommentar
-
-
Wo ist denn das Problem? Braucht doch nicht so einen riesen Aufwand für ein so kleines Problem:PHP-Code:$sql = "
SELECT
user_name,
COUNT(user_name) as num
FROM
tabelle
GROUP BY
user_name
ORDER BY
num DESC";
$result = mysql_query($sql) or exit(mysql_error());
$rang = 1;
while($row = mysql_fetch_object($result){
echo "$rang: $row->user_name $row->num<br />";
$i ++;
}
Kommentar
-
Bei mir funktioniert das nicht. Muss num eine Spalte in der Tabelle sein?
Und was bedeutet $i++ ???
Kommentar

Kommentar