Advertisement
Guest User

Untitled

a guest
Jul 9th, 2014
368
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.60 KB | None | 0 0
  1. function ResolveDirectionByNumber($number = '000', $return_id = true,$ignore_len=false) {   // $ignore_unavail -- при установке его в true считает годными для применения направления, с ценником в -1.
  2.  $number=preg_replace("/\D/","",$number); // КОВЫЧГА НЕ ПРОЙДЁТ
  3.  for ($dlinnota=1; $dlinnota <= strlen($number) ; $dlinnota++) { // длиннота -- длиннота префикса.
  4.   $levels[$dlinnota]=mysql_result(mysql_query("select count(distinct(direction)) from directions where code like '".substr($number,0,$dlinnota)."%'"),0,0); //количество направлений в данной длинноте
  5.   $prefix[$dlinnota]=substr($number,0,$dlinnota);  //префикс nf
  6.  }
  7.  $real_prefix_index=1;   // номер префикса в массиве, которые мы считаем
  8.  $real_prefix_data=10000; // количество направлений, совпадающих по маске с данным префиксом. изначально -- заведомо больше чем в БД, чтобы при первой же возможности это число поменялось.
  9.  
  10.  for ( $search_index=1; $search_index <= count($levels) ; $search_index++ ) { //а теперь перебираем префиксы.
  11.   if ( ( $levels[$search_index] < $real_prefix_data ) && ( strlen($prefix[$search_index]) > strlen($prefix[$real_prefix_index]) ) && ( $levels[$search_index] > 0 ) && ( mysql_num_rows(mysql_query("select direction from directions where code = '".$prefix[$search_index]."'")) > 0 ) ) {  
  12.     $real_prefix_index=$search_index;
  13.     $real_prefix_data=$levels[$search_index];
  14.   }
  15.  }
  16.  $postfix_query='';
  17.  if ( $ignore_len == false ) $postfix_query=" and min_len <= ".strlen($number)." and max_len >= ".strlen($number);
  18.  $real_direction_query=mysql_query("select id,direction from directions where code = '".$prefix[$real_prefix_index]."'".$postfix_query); // если длина номера неожиданно не соответствует международным стандартам ...
  19.  if ( mysql_num_rows($real_direction_query) > 0 ) {
  20.   $real_direction=mysql_result($real_direction_query,0,1);
  21.   $real_direction_id=mysql_result($real_direction_query,0,0);   //удалось получить данные по направлению $prefix[$real_prefix_index]
  22.  } else {
  23.   $real_direction=__PREPAREFAIL_MSG;                            //не удалось )-:
  24.   $real_direction_id=__PREPAREFAIL_IDN;
  25.  }
  26.  
  27.  if ($return_id) return $real_direction_id; else return $real_direction;
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement