Frage von flo34771, 43

Hallo ich Möchte gerne die 10 Größten Werte aus meiner DB ausgeben?

Hallo :) ich möchte gerne die 10 user mit den Meisten Coins ausgeben.

wie mach ich das genau mit PHP?

Dieses Script gibt mir alle User aus .. ich möchte aber nur die 10 User mit den Meisten Coins ausgeben? Jemand ne Antwort?

<?php $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

$sql = "SELECT * FROM users"; foreach ($pdo->query($sql) as $row) { echo $row['coins']." ".$row['id']."
"; echo "E-Mail: ".$row['email']."

"; } ?>

Antwort
von Suboptimierer, 30

Zwei Möglichkeiten möchte ich vorschlagen

  1. Du sortierst deine Liste per SQL nach coins mit "ORDER BY coins DESC" und lässt beim Zählen in PHP einen Zähler mitlaufen, den du bei 10 Durchläufen abbrichst.
  2. Du sortierst deine Liste per SQL nach coins wie oben und gibst zusätzlich das Schlüsselwort "first" (oder "top" je nach SQL-Derivat) der SELECT-Anweisung mit 
    SELECT first 10 * FROM users ORDER BY coins DESC
Antwort
von Balco, 25

Dazu musst du dein SQL-Query anpassen. In deinem Fall wäre es folgendes:

SELECT * FROM users ORDER BY coins DESC LIMIT 10;

Mit ORDER BY gibst du an, nach welcher Spalte sortiert werden soll. DESC steht für absteigend, also höchster Wert zuerst. Am Schluss mit LIMIT definierst du die Anzahl Ergebnisse.

Antwort
von ShitzOvran, 32

Wenn ich jetzt keinen Gedankenfehler habe...

<?php $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

$sql = "SELECT * FROM users ORDER BY coins DESC LIMIT 10"; foreach ($pdo->query($sql) as $row) { echo $row['coins']." ".$row['id']."
"; echo "E-Mail: ".$row['email']."

"; } ?>

Kommentar von flo34771 ,

Hei danke :) ja das hilft allerdings :/ die user werden jz zwar aufgelistet aber der mit den Meisten Coins steht noch immer nicht ganz oben.. es ist alles bund duchgemischt

Kommentar von flo34771 ,

Ach und die Zahlen werden nicht richtig ausgeben ohne number_format

<?php $sql = "SELECT * FROM users ORDER BY coins DESC LIMIT 10";
foreach ($pdo->query($sql) as $row) {
$coinsrow = number_format(
$row['coins'], // zu konvertierende zahl
0, // Anzahl an Nochkommastellen
".", // Dezimaltrennzeichen
"." // 1000er-Trennzeichen
);


?><?echo $coinsrow . ""; echo " User: ".$row['email']."
";?><?
} ?>



Antwort
von LeonardM, 20

SELECT * FROM users ORDER BY coins DESC LIMIT 10

Keine passende Antwort gefunden?

Fragen Sie die Community