непонятка с mysql_fetch_assoc (сортировка)

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Закрыто
Аватара пользователя
kosenka
Сообщения: 677
Зарегистрирован: 2009.09.26, 12:41
Откуда: москва
Контактная информация:

непонятка с mysql_fetch_assoc (сортировка)

Сообщение kosenka »

Добрый день.

Достался мне сайт, который надо поправить...

В коде есть такая выборка из базы:

Код: Выделить всё

function selectFromTable($sql='SELECT id, title FROM search_districts WHERE type IN(1,2,3,4) AND cr_id=7873 ORDER BY depth ASC')
{
                $result=mysql_query($sql);
                if(!$result) exit("Ошибка - ".mysql_error().", ".$sql);

                while($arr=mysql_fetch_assoc($result))
                {
                        if(isset($arr['name']))
                                $arr['title']=$arr['name'];
                        
                        $array[$arr['id']]=$arr;
                }

                mysql_free_result($result);

                return $array;
} 
На выходе получаем картинку в атаче...
Untitled-1.jpg
Untitled-1.jpg (114.33 КБ) 3181 просмотр
Но если сделать

Код: Выделить всё

print_r(selectFromTable(),true)
, то получаем другой результат:

9946 Абинский район
9947 Анапа
9948 Апшеронский район
9949 Армавир
9950 Белоглинский район
9951 Белореченский район
9952 Брюховецкий район
9953 Выселковский район
9954 Геленджик
9955 Горячий Ключ
9956 Гулькевичский район
9957 Динской район
9958 Ейский район
9959 Кавказский район
9960 Каневской район
9961 Кореновский район
9962 Красноармейский район
9963 Крыловский район
9964 Крымский район
9965 Курганский район
9966 Кущёвский район
9967 Лабинский район
9968 Ленинградский район
9969 Мостовский район
9970 Новокубанский район
9971 Новороссийск
9972 Новопокровский район
9973 Отрадненский район
9974 Павловский район
9975 Калининский район
9976 Приморско Ахтарский район
9977 Северский район
9978 Славянский район
9979 Сочи
9980 Староминский район
9981 Тбилисский район
9982 Темрюкский район
9983 Тимашёвский район
9984 Тихорецкий район
9985 Туапсинский район
9986 Усть Лабинский район
9987 Щербиновский район
9946 Абинский район
9947 Анапа
9948 Апшеронский район
9949 Армавир
9950 Белоглинский район
9951 Белореченский район
9952 Брюховецкий район
9953 Выселковский район
9954 Геленджик
9955 Горячий Ключ
9956 Гулькевичский район

Т.е. список не отсортирован... я в ступоре... может я чего-то не вижу... в коде функции, что дает такой результат?
Аватара пользователя
SiZE
Сообщения: 2817
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: непонятка с mysql_fetch_assoc (сортировка)

Сообщение SiZE »

База то одна?
Аватара пользователя
kosenka
Сообщения: 677
Зарегистрирован: 2009.09.26, 12:41
Откуда: москва
Контактная информация:

Re: непонятка с mysql_fetch_assoc (сортировка)

Сообщение kosenka »

SiZE писал(а):База то одна?
Да, конечно
Roms
Сообщения: 50
Зарегистрирован: 2011.01.29, 22:39

Re: непонятка с mysql_fetch_assoc (сортировка)

Сообщение Roms »

Код конечно жестокий, отобразите ещё "depth" столбик.
Аватара пользователя
kosenka
Сообщения: 677
Зарегистрирован: 2009.09.26, 12:41
Откуда: москва
Контактная информация:

Re: непонятка с mysql_fetch_assoc (сортировка)

Сообщение kosenka »

Roms писал(а):Код конечно жестокий, отобразите ещё "depth" столбик.
Вот, спасибо, натолкнули на мысль... вообщем не к той БД "цеплялся" )))))
Последний раз редактировалось kosenka 2013.08.20, 13:53, всего редактировалось 1 раз.
Roms
Сообщения: 50
Зарегистрирован: 2011.01.29, 22:39

Re: непонятка с mysql_fetch_assoc (сортировка)

Сообщение Roms »

В функции поправте sql запрос:
SELECT id, title, depth FROM search_districts WHERE type IN(1,2,3,4) AND cr_id=7873 ORDER BY depth ASC

И выполните запрос напрямую в базу, и тогда сравните результаты.

У Вас результат сортируется по столбику depth, что-то мне посказывает, что в таблице Вы смотрите без сортировки, потому как в вашей функции mysql_fetch_assoc на сортировку результата не влияет.
Аватара пользователя
kosenka
Сообщения: 677
Зарегистрирован: 2009.09.26, 12:41
Откуда: москва
Контактная информация:

Re: непонятка с mysql_fetch_assoc (сортировка)

Сообщение kosenka »

Roms писал(а):В функции поправте sql запрос:
SELECT id, title, depth FROM search_districts WHERE type IN(1,2,3,4) AND cr_id=7873 ORDER BY depth ASC

И выполните запрос напрямую в базу, и тогда сравните результаты.

У Вас результат сортируется по столбику depth, что-то мне посказывает, что в таблице Вы смотрите без сортировки, потому как в вашей функции mysql_fetch_assoc на сортировку результата не влияет.
Спасибо, уже разобрался - не к той БД "цеплялся" )))
Закрыто