Sortiranje po prezimenu - problem sa nasim slovima

u stvari, ovo je vise MySQL pitanje, ali ako se da rijesiti sa PHP - opet dobro. samo da ga rijesim.

kad izlistam rekorde sa imenima nasih ljudi, poredanih po imenu, oni sa “nasim slovima” dodju na pocetku liste a oda ispod njih od A pa na dalje. imal’ neko ideju kako da sortiranje prepozna nasa slova?

Pogledaj: http://www.php.net/manual/en/function.usort.php
I ovo: http://dev.mysql.com/doc/refman/5.0/en/charset-configuration.html
http://dev.mysql.com/doc/refman/5.0/en/charset-collate.html

Probaj i izmjeniti neku tabelu da joj je collation set neki od nasih jezika tipa latin2_croatian_ci

[code]usort($nekiniz, “bssort”);

Sortiranje za bosanski jezik

function bssort($a, $b) {
$a=strtolower($a); $b=strtolower($b);
static $abeceda = array(“a”,“A”,“b”,“B”,“c”,“C”,“č”,“Č”,“ć”,“Ć”,“d”,“đ”,“Đ”,“e”,“f”,“g”,“h”,“i”,“j”,“k”,“l”,“m”,“n”,“o”,“p”, “q”,“r”,“s”,“š”,“Š”,“t”,“u”,“v”, “w”,“x”,“y”,“z”,“ž”,“Ž”);
$min = (strlen($a)<strlen($b)) ? strlen($a) : strlen($b);
for ($i=0; $i<$min; $i++) {
$ca = substr($a,$i,1); if (ord($ca)>127) $ca = substr($a,$i,2);
$cb = substr($b,$i,1); if (ord($cb)>127) $cb = substr($b,$i,2);
$k=array_search($ca,$abeceda); $l=array_search($cb,$abeceda);
if ($k<$l) return -1; if ($k>$l) return 1;
}
if (strlen($a)<strlen($b)) return -1;
return 1;
}[/code]

Ali, taj bssort nije case sensitive?

Tačno, nije. Ne znam da mi je ikada trebalo case sensitive abecedno sortiranje, ali ako nekom treba, dovoljno je iskomentarisati liniju sa strtolower i prepraviti niz $abeceda tako da izgleda
(‘A’, ‘B’, ‘C’, ‘Č’, ‘Ć’, ‘D’ … ‘Ž’, ‘a’, ‘b’, ‘c’, … ‘ž’)
Osim toga ne tretira slova nj i lj ispravno ali to ne rade ni izvjesni komercijalni softveri :wink: