[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как вывести данные из БД в порядке запроса к ним?
arbuzmaster
Подскажите пожалуйста: как вывести данные из mysql в порядке запроса к ним в цикле while?

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
sergeiss
Хм... А как ты ОБЫЧНО выводишь эти данные? Покажи код.
Обычно, если не предпринимать каких-то специальных действий, эти данные в таком порядке и выводятся.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
arbuzmaster
Добрый день!! Подскажите как решить следующую проблему?
В данном цикле - если искать (слон 1 слон 2 слон 3 то вывод - слон 1, слон 2, слон 3) а вот если искать (слон 2 слон 3 слон 1 то вывод всё равно - слон 1, слон 2, слон 3) а нужно чтобы было так (слон 2 слон 3 слон 1 вывод - слон 2, слон 3, слон 1)
$text_arry=explode(" ", $start_command);
$slon_name_arry=mysql_query("SELECT * FROM `slon` ");
while($slon_name_action=mysql_fetch_array($slon_name_arry))
{
$slon_name_1=$slon_name_action['name'];
$slon_arry=explode(" ", $slon_name_1);
$result=array_intersect($slon_arry, $text_arry);

if(sizeof($slon_arry)==sizeof($result)) {$slon_name=$slon_name_1; }


}

echo $slon_name;

Хотя в $text_arry порядок такой какой нужен!
Как это исправить ?

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
S.Chushkin
Изучайте матчасть, помогает wink.gif
1) Согласно стандарту SQL, у Вашего запроса нет порядка вывода. Используйте ORDER BY и будет Вам счастье.
2) Если Вам нужен порядок, заданный $text_arry, то см. доку по array_intersect(). Т.е. поменяйте местами параметры и будет Вам счастье. Но алгоритм нужно изменить, т.к. могут быть неправильные результаты.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
sergeiss
Цитата (arbuzmaster @ 27.09.2014 - 22:49)
Как это исправить ?

Это исправляется правильным написанием запроса к БД. В частности, в запросе есть такая опция, как ORDER BY. Найди описание для команды SELECT, там найдешь и указанную мной опцию.

А выводятся данные (в твоем коде) именно в том порядке, как БД их отдаст. Вот только отдас она их не так, как ты сохранишь, а так, как они хранятся внутри (без указания ORDER BY), либо в том порядке, как укажешь в ORDER BY.

PS. И ты уверен, что не надо сначала скачать все запрошенные данные, а потом уже их анализировать?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
arbuzmaster
ORDER BY не поможет - проверял Если ставить в прямом направлении то вывод такой же а если в обратном то и выводит в обратном! т.е слон 3 слон 2 слон 1

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
S.Chushkin
Цитата (arbuzmaster @ 27.09.2014 - 22:59)
ORDER BY не поможет - проверял Если ставить в прямом направлении то вывод такой же  а если в обратном то и выводит в обратном! т.е слон 3 слон 2 слон 1

Ещё раз, в SQL нет порядка, если не используется ORDER BY. А уж что Вы в нём запросили, то и получите. Это по стандарту. (Другое дело, что каждый движок имеет свои особенности.)
Если Вам нужно в порядке добавления строк, то используете поле с AUTO_INCREMENT.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
arbuzmaster
AUTO_INCREMENT стоит (id 1 /слон 1 id 2/слон 2 id 3 /слон 3) они не добавляются а ищутся а БД а потом нужно их вывести на экран в порядке обращения к ним!

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
S.Chushkin
Цитата (arbuzmaster @ 27.09.2014 - 23:13)
AUTO_INCREMENT стоит (id 1 /слон 1 id 2/слон 2 id 3 /слон 3) они не добавляются а ищутся а БД а потом нужно их вывести на экран в порядке обращения к ним!

1) Что значит "в порядке обращения к ним" ?
2) См. выше мою реплику про array_intersect()

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
arbuzmaster
я пока сделал так - разбил запрос на слова и цифры - цифры по порядку загнал в массив- сделал foreach($namber_arry as $value)
а дальше получилось так - слон+$value и так далее! Но может есть способ попроще?

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
arbuzmaster
2) Если Вам нужен порядок, заданный $text_arry, то см. доку по array_intersect(). Т.е. поменяйте местами параметры и будет Вам счастье. Но алгоритм нужно изменить, т.к. могут быть неправильные результаты.


Выведет всех слонов Т.к там везде слово слон !!

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
S.Chushkin
Ваш алгоритм неправильный, барахло. Всё делается элементарно.
И Вам дали все необходимые советы, но Вам они не нужны, как я понимаю - "хозяин-барин"...


_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
S.Chushkin
Цитата (arbuzmaster @ 27.09.2014 - 23:22)
2) Если Вам нужен порядок, заданный $text_arry, то см. доку по array_intersect(). Т.е. поменяйте местами параметры и будет Вам счастье. Но алгоритм нужно изменить, т.к. могут быть неправильные результаты.


Выведет всех слонов Т.к там везде слово слон !!

Ещё раз - алгоритм неправильный, переделайте.


_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.