2013-05-18 2 views
-2

Я извлекаю данные из базы данных MySQL с помощью mysqli. Я извлекаю строки из базы данных, база данных имеет имя и номер для этого имени, и мне нужно имя с наивысшим номером, который будет напечатан первым, имя со вторым самым большим номером, которое будет напечатано вторым, и так далее. ..PHP - Как сортировать массив из базы данных MySQL

Вот мой код

while($row = $result->fetch_array(MYSQLI_ASSOC)) {    
    printf ("%s (%s)\n", $row["name"], $row["goals"]); 
} 

Вот текущий выходной

enter image description here

и мне это нужно так, чтобы KaminJack напечатан первый, BregmanMichael печатается второй, и так далее

+0

Пользователь 'ORDER BY' предложение в вашем запросе –

ответ

3

Ваш запрос должен быть:

SELECT * FROM mytable ORDER BY goals desc

Найти ваши данные, то порядка по полю goals сортировочного desc (или asc если вы хотите).

+0

Спасибо! это сработало, что происходит от любопытства? – user2109242

+0

http://www.w3schools.com/sql/sql_orderby.asp – joschua011

+1

@ user2109242 desc сортирует в порядке убывания (от самого низкого до самого низкого) .. ASC сортируется в порядке возрастания (от самого низкого до самого высокого) – Dinesh

0

Прежде всего, вы можете использовать просто ORDRE BY в MySQL для сортировки.

Но если вы хотите сделать это в PHP:

while($row = $result->fetch_array(MYSQLI_ASSOC)) { 
    $result[$row["name"]] = $row["goals"]; 
} 
arsort($result); 

http://www.php.net/manual/en/function.arsort.php

1

Для дальнейшего улучшения на ответ, вы должны заказать две колонки, как у вас есть какие-то имена с тем же номером: HidiJack (0) и JainAJesh (0).

SELECT * FROM mytable ORDER BY goals desc, name asc; 

Это будет заказ по номеру сначала, а затем по алфавиту по названию.

Или, если хотите, сделайте номер индексом так, чтобы у вас не было дубликатов.

+0

Отличное улучшение моего ответа! +1 – Jared

Смежные вопросы