Сайт nomerok.ru

Здравствуйте, Николай. Это Алексей по сайту номерок. С четверга 20.04.2017 не могу от Вас получить ответ по сайту.... После переноса с тестового домена на мой основной перестали работать фильтры на сайте, до выгрузки этой версии все работало, еще опять появился раздел "туристические сим карты" это первый пункт ТЗ - этот раздел нужно было убрать. Поправьте оперативно пожалуйста т.к мы теряем клиентов из-за того что это не работает.

Comments

Добрый день.

У меня 160 непрочитанных писем (очень занят эти дни), вы не единственный, кто не может до меня достучаться. Оперативно достучаться могут только те, у кого телефон мой есть.

Туристические вы могли сами убрать, это из области контент-менеджмента

У вас там после того, как элемент меню убрался, менюшка поехала, стили костыльно прописан.

Фильтры сейчас посмотрю.

Эээ... У вас там php-5.3. Старый жутко. Из-за этого однозначно и проблема. Щас посмотрю что можно будет сделать.

Нет, все-таки технических ошибок там нет, логические видимо. Алексей, проблема именно с буквенными масками поиска? С цифрами ищет

Фильтр сейчас работает только для разового поиска, то есть заходим фильтр и попадаем на страничку выдачи http://nomerok.ru/poisk-nomerov.html?action=searchNumber&mask=%2B7+%28XXX%29XXX-AA-AA далее я меняю фильтр, но ничего не происходит, мы остаемся на том же URLе но без выдачи. У клиента складывается впечатление, что номеров под другими фильтрами 0шт

ок, постарайтесь пожалуйста оперативнее, спасибо.

Все, поправил. Проверяйте. Особенно бесплатные номера http://nomerok.ru/krasiviy-nomer-besplatno.html (что-то у меня сомнения, должно ли там быть столько много номеров).

Но в целом у вас там, конечно, все очень плохо. Для обычных запросов один сниппет, для Ajax - другой. Куча всяких параметров, разбросанных по двум тысячам строк. Это все вообще не правильно. Вот, к примеру, условие для обычных запросов:

if($get['action'] == 'searchNumber' || $id == 53 ||(isset($mask)&& trim($mask)!='')){....}

А вот для Ajax:

if($get['action'] == 'searchNumber' || $id == 53 ||(isset($mask)&& trim($mask)!='')) {
   $mask = (is_numeric($_REQUEST['mask'])) ? $_REQUEST['mask'] : maskFormat(strtolower($_REQUEST['mask']));
        unset($sql);
        unset($result);
        unset($re);
        unset($arr);
        unset($prices);
	        
    $prices = array();
    $codes = array();
    $count = 0;
    if($id!=53 && (isset($mask)&& trim($mask)!='' && isset($type))) {
       $type = $type;
    }else{
       $type='all';
    }
    
    $cost_from = !empty($cost_from) ? $cost_from : 0;
    $cost_to = !empty($cost_to) || $cost_to === 0 ? $cost_to : 9999999;

Почему в одном случае есть условие по маске, а в другом нет? Вот, в итоге, и поведение такое, что при заходе на страницу с маской поиска в адресной строке выполнялся поиск, а далее при Ajax-запросах нет. Раньше у вас это работало, потому что задублировано все было в два сниппета отдельных, а сейчас логика объединена в один сниппет. Но косяки лезут и скорее всего еще будут, потому что у вас по 500 строк в блоке и еще 500 в else.

Так не должно делаться. Должно быть единое формирование запроса со входящими параметрами типа operatorid,operator_id, max_cost, $min_cost и т.п. А у вас там что? Что это за солянка из кучи запросов, включая глобальные переменные?

А формирование запросов? Что это? Почему вы работаете на MODX с программистами, которые не слышали про xPDO и пишут запросы на чистом SQL?

if($id==53){
    
    $sql="
    SELECT * FROM `modx_numbers` 
    where 
    cost_sale=-1 
    and cost=0 
    AND tip_nomera=2
    {$sql_ord}
    
    UNION ALL 
    
    SELECT * FROM `modx_numbers` 
    where  
    cost_sale=0 
    AND tip_nomera=2
    {$sql_ord}";
    
    
}else{
    
    
    $sql="
    SELECT * FROM `modx_numbers` 
    where 
    cost_sale=-1 
    
    and cost<{$cost_to} 
    AND cost>= {$cost_from}
    
    {$sql_type}
    {$sql_ord}
    {$op}
    UNION ALL 
    
    SELECT * FROM `modx_numbers` 
    where  
    cost_sale<{$cost_to} 
    AND cost_sale>= {$cost_from}
    
    {$sql_type}
    {$sql_ord}
    {$op}";
}

Но и это еще не предел. Предел вот это:

$sql="

SELECT * FROM `modx_numbers` 
where operid={$oper_id} 
AND cost_sale=-1
and cost<{$cost_to} 
AND cost>= {$cost_from}
{$sql_type}
{$sql_ord}


UNION ALL 

SELECT * FROM `modx_numbers` 
where operid={$oper_id} 
and cost_sale<{$cost_to} 
AND cost_sale>= {$cost_from}
{$sql_type}
{$sql_ord}
{$sort}
LIMIT {$offset}, {$limit}

";

$result = $modx->query($sql); 

$sql="
SELECT count(*) FROM `modx_numbers` 
where operid={$oper_id} 
AND cost_sale=-1
and cost<{$cost_to} 
AND cost>= {$cost_from}
{$sql_type}
{$sql_ord}

UNION ALL 

SELECT count(*) FROM `modx_numbers` 
where operid={$oper_id} 
and cost_sale<{$cost_to} 
AND cost_sale>= {$cost_from}
{$sql_type}
{$sql_ord}
";

Зачем он для подсчета количества найденных строк использует полный дубль запроса??? Запихнул бы уже тогда параметры * и count(*) в переменные, и вставлял в запрос-заготовку.

В общем, совсем не удивляйтесь, что столько времени ушло. Я взял с вас денег за полтора часа, а потратил часов десять. И за оговоренный функционал доплату не попросил. Другой бы вообще давно потерялся бы и все.

Понял. Фильтры тест прошли на ура!) Единственное что бы хотел попросить, это выровнять надпись "Золото на халяву" по уровню других разделов, сейчас она почему то выше стоит.

Это удивительно, но с сайта Номерок.ру в корзину до сих пор приходят не те данные что отображаются при покупке номера и тарифа. Надеюсь, что это будет оооочень быстро исправлено. Спасибо

Скриншоты скину Вам на почту, доделайте пожалуйста, если надо что-то доплатить пишите скину деньги.

Про то, что мы говорили, что на почту не приходят все данные заказа. Я оплачу, только оперативно поправьте.

Пока вы не выходите на связь, попробуем своими силами, если не получится укажите сколько будет стоить

Алексей, странно, что вы удивляетесь. В планфиксе мы это обсуждали. Задача как изначально стояла с вашей стороны?

В выгрузке появились номера оператора Билайн с возможностью аренды номера. Эту категорию номеров необходимо отфильтровать в раздел Золото на халяву и в оставшейся справа от цены ячейки, написать "Либо ... р/мес" стоимость аренды берётся из выгрузки партнёров и отображается в корзине как абон плата за тариф + абон плата за красивый номер в месяц. В разделе Золото на халяву, категория номеров с арендой выводится в первую очередь, а уже за ними бесплатные номера

Здесь про корзину ничего не сказано. Напомню, что еще 20-го апреля я вам на этот вопрос отвечал.

Рад, что вы в итоге сами справились.