Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function ResolveDirectionByNumber($number = '000', $return_id = true,$ignore_len=false) { // $ignore_unavail -- при установке его в true считает годными для применения направления, с ценником в -1.
- $number=preg_replace("/\D/","",$number); // КОВЫЧГА НЕ ПРОЙДЁТ
- for ($dlinnota=1; $dlinnota <= strlen($number) ; $dlinnota++) { // длиннота -- длиннота префикса.
- $levels[$dlinnota]=mysql_result(mysql_query("select count(distinct(direction)) from directions where code like '".substr($number,0,$dlinnota)."%'"),0,0); //количество направлений в данной длинноте
- $prefix[$dlinnota]=substr($number,0,$dlinnota); //префикс nf
- }
- $real_prefix_index=1; // номер префикса в массиве, которые мы считаем
- $real_prefix_data=10000; // количество направлений, совпадающих по маске с данным префиксом. изначально -- заведомо больше чем в БД, чтобы при первой же возможности это число поменялось.
- for ( $search_index=1; $search_index <= count($levels) ; $search_index++ ) { //а теперь перебираем префиксы.
- 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 ) ) {
- $real_prefix_index=$search_index;
- $real_prefix_data=$levels[$search_index];
- }
- }
- $postfix_query='';
- if ( $ignore_len == false ) $postfix_query=" and min_len <= ".strlen($number)." and max_len >= ".strlen($number);
- $real_direction_query=mysql_query("select id,direction from directions where code = '".$prefix[$real_prefix_index]."'".$postfix_query); // если длина номера неожиданно не соответствует международным стандартам ...
- if ( mysql_num_rows($real_direction_query) > 0 ) {
- $real_direction=mysql_result($real_direction_query,0,1);
- $real_direction_id=mysql_result($real_direction_query,0,0); //удалось получить данные по направлению $prefix[$real_prefix_index]
- } else {
- $real_direction=__PREPAREFAIL_MSG; //не удалось )-:
- $real_direction_id=__PREPAREFAIL_IDN;
- }
- if ($return_id) return $real_direction_id; else return $real_direction;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement