Задать вопрос
  • Стоимость ремонта материнской платы ноутбука?

    @alexalexes
    а) КЗ на материнской плате или на одном из порту по линии питания (USB, питание дисков, кулеров);
    б) неисправный БП.
  • Как сделать вывод значений из одинаковых полей формы?

    @alexalexes
    Эта функция не заменяет вашу функцию Selected().
    Она только управляет атрибутом disabled в контейнерах, которые нужно скрыть или отобразить.
    Примерно вот так нужно дополнить вашу функцию, естественно, это только одна ветка if.
    function Selected(b) {
            var label = b.value;
            if (label==243)
            {
                document.getElementById("Block3").style.display='block';
                document.getElementById("Block4").style.display='none';
                document.getElementById("Block5").style.display='none';
                document.getElementById("Block6").style.display='none';
                 fields_enable_and_disable('Block3', ['Block4', 'Block5', 'Block6']); // Block3 - отображаем, значит, у него нужно вкл. все поля ввода (disabled = false), остальные блоки - перечисляем вторым аргументом, там - наоброт, выкл. поля (disabled = true).
             }
  • Как удалить нужную запись из БД?

    @alexalexes
    Бежим вперед паровоза. Хотим оседлать ORM без знаний SQL.
  • Нагрузка на процессор в конце долгого PHP-скрипта?

    @alexalexes
    Я бы еще, на всякий случай, прощупал фактор накопления инсертов в рамках одной транзакции.
    Либо цепочку действий сделал бы так: открытие соединения, один инсерт, закрытие соединения.
    Либо соединение и закрытие соединения оставил бы как есть, а вот инсерт обернул бы в транзакцию.
  • Как сделать вывод значений из одинаковых полей формы?

    @alexalexes
    Воспользуйтесь функцией, которую я написал в решении.
    Если у вас используется JQuery библиотека, ее можно значительно упростить.
  • Как с помощью php запретить редактировать Docx файл?

    @alexalexes
    Хорошо.
    По средством чего скачивает пользователь документ из вашей системы?
    Через ссылку на странице сайта, через особый портал документооборота или через доступ к ftp-каталогу?
    В процессе взаимодействия пользователя и вашей системы есть этап, когда пользователь прочитав документ, должен загрузить его в систему или предъявить вам, возможно, с некоторыми правками?
  • Как с помощью php запретить редактировать Docx файл?

    @alexalexes
    То есть пользователь скачивает zip-файл к себе на компьютер, распаковывает и открывает в своем редакторе.
    А какая цель защиты документа от редактирования?
    Если присечь копипаст с модификацией, то не выйдет. Все что передано на сторону пользователя, может быть обработано им любыми методами: сфотографировано с экрана, распознано в OCR, скопировано в другой документ и изменено по его усмотрению.
  • Как с помощью php запретить редактировать Docx файл?

    @alexalexes
    С помощью чего реализована функция редактирования документов?
  • Кто должен покупать хостинг?

    @alexalexes
    Важно любой вариант решения закрепить в договоре, чтобы ни у одной стороны в будущем не было желания в одностороннем порядке воспринять ситуацию владением хостинга по-своему.
  • Лог частоты запросов к серверу?

    @alexalexes
    Как говорится, храните деньги в сберкассе.
    То есть логи в базе данных.
    Такие вопросы отпадут сами собой, это тривиальные операции в рамках SQL.
  • Как обьявить структуру глобальной?

    @alexalexes
    Никак, делайте запрос к базе заново, чтобы получить все недостающие данные.
    Причем у вас $sql слегка измениться для этого случая, он должен вытаскивать конкретную запись по id.
  • Почему у ajax при foreach функция в success срабатывает только после проработки всего массива?

    @alexalexes
    Я могу предложить только рекурсию, чтобы поток цикла не тиражировал множество запросов, пока не придет ответ. То есть, вообще, избавляемся от for.
    <style>
          html, body
          {
            margin: 0;
            padding: 0;
          }
          div#product_image_files
          {
            display: block;
            width: 100px;
            height: 100px;
            background-color: red;
          }
        </style>
          <div id="product_image_files">
          </div>
        <script>
          /* Функция для имитации задержки времени */
          function randomInteger(min, max)
          {
            return Math.round(min - 0.5 + Math.random() * (max - min + 1));
          }
          /* Функция для последовательной отправки сообщений через рекурсию */
          function send_message(i, count)
          {
            console.log('send i = ' + i); // фиксируем в логах, что обратились к функции отправки
            var delay = randomInteger(50, 500); // получаем некую задержку передачи сообщения
            setTimeout(function() // Имитируем контструкцию ajax, с callback-функцией
            {
              console.log('response i = ' + i); // фиксируем в логах, что получили ajax-ответ
              alert(delay); // выводим значение текущей задержки
              console.log('after alert i = ' + i); // фиксируем момент, когда выполнение двинулось дальше алерта
              i++; // наращиваем счетчик итерации
              if(i < count) // не дошли до макс. кол-ва собщений, отправляем дальше
                send_message(i, count);
              else
              {
                var element = document.getElementById('product_image_files');
                element.style.display = 'none'; // что-то делаем с узлом на странице
                console.log('change elem display i = ' + i); // фиксируем, что отработали работу с узлом
                console.log('Finish!');
              }
            }, delay);
          }
          send_message(0, 5); // делаем первую отправку - начало рекурсии
        </script>

    PS: И если вам нужно на последнем сообщении что-то сделать с узлом, то эту манипуляцию можно заложить в else ветку if(i < count)
  • Почему у ajax при foreach функция в success срабатывает только после проработки всего массива?

    @alexalexes
    Сначала прорабатывается цикл, он создает целую серию ajax-запросов.
    Интерпретатор JS помечает у себя, что когда-то через вечность (по машинным меркам), если придет ответ от определенного запроса, он должен оживить callback-функцию success (если не придет, то error-функцию в ajax, но вы ее не описали).
    Интерпретатор идет дальше по своим делам.
    Проходит вечность....
    Приходит ответ.
    Интерпретатор реагирует на это событие подымая callback-функция с алертом.
    Вот так оно работает.
  • Angular 5, как поймать программное изменение value у input?

    @alexalexes
    Вы имеете дело с Angular 5. Вам нужно с контроллером общаться, а не пытаться лезть в представление информации, оказывая медвежью услугу контроллеру.
  • Как правильно пройтись по списку элементов и задать каждому ширину в зависимости от содержания?

    @alexalexes
    Тегу li нельзя задавать какую-либо ширину, только before.

    Чем обусловлено такое ограничение?
  • Подскажиет программу для автоматизации заполнения текста?

    @alexalexes
    Что вам мешает автоматизировать ввод и экспортировать данные в JSON?
    Тут нужны лишь базовые знания HTML и JS.
  • Запрос периода времени в течение дня?

    @alexalexes
    Это тестовый набор данных, я просто взял и накидал самые "коварные" временные метки (даже их подписал комментариями каждую временную метку), чтобы сразу видеть при отладке, где может хромать логика, о чем я предупредил:
    С помощью отладочного подзапроса, который представлен вместо таблицы t, можно увидеть особенности нумерации и определения отрезка на границах интервала и всего периода.

    Если его вписать как подзапрос, то основной конструкции запроса "будет казаться", что выборка t взята из реальной таблицы, а не сгенерирована на лету. Мне просто было лень возиться с созданием реальной таблицы для отладки запроса, к тому же в таком виде можно отлаживать в любом СУБД клиенте, не заботясь, нужно ли что-то для этого создавать. Скопировал и сразу выполнил, проверил.
    (select STR_TO_DATE('01.06.2018 08:50:00', '%d.%m.%Y %H:%i:%s') event_date union all -- до дневного периода
          select STR_TO_DATE('01.06.2018 08:59:59', '%d.%m.%Y %H:%i:%s') event_date union all -- за секунду до начала дневного периода
          select STR_TO_DATE('01.06.2018 09:00:00', '%d.%m.%Y %H:%i:%s') event_date union all -- ровно на начале дневного периода первого интервала
          select STR_TO_DATE('01.06.2018 09:00:01', '%d.%m.%Y %H:%i:%s') event_date union all -- ровно после одной секунды в первом интервале дневного периода
          select STR_TO_DATE('01.06.2018 09:14:59', '%d.%m.%Y %H:%i:%s') event_date union all -- за секунду до окончания первого интервала
          select STR_TO_DATE('01.06.2018 09:15:00', '%d.%m.%Y %H:%i:%s') event_date union all -- начало второго интервала
          select STR_TO_DATE('01.06.2018 09:15:01', '%d.%m.%Y %H:%i:%s') event_date union all -- ровно после первой секунды второго интервала
          select STR_TO_DATE('01.06.2018 17:59:59', '%d.%m.%Y %H:%i:%s') event_date union all -- ровно за секунду до окончания дневного периода  
          select STR_TO_DATE('01.06.2018 18:00:00', '%d.%m.%Y %H:%i:%s') event_date union all -- ровно на границе дневного периода
          select STR_TO_DATE('01.06.2018 18:00:01', '%d.%m.%Y %H:%i:%s') event_date union all -- ровно секунда после дневного периода
          select STR_TO_DATE('01.06.2018 18:10:00', '%d.%m.%Y %H:%i:%s') event_date) t

    По последнему сообщению видно, что вам нужно генерировать последовательность строк. Проблема в mySQL то, что у него нет специальных функций-генераторов для этой цели, и нужно использовать опорную таблицу, у которой количество строк с лихвой перекрывает потребности задачи. Например, можно генерировать списки, как в примере выше с помощью запроса ниже с использованием таблицы any_big_table:
    select @time_counter := @time_counter + 1 as number, -- номер интервала
             SEC_TO_TIME(inter2.width) as width,           -- ширина интервала
             SEC_TO_TIME(@time_step) as begin,             -- начало интервала
             SEC_TO_TIME(@time_step := @time_step + inter2.width) as end -- конец интервала
    from any_big_table, -- любая таблица, у которой в любую погоду всегда найдется over9000 строк
    (
     select inter.*, -- передаем константы выше как они есть
            @time_step := inter.begin, -- счетчик по времени
            @time_counter := 0      -- счетчик по порядку
     from (
            select TIME_TO_SEC('09:00:00') as begin, -- начало дневного периода
                   TIME_TO_SEC('18:00:00') as end,   -- окончание дневного периода
                   TIME_TO_SEC('00:15:00') as width  -- ширина интервала
          ) inter -- константно-параметрический подзапрос
    ) inter2 -- общий параметрический подзапрос, несет на себе функцию инициализации переменных-счетчиков @time_step и @time_counter
    where @time_step >= inter2.begin -- нижнее ограничение выборки
      and @time_step + inter2.width <= inter2.end -- верхнее ограничение выборки

    Только мне не понятно, как этот список вы хотите связать с первоначальной постановкой задачи - идентифицировать временные точки, к какому интервалу они относятся.
  • Как из класса обратиться к элементу формы?

    @alexalexes
    Для хранения тем лучше использовать список тем, и лучше этот список инкапсулировать в отдельный класс и выделить те методы списка, которые нужны вашей задаче.
    private List<Lesson> Lessons = new List<Lesson>();
    private Lesson lesson_Add(string name, string path, string description)
            {
                Lesson lesson = new Lesson(name, path, description); 
                Lessons.Add(Lesson);  // создали тему и положили ее в список, который будет доступен  в классе формы, хорошо бы его использовать через свой класс помимо того, что есть класс для элемента списка.
                ToolStripItem menuitem = themesToolStripMenuItem.DropDownItems.Add(lesson.LessonDescription);
                menuitem.Name = lesson.LessonName;
                menuitem.Tag = Lessons.Count() - 1; // закладываем информацию об индексе из списке тем в элемент меню, чтобы потом достать ее при обращении к sender
                menuitem.Click += new EventHandler(lesson_Click);
                return lesson;
            }

    А в клике будет обработка:
    var menu_item = (ToolStripMenuItem) sender; // из объекта sender получаем элемент события, его нужно привести к соответствующему типу объекта интерфейса
                var less_index = Convert.ToInt32(menu_item.Tag); // из тега достаем информацию, как нам обратиться к элементу, с которым связано отображение, в данном случае тут используем индекс в списке элементов тем, но можно положить любую произвольную инфу.
                var less_path = Lessons[less_index].LessonPath; // обращаемся к списку тем и достаем нужное свойство
                textBox1.Text = less_path; // выводим свойство
  • Почему отключается модем при подключении ноутбука по wifi?

    @alexalexes
    Модем подключен к роутеру в WAN-порт роутера или в один из LAN портов роутера?
    Роутер работает в роли свитча? и, вообще, на каком из двух устройств запущена DHCP служба?
    В ноутбуке в ручную забиты настройки TCP/IP или он получает их динамически (от службы DHCP роутера или модема)?