За последние 24 часа нас посетили 34153 программиста и 1748 роботов. Сейчас ищут 1249 программистов ...

сортировка по формуле

Тема в разделе "MySQL", создана пользователем siiXth, 1 ноя 2010.

  1. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    нужно как-то сделать ORDER BY $rating
    где вместо $rating введена формула где считается рейтинг который берётся во время запроса с полей
    PHP:
    1. $rating = (vote_num/(vote_num+".$votes_min.")
    вроде всё работает , но как-то неверно выводит , с разными рейтингами не по порядку вразброс , так вообще можно ? :D
     
  2. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Сортировка по имени поля должна быть, а не по числу.
     
  3. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    хорошо
    я собстно подразумевал подсказку на то как это реазилуется =)

    да и мой метод оказывается работает , всё считает и выводит
    впринципи это немного логично :D

    id заменяется в запросе на цифру при обычном запросе , ну и по ней упорядочивается
    и у меня по формуле тоже цифры и по ним так же всё упорядочивается :D
    знаю что нереал , но работает 8D
     
  4. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    есть двойной массив
    $news[5]['title'] выведет название новости
    цифра 5 - порядок выбора при запросе в котором пихаю $news[5]['rating] который считается только с полей при запросе потому я не могу сделать сортировку в самом запросе.

    как бы мне упорядочить массив $news по rating ?
     
  5. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    siiXth
    Я когда то выкручивался из похожей ситуации так - проходил по массиву форичем и вместо ключа впихивал рейтинг. А потом его ksort

    В коде примерно так(на коленке)
    Код (Text):
    1.  
    2. $news2 = array();
    3.  
    4. foreach ($news as $key=>$value)
    5. {
    6.     $news2[$value['rating']] = $value;
    7. }
    8.  
    9. ksort($news2);
    Надеюсь идея понятна))
    А из базы не получится отсортированный выбирать?
     
  6. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    не , рейтинг такой как на кинопоиске топ-250 , просто так не получится
     
  7. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Понятия не имею что там за рейтинг)))) И смотреть лень ;-)
     
  8. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    [​IMG]
     
  9. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    Сделал просто - при составлении того двойного массива создал ещё один массив $rates с key=>rating , после на нём arsort() , далее foreach ($rates as $key=>$value) и в нём $row=$news[$key]; . Так не пришлось ничего менять в шаблоне для вывода. Бок конечно в том что вынимать нужно все новости , но думаю это проблема задачи и другого выхода нет.