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

    @alexalexes
    Вам нужно создать такой подзапрос, чтобы перечень detail.title из нескольких строк для каждого item.idItem свести в одно свойство, чтобы сгруппированная запись выглядела так:
    item.idItem, grouping_title
    1, 'Железо#Дерево#Медь'
    А в основном теле запроса в where проверять,
    grouping_title like '%Железо%'
    and grouping_title like '%Дерево%'
    and grouping_title like '%Медь%'
    PS: На Оракле такой подзапрос делается с помощью функции LISTAGG(), в каждой конкретной среде SQL есть своя реализация или велосипед. Могу накидать решение для Оракла.
  • Как запретить копировать текст с сайта с помощью js?

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

    @alexalexes
    Если вам не надо одни и те же лайки вешать на разные посты, то второй вариант вам ни к чему.
  • Как получить каждую N-ю строку в mysql?

    @alexalexes
    Вам нужно пронумеровать записи по порядку следования msisdn?
    Или получить каждую N-ю запись из таблицы tb_used_code?
    Или по одной N-ой записи в пределах каждого msisdn?
  • Как сохранить на странице динамически добавленные элементы HTML?

    @alexalexes
    Редактирование HTML структуры происходит через определенный WYSIWYG редактор или у вас своя реализация?
    Если используется WYSIWYG редактор, то в некоторых есть функционал автосохранения, нужно просто выбрать тот, который имеет доступную документацию и понятный интерфейс конфигурирования. Иначе вам придется писать очень большой костыль на всевозможные пользовательские и временные события ввода.
  • Как положить нужные ключи в массив?

    @alexalexes
    Если эти массивы получены полной выборкой таблиц БД и вы хотите сравнить между собой, то попытайтесь написать такой запрос, который возвращает только результирующие данные (совпадения записей).
    Это позволит не фетчить все подряд, а работать с тем, что необходимо php-скрипту.
    Такой подход вас заставит изучить типичные синтаксические конструкции SQL и писать качественные запросы.
  • Как положить нужные ключи в массив?

    @alexalexes
    Kvandaik, как правило, когда хотим получить некую результирующую выборку данных между двумя таблицами, в 99% случаях хватает правильно написанного запроса с соединением этих таблиц с помощью JOIN.
    При помощи SQL-запроса решение многих задач выборки и фильтрации данных выглядят более компактнее, лаконичнее и производительнее в отличие от foreach в PHP.
  • Как изменить формат даты публикации в дополнении Articles?

    @alexalexes Автор вопроса
    Что предпренималось для отладки этой ошибки:
    Модуль, который давал кириллический формат publishedon и publishedon_date дат найден по пути:
    \htdocs\core\components\articles\processors\article\getlist.class.php
    А также в (я так понимаю, это инсталлированная копия):
    \htdocs\core\packages\articles-1.7.11-pl\modCategory\14e4dec8f7fa2803c83b7f7266025282\0\articles\processors\article\getlist.class.php
    Было:
    ....
    if (!empty($resourceArray['publishedon'])) {
            	$publishedon = strtotime($resourceArray['publishedon']);
                $resourceArray['publishedon_date'] = strftime($this->modx->getOption('articles.mgr_date_format',null,'%b %d'),$publishedon);
                $resourceArray['publishedon_time'] = strftime($this->modx->getOption('articles.mgr_time_format',null,'%H:%I %p'),$publishedon);
                $resourceArray['publishedon'] = strftime('%b %d, %Y %H:%I %p',$publishedon);
            }
    ....

    Стало:
    if (!empty($resourceArray['publishedon'])) {
            	$publishedon = strtotime($resourceArray['publishedon']);
                $resourceArray['publishedon_date'] = strftime($this->modx->getOption('articles.mgr_date_format',null,'%d.%m.%Y'),$publishedon);
                $resourceArray['publishedon_time'] = strftime($this->modx->getOption('articles.mgr_time_format',null,'%H:%I %p'),$publishedon);
                $resourceArray['publishedon'] = strftime('%d.%m.%Y %H:%I %p',$publishedon);
            }

    То есть, поменял маску формата strftime все, что может генерировать символические имена компонент даты на числовую маску %d.%m.%Y
    В логе ошибок, в объекте, который проходит через JSON в этом publishedon формат поменялся:
    [deletedby] => 0
                [publishedon] => 12.02.2019 12:12  /* тут был неверный формат даты с корокозяброй Džנ12 - сокращенное название месяца или недели*/
                [publishedby] => 1

    А в другом атрибуте publishedon_date, так и остался прежним с кривой кириллицей:
    createdby_username] => admin
                [tags] => 
                [comments] => 0
                [publishedon_date] => Džנ12     /* а тут формат даты остался неправильный !!!!!! */
                [publishedon_time] => 12:12

    Пробовал сбросить кэш Modx, кэш сайта, переустановить компонент Articles, пересоздать ресурс "новость" и вложенные объекты, почистить каталог core/cache , подождать пару часов если кэш сам сбросится - ничего не помогает.
    Есть вариант правильно подставить английскую локаль перед вызовом списка новостей, но я не уверен, что правильно определю место вызова этого списка. Я думаю, эффективней было бы просто поменять формат даты для поля "опубликовано", чтобы оно не было привязано к локали, но не вышло.
    Какие модули ModX могут еще влиять на вывод списка новостей в админке?
  • Как вызвать функцию, если значение оператора if == false?

    @alexalexes
    Главное, разберитесь, что лежит в def, а что в его свойстве value.
    Для этого поставьте в отладчике браузера точку останова на этой строчке:
    if (def.value == 488)
    и после нажатия submit проследите с помощью наведения мышки на def, а потом на value, что они из себя представляют.
  • Не идёт отсчет после ввода числа( ошибок нету)?

    @alexalexes
    Где-то нужно хранить текущее отминусованное состояние между вызовами go(), можно в input.value обновлять его.
    https://jsfiddle.net/2u9raep5/5/
    Можно глобальную переменную ввести window.myInput поместить, как сделал я в решении.
  • Как добавить несколько строк в БД одной формой?

    @alexalexes
    Сколько раз выполните эту сточку, столько и будет вставок БД:
    $result = $mysqli->query("INSERT INTO ".$db_table." (date, name, position, company, object, time) VALUES ( '$today' , '$rab1', 'Марс', 'Кратор1', 'обустраивание бункера1' , '8')");

    PS: По поводу вставок параметров в запрос.
    Если параметры пришли из пользовательской формы, то вклеивать в строку запроса их - дурной тон.
    ....VALUES ( '$today' , '$rab1', .....
    Не выносите этот опыт дальше учебной практики, это не безопасно с точки зрения хакинга в реальных системах.
    Используйте функции подготовки запроса и безопасной привязки параметров запроса.
  • PHP не делает проверку на количество символов. В чём проблема?

    @alexalexes
    А зачем вы отрицание вставляете, намеренно переводите целое число в булевый тип и хотите при этом что-то получить внятное для понимания?
    Ну попробуйте:
    В случае если длина строки положительна, то имеем такое преобразование int -> bool:
    (false >= 5 && false < 25)
    В случае если длина строки нулевая, то имеем такое преобразование int -> bool:
    (true >= 5 && true < 25)
    PS: Короче говоря, конструкция !strlen($_POST["username"]) эквивалента вопросу "Строка пуста?".
  • Как избежать ошибки 500 при работе с VK API?

    @alexalexes
    Правильно прощупывать элементы в массиве либо через isset():
    if (isset($_POST['submit']))
    либо через array_key_exists():
    if (array_key_exists('submit', $_POST))
    Все остальные попытки получить что-то по ключу submit из массива будут засорять лог в той или иной степени.
  • Переборка массивов. Как реализовать?

    @alexalexes
    Тут 3 идентичных массива. Может тут ошибка при копипасте?
    Array ( [2] => Array ( [n] => 1 [d] => 1 [p] => ) [3] => Array ( [n] => 2 [d] => 2 [p] => ) [4] => Array ( [n] => 3 [d] => 3 [p] => ) [5] => Array ( [n] => 4 [d] => 4 [p] => ) [6] => Array ( [n] => 5 [d] => 5 [p] => )

    Array ( [2] => Array ( [n] => 1 [d] => 1 [p] => ) [3] => Array ( [n] => 2 [d] => 2 [p] => ) [4] => Array ( [n] => 3 [d] => 3 [p] => ) [5] => Array ( [n] => 4 [d] => 4 [p] => ) [6] => Array ( [n] => 5 [d] => 5 [p] => )

    Array ( [2] => Array ( [n] => 1 [d] => 1 [p] => ) [3] => Array ( [n] => 2 [d] => 2 [p] => ) [4] => Array ( [n] => 3 [d] => 3 [p] => ) [5] => Array ( [n] => 4 [d] => 4 [p] => ) [6] => Array ( [n] => 5 [d] => 5 [p] => )

    Что такое n - вы рассказали, а что такое d и p - нет.
    1-1-1
    1-2-1
    1-3-1
    1-1-2
    1-1-3
    1-1-4
    2-2-2

    Что обозначают каждые из этих столбцов чисел?
    По хорошему, чтобы сделать преобразование, то мало входных и выходных данных, нужны правила преобразования. Прежде чем писать код, их явным образом описывают и сверяют с тестовой выборкой. Без них никуда, если у вас не предполагается эти выборки загружать в нейронную сеть.
  • Не работает событие jquery?

    @alexalexes
    Можно еще сванговать, и предположить, что были попытки именовать события как onclick в тех способах, где должен использоваться click и наоборот.
    Пример кода приведите свой.
  • Почему в таком коде не работает вызов метода конструктора?

    @alexalexes
    Вероятно, вам нужно методом formatDate() оперировать датой из класса, а не передавать ее отдельно, могу подсказать один прием в JS.
    function Journal(date)
    {
      // При объявлении new выполняется функция Journal(). Считайте, что все, что вы пишите в контексте этой функции будет выполнено как конструктор.
    
      var that_class = this; // поскольку this может менять свой контекст в методах, введение отдельного указателя that_class позволит точно обращаться к this именно класса из любого контекста.
    
      that_class.date = date; // добавляем переменную date как свойство класса
      
      // получение даты в нужном формате
      that_class.formatDate = function()
      {
        return that_class.date.getDate() + '.' + (that_class.date.getMonth() + 1) + '.' + that_class.date.getFullYear();
      };
    }
    var Journal1 = new Journal(new Date(2018, 3, 5));
    console.log(Journal1.formatDate());