Как в PHP сортировать данные из Mysql

 
Посетитель
small user social cms
Медаль
Сообщений: 616
Как в PHP сортировать данные Mysql используя данные из php ?

Код PHP:
  1.  
  2. <?php $i = 1; foreach($ranks as $rank){ ?>
  3. <tr><td class="_num"><?php echo $i;?></td>
  4. <td class="_colors _color_0"></td>
  5. <td class="_pic">
  6. <td class="_bigs"><a href="<?php echo href_to('pages', $rank['url']); ?>"><?php echo $rank['teams_name']; ?></a></td>
  7. <td class="_right"><?php html($rank['rank']); ?></td>
  8. <td class="_right"><?php html($rank['lost']); ?></td>
  9. <?php
  10. $x = $rank['rank']; // Побед 25 Например.
  11. $y = $rank['lost']; // Поражений 10 Например.
  12. $summ = $x + $y; // Прибавляем что бы узнать сколько в общем было игр и получаем сумму.
  13. $dil = $rank['rank'] / $summ; //Сумму Побед делим на полученную сумму. = 35.71000000
  14. $itoq = $dil * 100; //Полученную победы умножаем на 100 что бы получить итог в процентах что бы убрать ноль перед числом. 35.7100000
  15. ?>
  16. <td class="_right"><?php echo round ($itoq, 1); ?></td> Вот число для сортировки.
  17. </tr>
  18. <?php $i++; } ?>
  19.  
Мне нужно <?php echo round ($itoq, 1); ?> сортировать по этому числу по убыванию или на оборот не знаю как сделать пожалуйста помогите.

Как в PHP сортировать данные из Mysql
<- Вот где процент там <?php echo round ($itoq, 1); ?>
Редактировалось: 2 раз (Последний: 29 сентября 2016 в 13:24)
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 2102
А причем тут mysql вообще?
В коде ни единого обращения к базе.
Я бы попробовал сначала при переборе массива вычислять этот процент, потом записывать все данные в другой массив, а его сортировать по этим процентам и только потом выводить на отображение.
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 616
Ris:

А причем тут mysql вообще?
В коде ни единого обращения к базе.
Я бы попробовал сначала при переборе массива вычислять этот процент, потом записывать все данные в другой массив, а его сортировать по этим процентам и только потом выводить на отображение.

Как это не единого все данные берутся из базы но сумма исчисляется в самом php, мне нужно сортировать по массиву $itoq
Редактировалось: 1 раз (Последний: 29 сентября 2016 в 14:00)
Посетитель
small user social cms
Сообщений: 36
Нико:

Ris:

А причем тут mysql вообще?
В коде ни единого обращения к базе.
Я бы попробовал сначала при переборе массива вычислять этот процент, потом записывать все данные в другой массив, а его сортировать по этим процентам и только потом выводить на отображение.

Как это не единого все данные берутся из базы но сумма исчисляется в самом php, мне нужно сортировать по массиву $itoq

У вас в коде нет ничего про MySQL, поэтому вопрос был в тему.
Вы же можете запросить данные из MySQL уже в отсортированном виде.


