Задать вопрос
  • Как написать запрос если переменная пустая?

    @alexalexes
    Если метод where может принимать пустую строку, то так.
    where(isset($sub_id) ? "sub_id=$sub_id" : "")
    Пустота может быть разная.
    Если у вас пусто это '', то нужно сравнивать так:
    $sub_id !== ''

    Если null, то так
    !is_null($sub_id)
    Ответ написан
    Комментировать
  • Как отправить mp3 файл на сервер?

    @alexalexes
    1) Можно традиционным образом. В форме использовать тег input с типом file с выставленным ограничением принимать только *.mp3. Форма отправляется по кнопке с типом submit.
    2) Продвинутым способом. В форме также используется тег input с типом file с выставленным ограничением принимать только *.mp3. Отличие в том, что вам нужно поля формы отправить непременно только через ajax-запрос. В этом случае поле с файлом вычитывается с помощью объекта FileReader (старые браузеры его не имеют, например, IE 10-, так что для них не катит способ), формируется особым образом бинарный пакет запроса и этот пакет в виде base64 передается аяксом на сервер.
    PS: какой бы способ отправки вы бы не выбрали, файл в любом случае можно прицепить к форме только по инициативе пользователя, не зависит от того, используете вы простую отправку формы или пытаетесь забрать файл из input-а FileReader-ом.
    Ответ написан
    Комментировать
  • Как правильно соединить две таблицы?

    @alexalexes
    Лучше, если у вас все типы новостей будут в одной таблице, а различаться будут по section_id (соответственно, 0 - без темы, 1 - футбол, 2 - хоккей и тд.)
    Тогда запрос на порционную выборку делается элементарно.
    select a.*
      from (select n.*,
                  rank() over (partition by n.section_id order by n.publication_date desc) rnk -- нумеруем порядок новости в пределах каждой секции по порядку даты публикации
                from news n) a
    where a.rnk < 10 -- сколько новостей выводить на каждую секцию
    order by a.section_id, a.publication_date desc
    Ответ написан
    Комментировать
  • Как пропускать трафик через сайт МТС, чтобы он не тратился?

    @alexalexes
    Если у вас есть человек в компании, кто развернет для вас личный прокси-сервер, то почему бы и нет.
    А так - нет.
    Ответ написан
    Комментировать
  • Отправка двух форм по нажатию одной кнопки?

    @alexalexes
    У вас при первом отображении $_SESSION["a"] и $_SESSION["b"] не заполнены, соответственно, при выводе второй формы будет вот так.
    <input type="hidden" id = "nserver" name="nserver" value="">
          <input type="hidden" id = "registrar" name="registrar" value="">

    Придумайте, как обработать состояние, когда поля nserver === '' и registrar === '' или как забить $_SESSION["a"] и $_SESSION["b"] дефолтными значениями, и будет работать.
    Ответ написан
  • Как лучше сделать парсер данных с разных источников?

    @alexalexes
    В вашей схеме еще не хватает подсистемы scheduler - планировщик заданий.
    Его нужно чаще всего запускать по крону (а может он у вас будет вертеться в бесконечном цикле, а может спать в потоковом режиме выполнения).
    Планировщик, на основе результатов проходов паука, парсера, ограничений на проходимых сайтах, нагрузки собственной системы, будет регулировать частоту запуска перезапуска заданий.
    Желательно, чтобы задания паука и парсера были достаточно атомарны.
    Паук в одну страницу постучал, записал статус получения ответа, каков контент в ответе (html или текстовое сообщение, или JSON и тд.), удалось ли ему распознать структуру, метаданные и тд.
    Если, например, вернулась 404 стр, то возможно, с помощью планировщика установить правило, что можно натравить паука на url чуть позже, через час, день, неделю и тд.
    По аналогии, можно фиксировать статусы работы других подсистем checker-а, парсера.
    Если один из модулей застревает на 5 разе на каком-то задании, то сыпать критическую ошибку в лог и тд.

    В общем, каков бы состав модулей не был, но планировщик нужен.
    Ответ написан
    Комментировать
  • Как делается drag and drop на странице?

    @alexalexes
    Может быть реализовано на нативном JavaScript путем навешивания обработчиков событий onmousedown, onmousemove, onmouseup на манипулируемый элемент (событие onmousedown), а также на заполняющий всю площадь страницы контейнер (события onmousemove, onmouseup). Естественно, механику взаимодействия элементов и отслеживания фазы drag and drop вам придется реализовать самостоятельно.
    PS: При реализации drag and drop не забудьте про пользователей с сенсорным экраном. У них другая группа событий: ontouchstart, ontouchmove, ontouchend, и число точек касаний у них может быть больше чем одна.
    Ответ написан
    Комментировать
  • Почему всегда выводит Not Include после refreshData()?

    @alexalexes
    Вместо этого условия, посмотрите, что у вас формируется в переменной pageAvailable при помощи точки останова или выведите непосредственно ее в лог.
    if (pageAvailable == false) {
                                        console.log("Not Include");
                                    } else{
                                        console.log("Include");
                                    }

    Тогда поймете, что у вас возникнет одна из двух ситуаций:
    - либо сравнение нужно до типа данных использовать: вместо == на ===.
    - либо вот это Object.values(response['data']).some(n => n.name === 'ArmPaper Idea'); не вылавливает из объекта response['data'], то что вы хотите выловить.
    Ответ написан
    Комментировать
  • Как правильно отправить письмо?

    @alexalexes
    У вас тег tr без пары закрывающей оказался. xslt разметка такое не прощает.
    Делайте либо так:
    <tr>
     <xsl:for-each select="Product">
    ......
    </xsl:for-each>
    </tr>

    Либо так:
    <xsl:for-each select="Product">
    <tr>
    ......
    </tr>
    </xsl:for-each>

    Если бизнес логика хитрая, и одним for-each не отделаться, вызывайте еще один template внутри содержимого tr.
    Ответ написан
    1 комментарий
  • Монитор теряет сигнал, помогает только перезагрузка. Почему?

    @alexalexes
    Почему так происходит, вам только радиомастер может рассказать, и то, когда вскроет монитор и сделает хотя бы поверхностную диагностику компонентов.
    Можно все что угодно обнаружить. От банального замыкания дорожек/контактов от многолетней пыли, до выхода из строя радио элементов, например, вздувшиеся конденсаторы на блоке питания.
    Ответ написан
    Комментировать
  • Как распарсить данные с json?

    @alexalexes
    Соответствующей функцией:
    https://developer.mozilla.org/ru/docs/Web/JavaScri...
    Ответ написан
    Комментировать
  • Как сгруппировать диалоги по двум полям в MySQL через GroupBY?

    @alexalexes
    Пробуйте этот запрос с вычисленным псевдопараметром dialog_hold.
    Суть в том, что этот параметр одинаковый для переписки пользователя 1 и пользователя 2 в ту и другую сторону.
    Должно получаться число 1000002 при sender_id=1, recipient_id=2 и при sender_id=2, recipient_id=1.
    По этому параметру можно отсортировать переписку так, чтобы беседы пользователей шли по порядку.
    Значение 1000000 должно быть заведомо большое, чем возможно число пользователей в вашей системе в любой исторический период. Однако, max(user_id) * 1000000 + max(user_id) никогда не должно превышать макс. целочисленное значение, с которым может работать СУБД (верхний предел id пользователей, когда этот финт ушами способен работать).
    select a.*
    from (select d.id, d.tovar_id, d.sender_id, d.recipient_id, d.message,
                 case
                   when d.sender_id < d.recipient_id
                   then d.sender_id * 1000000 + d.recipient_id
                   else d.recipient_id * 1000000 + d.sender_id
                 end dialog_hold
            from dialogs d
           where d.tovar_id = :tovar_id
             and (d.sender_id = :user_id or d.recipient_id = :user_id)
          ) a
    order by  a.tovar_id, a.dialog_hold, a.id
    Ответ написан
  • Есть камера от регистратора как её подключить к ТВ или компьютеру?

    @alexalexes
    Игра не стоит свеч.
    Этой камере нужно где-то брать 12 вольт (две жилы у джека - эта питание, третья - сигнал RCA желтый тюльпан).
    При подключении к телевизору вам придется заморочиться с отельным блоком питания,
    а при подключении к ПК, питание можно взять из БП системника, а вот для видеосигнала нужна плата видеозахвата, либо ее usb-аналог.
    Картинка скорее всего будет 720 × 576 - это как у любой самой бюджетной камеры, которая цепляется напрямую по USB без всяких заморочек.
    Ответ написан
  • Не приходят формы с сайта на почту?

    @alexalexes
    У вас что клиентский, что серверный скрипт не имеют функционала оповещать пользователя о возникшей ошибке.
    php-скрипт должен отдавать хоть малюсенькое текстовое сообщение, что удалось отправить почту.
    ....
    $send_result = mail($admin_email, adopt($form_subject), $message, $headers );
    echo $send_result ? 'success' : 'fail';

    Клиентский скрипт должен иметь возможность в коллбэк функции done словить это сообщение:
    ...
    ).done(function(e)
    {
        var resp = e.responseText;
        alert(resp === 'success' ? 'Сообщение отправлено!' : 'Ошибка отправки сообщения');
    ....
    }

    Для аякса хорошо бы еще добавить функцию fail(), когда серверный скрипт вообще не отвечает.
    $.ajax({
          type: "POST",
          url: "../js/mail.php", //Change
          data: th.serialize()
        }).done(function(e) {
         .......
        }).fail(function()
        {
          alert('Фатальная ошибка отправки!');
        });

    Немного доработав скрипты, и получив некоторые сообщения, можно будет сориентироваться, какого рода ошибка у вас возникла.
    Ответ написан
    Комментировать
  • Как добавить тег в скрипт?

    @alexalexes
    А что мешает плюсануть текст в нужном месте?

    ......('span').html( '<i class="new"></i>' + $('#form-uploa......


    PS: правда для вывода текста в тег использовать не метод text(), а html().
    Ответ написан
  • Как выполнить нужные условия до и после определенной даты JS?

    @alexalexes
    var now = new Date(); // Текущая дата
           var event_date = new Date ("Jul 17 2018 11:30:00 GMT+0300"); // дата события (+ часовой пояс, крайне обязательно)
           var dif_time = now.getTime() - event_date.getTime(); // разность в милисикундах по UTC (время приведено в один часовой пояс, крайне удачно)
           var duration = 60 * 60 * 1000; // время длительности вебинара в милисекундах
           switch(true)
           {
               case dif_time < 0:
                // действия до события
                break;
              case dif_time >= 0 && dif_time < duration:
                // действия во время события до окончания, (dif_time / 1000) - куда перематывать
                break;
              case dif_time >= duration:
                // действия после окончания события
                break;
           }
    Ответ написан
    4 комментария
  • Почему на MacOS криво работает кнопка наверх?

    @alexalexes
    У вас очень тяжелый файл www.annalev.ru/static/bundle/js/bundle.min.js, в котором лежит функция скроллинга, пока он не загрузиться на клиенте полностью, скроллинг не будет работать.
    Решить проблему можно несколькими путями:
    1) Все легковесные функции, которые не зависят от библиотек поместить в отдельный файл, который будет подключаться выше списком, чем тяжеловесные js.
    2) Написать код легковестных функций прямо в документе (или в общем шаблоне страниц, где описывается head или footer, в случае если у вас CMS);
    3) Написать обработчик скроллинга непосредственно в атрибуте onclick.
    PS: Дополнительно, посмотреть, какой функционал можно "выбросить" в подключенных библиотеках.
    Например, на JQuery можно опционально отключать некоторые возможности и скачивать js-файл значительно меньших размеров, чем в полной комплектации.
    Ответ написан
    4 комментария
  • Почему некорректно скачивается pdf в firefox?

    @alexalexes
    Приведенный код напрямую не связан с технологией ajax. Он всего лишь подставляет в элемент с id-шником lp-download-pdf свойства href (по наличию этого свойства можно догадаться, что это элемент-ссылка) и download, затем, принудительно программно запускает событие клика, словно по элементу нажал пользователь.
    Как браузер отреагирует на двойное "роботизированное" нажатие на ссылку с одним и тем же href можно только догадываться. Можно попытаться сделать ссылку при каждом нажатии уникальной.
    Подставьте на этом этапе какой-нибудь рандомный параметр к ссылке:
    .attr('href', string.trim() + "?random_param=" + Math.round(Math.random() * 1000))
    Ответ написан
    Комментировать
  • Почему не срабатывает аякс запрос?

    @alexalexes
    $("#form")
    У вас на странице формы имеют атрибут id="form" или id="form1"?
    Нет.
    А на что будут вешаться обработчики submit в этом случае? Ни на что.
    Решение:
    Для отладки JS-кода в любом непонятном месте, пока вы новичок, проверяйте, что вылавливает JQuery селектор:
    var form_elem = $("#form"); // тут должны словить DOM-объект формы в JQuery обертке
    form_elem.submit(function(.......... // а тут цепляем обработчик.

    Чтобы приведенный выше код поставил обработчики submit, на странице должны существовать элементы с такими атрибутами:
    <form id="form"></from>
    или такой:
    <form id="form1"></from>
    Атрибуты action и method, конечно, должен быть определены.
    Ответ написан