setlocale kullanın, kategori adlarını arraya atın, sort ile sıralatın.
setlocale(LC_ALL,'turkish');
$sor=mysql_query("select * from kategoriler order by kategoriadi");
mysql_query("SET NAMES 'latin5' COLLATE 'latin5_turkish_ci'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");
while($yaz=mysql_fetch_array($sor)){
$id= $yaz['id'];
$kategoriadi[]=$yaz['kategoriadi'];
}
sort($kategoriadi, SORT_LOCALE_STRING); // arrayı türkce karakterlerde dahil alfabetik sıralar
for ($i=0; $i < count($kategoriadi); $i++) {
echo $kategoriadi[$i] . "<br>";
}