[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как сделать сортировку?
solomon
Здравствуйте!

Есть поле с автокомплитом. Использую плагин query.autocomplete.js В поле выбираются улицы и названия городов их базы, чтобы получилась конструкция "улица, город". При выборке данных из базы задаю порядок сортировки, чтобы улицы Москвы выводились в начале списка, а потом выводились улицы оставшихся городов.

Запрос в mysql:

$base = mysql_query("
SELECT ST.name, ST.socr, CITY.name, CITY.socr
FROM ((SELECT name, socr, Left(msk_street.code,11) AS CITYCODE FROM msk_street WHERE name LIKE '
$q%')
AS ST INNER JOIN msk_city AS CITY ON Left(CITY.Code,11) = ST.CITYCODE) order by (CITY.name = 'Москва') desc"
);


Обработка запроса для вывода списка:

$base_cnt = mysql_num_rows($base);
for($i=0;$i<$base_cnt;$i++){
$row_base = mysql_fetch_row($base);
//print_r($row_base);
$res = mb_strpos(mb_strtolower($row_base[0],"UTF-8"), mb_strtolower($_GET['q'],"UTF-8"));
//echo $res;
if($res!==false&&$res==0) {
print $row_base[0]." ".$row_base[1].", ".$row_base[2]." ".$row_base[3]."\n";
}
}


Так вот, во время обработки заданный порядок вывода улиц ломается. Не пойму почему и как это исправить (( Подскажите, пожалуйста, как можно исправить. Уже несколько дней бьюсь...



Спустя 52 минуты, 17 секунд (13.02.2012 - 09:59) Placido написал(а):
Насколько я понимаю, сортировать нужно не только по городу-Москве, но и по улице
... ORDER BY (`CITY`.`name` = 'Москва') DESC, `ST`.`name`;

Спустя 4 часа, 59 минут, 4 секунды (13.02.2012 - 14:58) solomon написал(а):
Placido
Улицы отсортировались, но Москва так и не отсортировалась.
Может нужно сортировать массивы которые получаются в цикле?

Спустя 21 минута, 17 секунд (13.02.2012 - 15:19) Placido написал(а):
Должно сортироваться. Что конкретно выдает скрипт?

Спустя 7 минут, 31 секунда (13.02.2012 - 15:26) solomon написал(а):
Ленивка ул, Москва г
Ленина ул, Дубна г
Ленина ул, Железнодорожный г
Ленина пл, Железнодорожный г
Ленина ул, Звенигород г
Ленина ул, Ивантеевка г
Ленина ул, Климовск г
Ленина ул, Королев г
Ленина ул, Первомайский мкр
Ленина пр-кт, Красноармейск г
Ленина ул, Лобня г
Ленина ул, Лыткарино г
Ленина ул, Протвино г
Ленина ул, Реутов г
Ленина ул, Фрязино г
Ленина пр-кт, Электросталь г
Ленина ул, Дзержинский г
Ленина пр-кт, Подольск г
Ленина пл, Подольск г
Ленина ул, Орехово-Зуево г
Ленина ул, Коломна г
Ленина пл, Серпухов г
Ленина ул, Шереметьевский мкр
Ленина ул, Сходня мкр
Ленина ул, Старбеево мкр
Ленина ул, Фирсановка мкр
Ленина ул, Лосино-Петровский г
Ленина ул, Толстопальцево п
Ленина ул, Зеленоград г
Ленинградская ул, Дубна г
Ленинградская ул, Первомайский мкр
Ленинградская ул, Подольск г
Ленинградская ул, Хлебниково мкр
Ленинградская ул, Химки г
Ленинградская ул, Фирсановка мкр
Ленинградский пер, Климовск г
Ленинградский проезд, Подольск г
Ленинградский пр-кт, Москва г
Ленинградское ш, Химки г
Ленинградское ш, Москва г
Лениногорская ул, Москва г
Ленинская ул, Бронницы г
Ленинская ул, Болшево мкр
Ленинская ул, Юбилейный г
Ленинская 1-я ул, Коломна г
Ленинская 2-я ул, Коломна г
Ленинская Слобода ул, Фрязино г
Ленинская Слобода ул, Москва г
Ленинские Горы ул, Москва г
Ленинский проезд, Первомайский мкр
Ленинский проезд, Юбилейный г
Ленинский пр-кт, Химки г
Ленинский пр-кт, Москва г
Ленинского Комсомола ул, Серпухов г
Ленская ул, Москва г
Ленского ул, Болшево мкр

Спустя 37 минут, 27 секунд (13.02.2012 - 16:04) Placido написал(а):
Попробуйте вместо вашего кода запустить это

$base = mysql_query("SELECT ST.name, ST.socr, CITY.name, CITY.socr
FROM ((SELECT name, socr, Left(msk_street.code,11) AS CITYCODE FROM msk_street WHERE name LIKE '
$q%')
AS ST INNER JOIN msk_city AS CITY ON Left(CITY.Code,11) = ST.CITYCODE) order by (CITY.name = 'Москва') desc, `ST`.`name`"
);

while($row_base = mysql_fetch_row($base)) {
print $row_base[0]." ".$row_base[1].", ".$row_base[2]." ".$row_base[3]."\n";
}

И посмотрите, что выведет.

Спустя 15 часов, 17 минут, 34 секунды (14.02.2012 - 07:21) solomon написал(а):
Попробовал, тоже самое вывелось

Спустя 1 час, 40 минут, 30 секунд (14.02.2012 - 09:02) solomon написал(а):
Заработало! Оказывается кодировка файла слетела. Какой же я идиот, столько времени потратил, а все было так очевидно. Спасибо, Placido Плюс в карму ))
Быстрый ответ:

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