Вопрос стар, как мир. Но всё же ) есть, например, запись в базе данных 401, 471-475, 483-487, 491-494, 496, 500-502, 690, 815, 818, 821, 831, 833-836, 841, 901-902, 910, 911, 921, 926, 927, 928, ей соответствует, например, число 15 а есть строками ниже запись 47, 49, которому соответствует 19 необходимо, что бы при получении методом POST $code искать соответствующую запись , то есть если передаём 496 или 501 (сидит между 500 и 502) в итоге имеем 15 а если 49 то должны иметь 19 на данный момент скрипт берёт первое соответствие, а не точное (вводим 49 на выходе 15) помогите с подсказкой, учитывая цвет волос PHP: $diapozon = 10; $str = $code; $q = mysql_query("SELECT `price` FROM `tarif` WHERE `code` LIKE '%".addslashes($str)."%' OR `code` LIKE '%-".addslashes($str)."%' OR `code` LIKE '%".addslashes($str)."-%' LIMIT 0,1"); if(mysql_num_rows($q) > 0){ $r = mysql_fetch_array($q); $tarif_f = $r['price']; }else{ $n_str = $str; for($i=0;$i<$diapozon;++$i){ --$n_str; $q = mysql_query("SELECT `price`, `code` FROM `tarif` WHERE `code` LIKE '%".addslashes($n_str)."-%' LIMIT 0,1"); if(mysql_num_rows($q) > 0){ $r = mysql_fetch_array($q); @preg_match('#'.$n_str.'-([a-z0-9])([a-z0-9])([a-z0-9])#i', $r['code'], $matches); if(isset($matches[1])){ $t_str = $matches[1].$matches[2].$matches[3]; if($t_str >= $str){ $tarif_f = $r['price']; break; } } } } if(!isset($tarif_f)){ $n_str = $str; for($i=0;$i<$diapozon;++$i){ ++$n_str; $q = mysql_query("SELECT `price`, `code` FROM `tarif` WHERE `code` LIKE '%-".addslashes($n_str)."%' LIMIT 0,1"); if(mysql_num_rows($q) > 0){ $r = mysql_fetch_array($q); @preg_match('#([a-z0-9])([a-z0-9])([a-z0-9])-'.$n_str.'#i', $r['code'], $matches); if(isset($matches[1])){ $t_str = $matches[1].$matches[2].$matches[3]; if($t_str <= $str){ $tarif_f = $r['price']; break; } } } } } } if(!isset($tarif_f)){die("Введён не ккорректный код города или страны"); @unlink($dest);}