Баг сортировки числовых значений
Баг заключается в не корректном сравнении двух числовых значений в функциях сортировки файла /usr/system/common_extfunctions.inc.php. Т.е., например, мы сортируем по ID, у нас есть в хранилище записи с ID: 1,2,3,4,5,6,7,8,9,10,11. После выполнения сортировки _ORDER(INDEX, ID, ASC)_ в приложении get_infochannel(или любом другом аналогичном) результат будет следующим: 1,10,11,2,3,4,5,6,7,8,9.
Привожу пример того, что было и то, на что я это поменял, объяснять не буду, кто разбирается - тот сам все легко поймет:
// То, что было
if(!defined("cmp_indexasc")) {
function cmp_indexasc($a, $b) {
global $sapi_obj;
$index = $sapi_obj->env["index"];
return strcmp($a[$index], $b[$index]);
}
define("cmp_indexasc", 1);
}
if(!defined("cmp_indexdesc")) {
function cmp_indexdesc($a, $b) {
global $sapi_obj;
$index = $sapi_obj->env["index"];
return strcmp($a[$index], $b[$index]);
}
define("cmp_indexdesc", 1);
}
// То, на что надо заменитьТак же я предлагаю скачать уже исправленный файл, если вдруг кому-то лень переделывать самому ;)
if(!defined("cmp_indexasc")) {
function cmp_indexasc($a, $b) {
global $sapi_obj;
$index = $sapi_obj->env["index"];
if(is_numeric($a[$index]))
return ($a[$index] > $b[$index]) ? -1 : 1;
else
return strcmp($a[$index], $b[$index]);
}
define("cmp_indexasc", 1);
}
if(!defined("cmp_indexdesc")) {
function cmp_indexdesc($a, $b) {
global $sapi_obj;
$index = $sapi_obj->env["index"];
if(is_numeric($a[$index]))
return ($a[$index] > $b[$index]) ? 1 : -1;
else
return strcmp($a[$index], $b[$index]);
}
define("cmp_indexdesc", 1);
}
Скачать: common_extfunctions.inc.zip
Для версии: Sapid 1.2.3 RC3
5 Comments:
Респект.
Я тоже наткнулся на эту "проблему", как только стали использовать обновленный инфоканал. При чем тоже стали реашать, и даже решили ее иначе ;) -- во время сортировки ID<9 делать 01, 02, 03 и тд.
Кстати, как твое решение будет работать при _следующем_ порядке?
99...100...101 ? или иначе?
Будет отрабатывать корректно. Там просто введен вариант сортировки для числовых значений, не важно - сколько цифр будет в числе.
Хотелось бы увидеть статейку по способам сортировки. Т.е. не именно в пределах данного CMS а как это вообще на практике реализовать при помощи PHP.
Такие посты только прибавляют популярности. Сайт Ваш почему-то мало продвинутый и плохопосещаем. Рекомендуем оптимизировать его с помощью программы XRumer 7 Elite (ХРумер 7 Элите) скачать можно тут http://x-rumer.ru/ слышал эффективная программа для раскрутки блог порталов.
Вы допускаете ошибку. Могу отстоять свою позицию. Пишите мне в PM, обсудим. [url=http://tutledy.ru/sovmestimost-s-muzhchinoy/99-sovmestimost-muzhchiny-i-zhenshchiny.html]совместимость мужчины и женщины[/url]
Отправить комментарий
<< Home