[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: сортировка из БД. как правильно сделать?
Jekel
Вот сейчас так выглядит запрос:
$q = mysql_query("SELECT * FROM map WHERE x>=".($user['x']-5)." AND x<=".($user['x']+5)." AND y>=".($user['y']-5)." AND y<=".($user['y']+5)." ORDER BY x ASC, y ASC");

while($mybase = mysql_fetch_assoc($q)){
if($mybase["img"]!=NULL && ($_SESSION["x".$mybase["x"]."y".$mybase["y"]]!=$mybase["img"])){
$all.="<x".$mybase["x"]."y".$mybase["y"].">".$mybase["img"]."</x".$mybase["x"]."y".$mybase["y"].">";
$_SESSION["x".$mybase["x"]."y".$mybase["y"]]=$mybase["img"];
}
}

Вот так выглядит ответ:
<x0y0>trava.gif</x0y0>  
<x0y1>trava.gif</x0y1> 
<x0y10>trava.gif</x0y10>
<x0y2>
trava.gif</x0y2>
...
<x1y1>trava.gif</x1y1> 
<x1y10>trava.gif</x1y10> 
<x1y2>trava.gif</x1y2> 
<x1y3>trava.gif</x1y3>...
<x1y9>trava.gif</x1y9>
<x10y0>trava.gif</x10y0> 
<x10y1>trava.gif</x10y1> 
<x10y10>les.gif</x10y10>

<x2y1>trava.gif</x2y1> 
<x2y10>trava.gif</x2y10> 
<x2y2>trava.gif</x2y2> 
<x2y3>trava.gif</x2y3>

итд

Как сделать так чтобы после <x1y...> шло не <x10y...> а <x2y...> также по игрику?



Спустя 34 минуты, 54 секунды (30.03.2010 - 01:44) waldicom написал(а):
может быть сделать X и Y численным типом в БД, а не строковым (коим он видимо сейчас является... могу ошибаться)

Спустя 2 часа, 48 минут, 32 секунды (30.03.2010 - 04:33) maxims написал(а):
Цитата (waldicom @ 29.03.2010 - 22:44)
может быть сделать X и Y численным типом в БД, а не строковым (коим он видимо сейчас является... могу ошибаться)

они и так числовые, иначе в запросе нужно было бы кавычки ставить....

не могу понять почему так выходит, вроде в запросе сортируешь по возрастанию числовые поля, а выводит отсортированные как строковые.... blink.gif

напиши дамп БД.

Спустя 37 минут, 9 секунд (30.03.2010 - 05:10) dr_Lev написал(а):
Цитата
иначе в запросе нужно было бы кавычки ставить

необязательно... мускул не глупый, сам сможет сконвертировать...
А поля скорее всего действительно не числовые.
Попробуй так
ORDER BY CAST(x AS INTEGER) ASC, CAST(y AS INTEGER) ASC

Спустя 17 минут, 27 секунд (30.03.2010 - 05:27) maxims написал(а):
Цитата (dr_Lev @ 30.03.2010 - 02:10)
необязательно... мускул не глупый, сам сможет сконвертировать...
А поля скорее всего действительно не числовые.

а разве можно сравнивать строки как больше, меньше? он же в услдовии пишет х>=
если можно то как это происходит? по кол-ву символов?

P.S.: у меня мускул ругаца, если кавычек нет.... blink.gif

Спустя 9 минут, 11 секунд (30.03.2010 - 05:36) maxims написал(а):
cам проверил, можно, вроде по количеству символов сравнивает...

тогда если у него строковые, то в принципе запрос в том виде какой он сейчас не правильно работать должен.....

Спустя 5 часов, 40 минут, 50 секунд (30.03.2010 - 11:17) Jekel написал(а):
ORDER BY CAST(x AS INTEGER) ASC, CAST(y AS INTEGER) ASC
выводит ерор, а x и y сболбец в моей таблице в БД это char

Спустя 1 минута, 11 секунд (30.03.2010 - 11:18) Jekel написал(а):
действительно, поставил INT в БД и зашибись, работает, спасибо ВСЕМ!
Быстрый ответ:

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