Баг сортировки числовых значений
Баг заключается в не корректном сравнении двух числовых значений в функциях сортировки файла /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


6 Comments:
Респект.
Я тоже наткнулся на эту "проблему", как только стали использовать обновленный инфоканал. При чем тоже стали реашать, и даже решили ее иначе ;) -- во время сортировки ID<9 делать 01, 02, 03 и тд.
Кстати, как твое решение будет работать при _следующем_ порядке?
99...100...101 ? или иначе?
Будет отрабатывать корректно. Там просто введен вариант сортировки для числовых значений, не важно - сколько цифр будет в числе.
http://spdimon.info-Soft, èíòåðíåò, ìóçûêà, ôèëüìû, êðÿêè, ñåðèéíèêè, ôîòîãðàôèè, ïîðíî,
ýðîòèêà, ôëåøêè
http://spdimon.info/01.htm-Ïðîñòèòóòêè, ïðîñòèòóòêè ìîñêâû, äåøåâûå ïðîñòèòóòêè, ôîòî ïðîñòèòóòêè, ïðîñòèòóòêè ã, ïðîñòèòóòêè ïèòåðà, ýëèòíûå ïðîñòèòóòêè, ïðîñòèòóòêè íîâîñèáèðñê,
ïðîñòèòóòêè êèåâà,ïðîñòèòóòêè ãîðîäà
http://spdimon.info/02.htm-ôèëüì 4, ñàóíäòðåê ôèëüì, ôèëüìû ìóçûêà, êàäðû ôèëüìà, ñàéò ôèëüìîâ, ëó÷øèå ôèëüìîâ, ïåñíÿ ôèëüì, ôèëüì ãäå,
ôîòî ôèëüì, ñêà÷àòü ôèëüì 4
http://spdimon.info/03.htm-games, flash games, games ru, www game, download games, game boy, java games, pc games,
nokia game, èãðû games
http://spdimon.info/04.htm-ïðèêîëû 8 ìàðòà, ïðèêîëû 23 ôåâðàëÿ, ôîòî ïðèêîëû, ïðèêîëû ñêà÷àòü, ñìñ ïðèêîëû, ïðèêîëû òåëåôîí, ïðèêîëû ïðî, êàðòèíêè ïðèêîëû,
ïðèêîëû ìàðòà, 8 ïðèêîëû
http://spdimon.info/05.htm-çíàêîìñòâà, ñàéòû çíàêîìñòâ, çíàêîìñòâà ru, çíàêîìñòâà mail, èíòèì çíàêîìñòâà, çíàêîìñòâà ã, ãîðîä çíàêîìñòâ, çíàêîìñòâà èíîñòðàíåö,
ïðàâîñëàâíîå çíàêîìñòâî, çíàêîìñòâà ðåãèñòðàöèÿ
http://spdimon.info/06.htm-îòêðûòêè, îòêðûòêè äíåì ðîæäåíèÿ, ñêà÷àòü îòêðûòêè, îòêðûòêè äåíü, îòêðûòêè çàùèòíèêîâ, îòêðûòêè ìàðòà ïîçäðàâëåíèÿ, ïîçäðàâëåíèÿ îòêðûòêè 8, îòêðûòêà îòå÷åñòâî,
äåíü ðîæäåíèÿ îòêðûòêè, ïîçäðàâèòåëüíûå îòêðûòêè 8
http://spdimon.info/07.htm-âàç, òþíèíã âàç, âàç 2110, âàç 2107, âàç 2109, âàç 2112, âàç 2106, âàç 2108,
âàç 21099, âàç 2115
http://spdimon.info/08.htm-ïðîñòèòóòêè, äåøåâûå ïðîñòèòóòêè, ïðîñòèòóòêè ã, ïðîñòèòóòêè íîâîñèáèðñê, ïðîñòèòóòêè êèåâà, ïðîñòèòóòêè ãîðîäà, ñàìûå ïðîñòèòóòêè, ïðîñòèòóòêè ïåòåðáóðã,
ïðîñòèòóòêè åêàòåðèíáóðãà, ïðîñòèòóòêè ñàíêò
http://spdimon.info/09.htm-êðÿê, êðÿêè ñêà÷àòü, êðÿê windows, êðÿê vista, êðÿêè, êðÿê 2, èãðà êðÿê, xp êðÿê,
êðÿê 2007, êðÿêè êëþ÷è
http://spdimon.info-Soft, èíòåðíåò, ìóçûêà, ôèëüìû, êðÿêè, ñåðèéíèêè, ôîòîãðàôèè, ïîðíî,
ýðîòèêà, ôëåøêè
http://spdimon.info/01.htm-Ïðîñòèòóòêè, ïðîñòèòóòêè ìîñêâû, äåøåâûå ïðîñòèòóòêè, ôîòî ïðîñòèòóòêè, ïðîñòèòóòêè ã, ïðîñòèòóòêè ïèòåðà, ýëèòíûå ïðîñòèòóòêè, ïðîñòèòóòêè íîâîñèáèðñê,
ïðîñòèòóòêè êèåâà,ïðîñòèòóòêè ãîðîäà
http://spdimon.info/02.htm-ôèëüì 4, ñàóíäòðåê ôèëüì, ôèëüìû ìóçûêà, êàäðû ôèëüìà, ñàéò ôèëüìîâ, ëó÷øèå ôèëüìîâ, ïåñíÿ ôèëüì, ôèëüì ãäå,
ôîòî ôèëüì, ñêà÷àòü ôèëüì 4
http://spdimon.info/03.htm-games, flash games, games ru, www game, download games, game boy, java games, pc games,
nokia game, èãðû games
http://spdimon.info/04.htm-ïðèêîëû 8 ìàðòà, ïðèêîëû 23 ôåâðàëÿ, ôîòî ïðèêîëû, ïðèêîëû ñêà÷àòü, ñìñ ïðèêîëû, ïðèêîëû òåëåôîí, ïðèêîëû ïðî, êàðòèíêè ïðèêîëû,
ïðèêîëû ìàðòà, 8 ïðèêîëû
http://spdimon.info/05.htm-çíàêîìñòâà, ñàéòû çíàêîìñòâ, çíàêîìñòâà ru, çíàêîìñòâà mail, èíòèì çíàêîìñòâà, çíàêîìñòâà ã, ãîðîä çíàêîìñòâ, çíàêîìñòâà èíîñòðàíåö,
ïðàâîñëàâíîå çíàêîìñòâî, çíàêîìñòâà ðåãèñòðàöèÿ
http://spdimon.info/06.htm-îòêðûòêè, îòêðûòêè äíåì ðîæäåíèÿ, ñêà÷àòü îòêðûòêè, îòêðûòêè äåíü, îòêðûòêè çàùèòíèêîâ, îòêðûòêè ìàðòà ïîçäðàâëåíèÿ, ïîçäðàâëåíèÿ îòêðûòêè 8, îòêðûòêà îòå÷åñòâî,
äåíü ðîæäåíèÿ îòêðûòêè, ïîçäðàâèòåëüíûå îòêðûòêè 8
http://spdimon.info/07.htm-âàç, òþíèíã âàç, âàç 2110, âàç 2107, âàç 2109, âàç 2112, âàç 2106, âàç 2108,
âàç 21099, âàç 2115
http://spdimon.info/08.htm-ïðîñòèòóòêè, äåøåâûå ïðîñòèòóòêè, ïðîñòèòóòêè ã, ïðîñòèòóòêè íîâîñèáèðñê, ïðîñòèòóòêè êèåâà, ïðîñòèòóòêè ãîðîäà, ñàìûå ïðîñòèòóòêè, ïðîñòèòóòêè ïåòåðáóðã,
ïðîñòèòóòêè åêàòåðèíáóðãà, ïðîñòèòóòêè ñàíêò
http://spdimon.info/09.htm-êðÿê, êðÿêè ñêà÷àòü, êðÿê windows, êðÿê vista, êðÿêè, êðÿê 2, èãðà êðÿê, xp êðÿê,
êðÿê 2007, êðÿêè êëþ÷è
Хотелось бы увидеть статейку по способам сортировки. Т.е. не именно в пределах данного CMS а как это вообще на практике реализовать при помощи PHP.
Такие посты только прибавляют популярности. Сайт Ваш почему-то мало продвинутый и плохопосещаем. Рекомендуем оптимизировать его с помощью программы XRumer 7 Elite (ХРумер 7 Элите) скачать можно тут http://x-rumer.ru/ слышал эффективная программа для раскрутки блог порталов.
Отправить комментарий
<< Home