2012-04-15 5 views
-1

У меня есть веб-сайт, на котором размещаются некоторые данные для приложения iOS через mysql, и у него есть некоторые восходящие и нисходящие числа, и они отображаются как 1,11,12,13 и т. Д., 2,20,21 , 22 и т.д.сортировка числа MYSQL

Это функция сортировки на сайте администратора и должен перевести в ответ JSON для приложения IOS ...

function sortPage($pageName,$sortBy,$sortOrder, $qry = ''){ 
    $getParameters = "$pageName?sortBy=$sortBy&sortOrder=$sortOrder"; 
    if($catID!=''){ 
     $getParameters .="&catID=$catID"; 
    } 

    if($extraParams!=''){ 
     $getParameters .='&'.$extraParams; 
    } 

    if($qry != '') 
     $getParameters .= $qry ; 

    $url ="<a href='$getParameters' style='text-decoration:none'>"; 
    if($sortOrder=='ASC'){ 
     $url .="<img src='".HOST."images/up-arrow.gif' width='8' height='4' border='0' />"; 
    }else{ 
     $url .="<img src='".HOST."images/down-arrow.gif' width='8' height='4' border='0'/>"; 
    } 
    $url .="</a>"; 
    return $url; 
} 

мне нужно изменить тип структуры, чтобы сделать его не заказывал таким образом делать? В настоящее время int (11).

+3

вид происходит, как будто это текст. поэтому что-то происходит в базе данных. Думаю, это сортировка текстового поля. – xQbert

+2

Вы сказали, что он определен как 'int (11)'. Когда вы напрямую запрашиваете базу данных, получаете ли вы правильно упорядоченные результаты? –

+0

Это неправильное упорядочение, когда я делаю запрос для него. Я не уверен, что это база данных или способ, которым функция php ее упорядочивает. –

ответ

2

Из скриншота я вижу, что это не столбец int(11), а некоторый тип строки.

С помощью этого запроса вы можете обмануть MySQL, чтобы заказать номера с первым, если это то, что вы хотите. Это будет работать, когда число находится в левой части значения:

select * from sections 
order by 0+name, name 
+0

Однако это уничтожит любое увеличение скорости, которое вы получите от индексов –

+0

Выполнение этого похоже похоже на тот же странный порядок ... http: //d.pr/eFm7 –

+1

@joeframbach True. Фактически, это означает: «Я выбрал неправильный тип данных, или я неправильно разработал схему» –

Смежные вопросы