PDA

View Full Version : سوال: مرتب سازی



rash44
شنبه 17 مرداد 1388, 12:30 عصر
سلام
توی گزارشگیری می خوام گزارش رو بر حسب فامیل که فارسی هست مرتب کنم
از order by `family` asc استفاده می کنم اما بر حسب الفبای فارسی مرتب نیست
لطفا راهنمائی کنید

mrrajabi
شنبه 17 مرداد 1388, 12:40 عصر
آره بر اساس فارسی درست مرتب نمی کنه. منم این مشکل رو دارم. برو تو بخش Mysql بپرس

اعظم
شنبه 17 مرداد 1388, 17:05 عصر
<?php


//************************************************** ************
//************************************************** ************
//
//************************************************** ************
//************************************************** ************
function farsi_decode($str){
$_to_farsi=array(
chr(131).chr(48) => chr(216).chr(162),
chr(131).chr(49) => chr(216).chr(167),
chr(131).chr(50) => chr(216).chr(168),
chr(131).chr(51) => chr(217).chr(190),
chr(131).chr(52) => chr(216).chr(170),
chr(131).chr(53) => chr(216).chr(171),
chr(131).chr(54) => chr(216).chr(172),
chr(131).chr(55) => chr(218).chr(134),
chr(131).chr(56) => chr(216).chr(173),
chr(131).chr(57) => chr(216).chr(174),
chr(131).chr(65) => chr(216).chr(175),
chr(131).chr(66) => chr(216).chr(176),
chr(131).chr(67) => chr(216).chr(177),
chr(131).chr(68) => chr(216).chr(178),
chr(131).chr(69) => chr(218).chr(152),
chr(131).chr(70) => chr(216).chr(179),
chr(131).chr(71) => chr(216).chr(180),
chr(131).chr(72) => chr(216).chr(181),
chr(131).chr(73) => chr(216).chr(182),
chr(131).chr(74) => chr(216).chr(183),
chr(131).chr(75) => chr(216).chr(184),
chr(131).chr(76) => chr(216).chr(185),
chr(131).chr(77) => chr(216).chr(186),
chr(131).chr(78) => chr(217).chr(129),
chr(131).chr(79) => chr(217).chr(130),
chr(131).chr(80) => chr(218).chr(169),
chr(131).chr(81) => chr(218).chr(175),
chr(131).chr(82) => chr(217).chr(132),
chr(131).chr(83) => chr(217).chr(133),
chr(131).chr(84) => chr(217).chr(134),
chr(131).chr(85) => chr(217).chr(136),
chr(131).chr(86) => chr(217).chr(135),
chr(131).chr(87) => chr(219).chr(140));
return strtr($str,$_to_farsi);
}

//************************************************** ************
//************************************************** ************
//
//************************************************** ************
//************************************************** ************

function farsi_encode($str){
$_to_safe=array(
chr(216).chr(162) => chr(131).chr(48),
chr(216).chr(167) => chr(131).chr(49),
chr(216).chr(168) => chr(131).chr(50),
chr(217).chr(190) => chr(131).chr(51),
chr(216).chr(170) => chr(131).chr(52),
chr(216).chr(171) => chr(131).chr(53),
chr(216).chr(172) => chr(131).chr(54),
chr(218).chr(134) => chr(131).chr(55),
chr(216).chr(173) => chr(131).chr(56),
chr(216).chr(174) => chr(131).chr(57),
chr(216).chr(175) => chr(131).chr(65),
chr(216).chr(176) => chr(131).chr(66),
chr(216).chr(177) => chr(131).chr(67),
chr(216).chr(178) => chr(131).chr(68),
chr(218).chr(152) => chr(131).chr(69),
chr(216).chr(179) => chr(131).chr(70),
chr(216).chr(180) => chr(131).chr(71),
chr(216).chr(181) => chr(131).chr(72),
chr(216).chr(182) => chr(131).chr(73),
chr(216).chr(183) => chr(131).chr(74),
chr(216).chr(184) => chr(131).chr(75),
chr(216).chr(185) => chr(131).chr(76),
chr(216).chr(186) => chr(131).chr(77),
chr(217).chr(129) => chr(131).chr(78),
chr(217).chr(130) => chr(131).chr(79),
chr(218).chr(169) => chr(131).chr(80),
chr(218).chr(175) => chr(131).chr(81),
chr(217).chr(132) => chr(131).chr(82),
chr(217).chr(133) => chr(131).chr(83),
chr(217).chr(134) => chr(131).chr(84),
chr(217).chr(136) => chr(131).chr(85),
chr(217).chr(135) => chr(131).chr(86),
chr(219).chr(140) => chr(131).chr(87));
return strtr($str,$_to_safe);
}

//************************************************** ************
//************************************************** ************
//
//************************************************** ************
//************************************************** ************

function farsi_compare_field1($x, $y)
{
return strcmp($x['field1'], $y['field1']);
}



//************************************************** ************
//************************************************** ************
// Define Sort Function
//************************************************** ************
//************************************************** ************

function AZ_DB_Sort($arr,$keyword)
{
reset($arr);
$arr_count=count($arr);

for($i=0;$i<$arr_count;$i++)
$arr[$i][$keyword] =farsi_encode($arr[$i][$keyword]);


if ($keyword=='field1') usort($arr, 'farsi_compare_field1');


for($i=0;$i<$arr_count;$i++)
$arr[$i][$keyword] = farsi_decode($arr[$i][$keyword]);


return $arr ;
}



//*************************************
//*************************************
//*************************************
// how to use
//*************************************
//*************************************
//*************************************


$myquery2="my query";
}
$m2 = mysql_query($myquery2,$con);
$numrows1 = mysql_num_rows($m2);



if ($numrows1>0)
{

$arr = array();

for ($i = 0; $i < $numrows1; ++ $i)
{
$arr[] =& mysql_fetch_assoc($m2);
}
mysql_free_result($m2);

$arr=AZ_DB_Sort($arr,'field1');

}





/*
استفاده ار آرايه مرتب شده

for( $i=1; $i <= $numrows1 ; $i++ )
{

$field1= $arr[$i-1]['field1'];
{


*/



?>

اعظم
شنبه 17 مرداد 1388, 17:13 عصر
از باب يادآوري usort تابعي كه مي توني يك تابع تعريف كني و بهش ارسال كني تا بر اساس اون مرتب سازي رو انجام بده . اين تابع فقط اسم تابع جديد رو مي گيره . در مثال فوق من تابع farsi_compare_field1 رو نوشتم و به usort ارسال كردم.

saeid99
شنبه 17 مرداد 1388, 19:07 عصر
یه دید بندازی خوبه...
http://boplo.ir/php/psort-function/

TheMohammad
شنبه 17 مرداد 1388, 23:04 عصر
از BINARY میشه استفاده کرد !