Код PHP:
  1.  
  2. SELECT * FROM t1
  3. WHERE (бла бла бла)
  4. ORDER BY (тут название поля сортировки и порядок сортировки
  5.  
Посетитель
small user social cms
Сообщений: 36
Добавлю: сумму вычислять тоже нужно прямо в MySQL
Зачем напрягать для этого PHP ?
Редактировалось: 1 раз (Последний: 29 сентября 2016 в 14:17)
Посетитель
small user social cms
Медаль
Сообщений: 616
Alexey:

Добавлю: сумму вычислять тоже нужно прямо в MySQL
Зачем напрягать для этого PHP ?

Я знаю. Вот не знаю как mysql это делать как вычислять, умножать делить ..
Посетитель
small user social cms
Медаль
Сообщений: 616
Alexey:

Добавлю: сумму вычислять тоже нужно прямо в MySQL
Зачем напрягать для этого PHP ?

Код PHP:
  1. $ranks = $model->orderBy('i.rank','DESC')->limit(10)->getRanks();
а мне надо что бы например ( a+ b = c, c*a) что то типа этого
Редактировалось: 1 раз (Последний: 29 сентября 2016 в 14:22)
Посетитель
small user social cms
Сообщений: 36
Нико:

Alexey:

Добавлю: сумму вычислять тоже нужно прямо в MySQL
Зачем напрягать для этого PHP ?

Код PHP:
  1. $ranks = $model->orderBy('i.rank','DESC')->limit(10)->getRanks();
а мне надо что бы например ( a+ b = c, c*a) что то типа этого

А вы уверены, что limit(10) даст вам точно полную сумму нужных строк? Это же ограничение.
И если честно, то я не понял, что значит "( a+ b = c, c*a)"
Посетитель
small user social cms
Сообщений: 36
Нико:
Я знаю. Вот не знаю как mysql это делать как вычислять, умножать делить ..


SELECT SUM(column_name) as FieldName FROM table_name;

Выведет вам строку с суммой по полю column_name и назовет это поле как FieldName
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 2102
Alexey,
Вы правы абсолютно. Но есть один нюанс. Я так и не нашел, как в двойке отправить в метод выборки что-то типа SUM(column_name).

Нико,
Вот как-то так я думаю:
Спойлер
Сами понимаете, ничего не проверял.
Посетитель
small user social cms
Медаль
Сообщений: 616
Alexey:

Нико:
Я знаю. Вот не знаю как mysql это делать как вычислять, умножать делить ..


SELECT SUM(column_name) as FieldName FROM table_name;

Выведет вам строку с суммой по полю column_name и назовет это поле как FieldName

Я не знаю как вы меня поняли или нет вот весь файл.



widget.php
Спойлер
rank.tpl.php
Спойлер
Мне нужно например если у команды A 90, а у команды Б 70 то 90 было на вверху
Редактировалось: 3 раз (Последний: 29 сентября 2016 в 15:08)
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1045
Код PHP:
  1.  
  2. $model = cmsCore::getModel('ranking');
  3. $total = $model->getUsersCount();
  4. $ranks = $model->orderBy('rank', 'DESC')->limit(10)->getRanks(); // DESC или ASC
  5. $user = cmsUser::getInstance(); // <--- для чего?
  6.  
Редактировалось: 1 раз (Последний: 29 сентября 2016 в 15:08)
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
Посетитель
small user social cms
Медаль
Сообщений: 616
Evanescence:

Код PHP:
  1.  
  2. $model = cmsCore::getModel('ranking');
  3. $total = $model->getUsersCount();
  4. $ranks = $model->orderBy('rank', 'DESC')->limit(10)->getRanks(); // DESC или ASC
  5. $user = cmsUser::getInstance(); //
  6.  

Это по ошибке он не нужен.. из другого виджета

Код PHP:
  1. <?php
  2.  
  3. class widgetRankingTmrank extends cmsWidget {
  4.  
  5. public function run(){
  6.  
  7. $model = cmsCore::getModel('ranking');
  8. $total = $model->getUsersCount();
  9. $ranks = $model->limit(10)->getRanks();
  10.  
  11. return array(
  12. 'ranks' => $ranks,
  13. 'total' => $total
  14.  
  15. );
  16.  
  17. }
  18.  
  19. }

Как видите у меня идет подсчет в шаблоне
Мне нужно например если у команды A 90, а у команды Б 70 то 90 было на вверху

<?php echo round ($itoq, 1); ?> - но этого значения нету в Базе, потому что посчтет ведется в шаблоне
Редактировалось: 2 раз (Последний: 29 сентября 2016 в 15:19)
Посетитель
small user social cms
Сообщений: 36
Может быть вам поможет это?
http://php.net/manual/ru/function.asort.php
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1045
Пробовали сортировать в запросе?
Код PHP:
  1. $ranks = $model->orderBy('rank', 'DESC')->limit(10)->getRanks(); // DESC или ASC
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.