Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Сортировка результата поиска
Форумы портала PHP.SU » » Вопросы новичков » Сортировка результата поиска

Страниц (1): [1]
 

1. dropoff - 02 Июня, 2017 - 12:03:30 - перейти к сообщению
Всем доброго времени суток.

Задам вопрос тут, так как не уверен точно, в какой теме ему место))

В результате поиска по выражению "Samsung 2330M" в БД получаю массив совпадений по словам

PHP:
скопировать код в буфер обмена
  1. (
  2.     [0] => Array
  3.         (
  4.             [id] => 19
  5.             [name] => Samsung 5578
  6.         )
  7.     [1] => Array
  8.         (
  9.             [id] => 5
  10.             [name] => Samsung I9001 Metallic Black
  11.         )
  12.     [2] => Array
  13.         (
  14.             [id] => 16
  15.             [name] => Samsung NP300E4A-A03 2330M
  16.         )
  17. )


Тут все хорошо, за исключением сортировки.
Как видно искомый товар "Samsung NP300E4A-A03 2330M" самый последний по запросу "Samsung 2330M".

Очевидно, что его нужно подтолкнуть вверх, на первое место.

Поиск в базе идет по обычным LIKE. Выборка по нескольким полям, по этому не смог придумать что ставить на первое место в ORDER BY из полей.
Может есть какие-то решения, чтобы в запросе проверять, что больше совпало из выборки и по ним сортировать?

Либо вариант сортировки массива по большему совпадению слов в name? Но тут придется прогонять массив неизвестно какого объема. Не будет ли долгим весь этот процесс?
2. andrewkard - 02 Июня, 2017 - 14:38:56 - перейти к сообщению
ORDER BY id DESC
пробовали?
(Добавление)
А, не факт Улыбка
(Добавление)
https://ru[dot]stackoverflow[dot]com/que[dot][dot][dot]%B0-%D0%B2-mysql
(Добавление)
И вот тут: https://habrahabr[dot]ru/post/114997/

 

Powered by ExBB FM 1.0 RC1