• Как обьявить структуру глобальной?

    @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 роутера или модема)?
  • Почему на почту приходят пустые поля формы?

    @alexalexes
    Проверяли, что из себя представляет $arFields перед отправкой?
    var_dump($arFields);
  • Как открыть и закрыть DVD-RW дисковод?

    @alexalexes
    Берите проблему шире. А если у вас куча дисководов?)))
    www.cyberguru.ru/sources/cpp/hardware/poluchit-spi...
  • Как вывести количество оставшихся товаров на сайт?

    @alexalexes
    Я не знаком с 1С. Но наверняка, вам в вопросе нужно было представить текст запроса к 1С, который формирует список оставшихся товаров, и другой запрос, формирующий список предложений.
    Гадать на выходной выборке, не видя сам запрос или по каким критериям сформирована выборка, это гадание на кофейной гуще. Советы все равно будут направлены на изменение этих запросов.
  • Как выполнить INSERT с подзапросом?

    @alexalexes
    Одно свойство можно обернуть в скобки, а вот для кортежа свойств select не предусмотрено такой конструкции в синтаксисе, поэтому ошибка.
    Вот, если подзапрос обернуть в скобки: (select ... from ... where ...), то да, они уместны, и то, этому подзапросу понадобится свое имя: (....) subquery_name. Не все СУБД позволяют делать анонимные подзапросы, например, mySQL.
  • Как открыть и закрыть DVD-RW дисковод?

    @alexalexes
    Попробуйте так:
    int main()
    {
      mciSendString("open f: type cdaudio alias cd", NULL, 0, NULL);
      mciSendString("set cd door open wait", NULL, 0, NULL);
      Sleep(3000);
      mciSendString("set cd door closed wait", NULL, 0, NULL);
      return 0;
    }
  • Как выполнить INSERT с подзапросом?

    @alexalexes
    Зачем select в скобки взяли? он в insert-e никакой синтаксической специфики не имеет, и ни сколько не обязан подражать синтаксису values.
  • Как вытащить модели с критерием по связи, а также не имеющим связи?

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

    @alexalexes
    Можете попробовать сравнить tolower(symbol) с кодом символа 'а', но вы должны точно уверены, что этот код соответствует этой букве. Это зависит от того, какую кодировку для символов с кодом > 128 использует компилятор.
    if (tolower(symbol) == 'a' || tolower(symbol) == 224)
  • Можно ли в условиях языка С указывать кириллицу?

    @alexalexes
    Если кодировка файла с кодом двухбайтная, например, unicode, то кириллические символы, набранные как константы, будут восприниматься по коду символа > 255, а по байтам > 1.