Не могу отсортировать массив PHP

214
15 августа 2017, 15:55

Проблема заключается в следующем: собирая информацию о баллах студентов из разных таблиц, я собираю их в одно целое:

$sql="SELECT `u`.`login` as `login`, `u`.`dostup` as `dostup`, `u`.`fac` as `fac`,
(SELECT SUM(`h`.`mark`) FROM `homework` as `h` WHERE `h`.`student`=`u`.`login` and `status` != '0' and `status` != '2') as `sumh`,
(SELECT COUNT(`h`.`id`) FROM `homework` as `h` WHERE `h`.`student`=`u`.`login` and `status` != '0' and `status` != '2') as `counth`,
(SELECT SUM(`r`.`mark`) FROM `reports` as `r` WHERE `r`.`student`=`u`.`login` and `status` != '0' and `status` != '2') as `sumr`,
(SELECT COUNT(`r`.`id`) FROM `reports` as `r` WHERE `r`.`student`=`u`.`login` and `status` != '0' and `status` != '2') as `countr`,
(SELECT SUM(`a`.`ball`) FROM `adminball` as `a` WHERE `a`.`student`=`u`.`login`) as `suma`,
(SELECT SUM(`ocena`) FROM `exam` WHERE `stud`=`u`.`login`) as `exam`,
(SELECT SUM(`ball`) FROM `penalty` WHERE `student`=`u`.`login`) as `penalty`
FROM `users` as `u` WHERE `u`.`fac` != '-' and `u`.`dostup` > 0 and `u`.`dostup` < 6  GROUP BY `u`.`id` HAVING `counth`>0 or `countr`>0";

И в итоге, когда я далее вывожу уже список, у меня получаются цифры не по порядку, а вразброс. Не могу добиться сортировки массива (числа по убыванию).

$res = mysql_query($sql);
$i = 1;
$result = array();
while($row = mysql_fetch_array($res)) {
    $sum=$row['sumh']+$row['sumr']+$row['suma']+$row['exam']-$row['penalty'];
    $count=$row['counth']+$row['countr'];
    if ($result[0]['sum'] < $sum) {
        array_unshift($result, array('sum'=>$sum, 'count'=>$count, 'fac'=>$row['fac'], 'login'=>$row['login'], 'sumh/counth'=>$row['sumh']/$row['counth'], 'dostup'=>$row['dostup']));
    }else{
        $result[] = array('sum'=>$sum, 'count'=>$count, 'fac'=>$row['fac'], 'login'=>$row['login'], 'sumh/counth'=>$row['sumh']/$row['counth'], 'dostup'=>$row['dostup']);
    }
    $i++;
}
foreach($result as $i => $row) {
    echo "<tr><td> <font color='#C88900'><center>".($i+1)."</font> </center></td><td> <a title='". $point[$row['fac']] ."'><font color='". $colorsfac[$row['fac']] ."'> <center>".$row['login']."</center> </font></a></td><td><center><font color='#C88900'>";
    if($row['dostup'] and $row['fac'] == "Прешт") {
        echo "-";
    } else {
        echo "$row[dostup]-й курс</font> </center></td>";
    }
    echo "<td><center><font color='#9B6B03'> ".$row['sum']."</font> </center></td><td><center><font color='#C88900'> ".round($row['sumh/counth'], 1)." </font></center></td><td><center><font color='#C88900'> ".$row['count']."</font> </center></td></tr>";
}

В итоге цифры выводятся вот так:

Помогите! ORDER BY НЕ ПОМОГАЕТ И НЕ СОРТИРУЕТ БАЛЛЫ.

READ ALSO
phpQuery проверка на существование div

phpQuery проверка на существование div

Есть страницы на которых находятся div'ы с views-row-1 от 1 до 11Пример:

220
Как убрать префикс .php

Как убрать префикс .php

Здравствуйте, нужно скрыть префикс *php в url сайта (используя htaccess)

173
Асинхронный сервер и синхронный клиент [требует правки]

Асинхронный сервер и синхронный клиент [требует правки]

Если сервер работает на асинхронных сокетах, может ли клиент работать на синхронных, или, наоборот, сервер на - синхронных, а клиент - на асинхронных?

195
Как выделить шаблонность из функции?

Как выделить шаблонность из функции?

Имеем - шаблонная функция, еще и рекурсивная, в которой много чего подтянуто из разных (заголовочных) файлов, а шаблонность только одна - запись...

243