• Как сделать выборку из нескольких таблиц с помощью оператора IN?

    @alexalexes
    Опять же можно было обойтись одной таблицей:
    EVENT
    id - идентификатор события,
    event_type_id - тип события, внешний ключ,
    date - дата события
    event - описание события.
    Справочник EVENT_TYPE
    id - идентификатор типа события,
    type_name - наименование типа

    Типичный запрос бы выглядел так:
    select t1.id, t1.event_type_id,  t2.type_name, t1.date, t1.event
    from event t1
    join evet_type t2 on t1.event_type_id = t2.id
    where
     (t1.event_type_id = 1 and Month(t1.date) = Month(STR_TO_DATE(:date, '%d.%m.%Y')) and Day(t1.date) = Day(STR_TO_DATE(:date, '%d.%m.%Y'))) -- так получаем периодичные события (тип id = 1 ), год в t1.date игнорируем
    OR
    (t1.event_type_id <> 1 and t1.date = STR_TO_DATE(:date, '%d.%m.%Y')) -- а так получаем не периодичные события, отличные от типа 1.

    Чтобы потом ввести еще один тип события, достаточно добавить в справочник этот тип, и если он имеет какие-то особенности, то поправить where.
  • Как сделать выборку из нескольких таблиц с помощью оператора IN?

    @alexalexes
    Все таки нужно изучить вашу предметную область, чтобы понять, зачем вы сделали две таблицы для однотипных сущностей, возможно, нужно было в структуру данных ввести какой-нибудь тип события, тогда бы не нужна была дублирующая вторая таблица, а нужна была бы таблица- справочник типов событий. Возможно и имеет смыл разделять данные на две таблицы, если у вас события отличаются, например, свойством периодичности, но опять же это нужно смотреть с высоты знания предметной области.
    Если вы тип события не добавили изначально в структуру, то будете эмулировать его в каждом запросе полем t_type, такой уж будет костыль.))
    select a.*
    from
    (
    
    select 'from_t1' t_type,  t1.date, t1.event from t1 where t1.date = :date
    
    union all
    
    select 'from_t2' t_type,  t2.date, t2.event from t2 where t2.date = :date
    
    ) a
  • Как сделать выборку из нескольких таблиц с помощью оператора IN?

    @alexalexes
    Пойдем другим путем. Приведите пример данных из таблицы t1 и t2, и пример данных выходной выборки, какую вы хотите получить запросом.
  • Как сделать выборку из нескольких таблиц с помощью оператора IN?

    @alexalexes
    Ну, соединяйте. Причем тут in?
    select t1.*, t2.*
    from table1 as t1
    join table2 as t2 on t2.id_to_table1 = t1.id -- вероятно, у вас сомнения, как пишется выражение в клаузе ON
    where t1.id in (1, 2, 5)
  • Как очистить textaria с помощью javascript?

    @alexalexes
    Давайте по аналогии.
    document - это озеро.
    Элемент textarea - это интересуемая конкретная особь рыбы, которая плавает в озере document.
    Чтобы ее выловить, нужно использовать что-то из рыболовного инвентаря:
    getElementById()
    getElementsByClassName()
    getElementsByTagName()
    querySelector()
    querySelectorAll();

    Есть удочки, которые достают ровно одну рыбу:
    var elem_1 = document.getElementById('my_fish');
    var elem_2 = document.querySelector('textarea');

    Однако, чтобы document.getElementById('my_fish') ловил нужную особь, необходима чтобы эта особь в документе имела искомый атрибут id:
    <textarea id="my_fish"></textarea>
    Метод document.querySelector('textarea') выловит первую попавшуюся рыбу.
    Однако, если textarea будет несколько в документе, чтобы использовать его, вам нужно быть уверенным, что интересуемая особь либо будет единственная на странице, либо идти первым по структуре документа.
    Собственно, если что-то поймалось, то можно с этим что-то сделать:
    elem_1.value = 'добавили текст в textarea';
    elem_2.value = 'добавили текст в textarea';

    Далее, есть рыболовные сети:
    var elements_1 = document.getElementsByClassName('fishes');
    var elements_2 = document.getElementsByTagName('textarea');
    var elements_3 = document.querySelectorAll('form div.row div textarea');

    Для getElementsByClassName нужно, чтобы рыбы имели такой опознавательный знак:
    <textarea class="fishes"></textarea>
    Метод getElementsByTagName('textarea') извлекает из озера все то, что имеет тег textarea.
    Метод querySelectorAll('form div.row div textarea') извлекает рыбу, которая залегает по определенному CSS-признаку.
    Отличительная особенность этих методов в том, что они могут поймать не одну рыбку за один присест, а несколько, поэтому, чтобы взаимодействовать с конкретной извлеченной рыбкой, нужно обратиться в рыбный садок по индексу:
    elements_1[0].value = "добавили текст в textarea";
  • Как очистить textaria с помощью javascript?

    @alexalexes
    Чтобы манипулировать элементами страницы, вам нужно изучить, как правильно пользоваться методами:
    getElementById()
    getElementsByClassName() (обратите внимание почему Elements, а не Element)
    getElementsByTagName (тоже самое)
    querySelector()
    querySelectorAll()
  • Как ограничить доступ к компоненту Опросы (Polls)?

    @alexalexes Автор вопроса
    Да, актуально. Зафиксировал Issue:
    1) https://github.com/himurovich/MODX-Polls/issues/49
    2) https://github.com/himurovich/MODX-Polls/issues/50
    Если нужно могу поправить формулировки проблем и выслать свою реализацию вам по прокси голосованию.
  • Как ограничить доступ к компоненту Опросы (Polls)?

    @alexalexes Автор вопроса
    У меня еще были свои хотелки реализовать такие вещи:
    1. Возможность фиксации голосов от пользователей, находящиеся за прокси-сервером. А то один пользователь за прокси проголосует, а другие оттуда же увидят, что они уже проголосовали.
    2. Добавить тип вопроса, позволяющий выбирать множество ответов.
    Первую возможность я реализовал, но не совсем получилось чисто написать код.
    Для второй я напишу issue.
  • Как ограничить доступ к компоненту Опросы (Polls)?

    @alexalexes Автор вопроса
    Поискал на github, не писали ли похожую проблему.
    Нашел https://github.com/himurovich/MODX-Polls/issues/4
    Этот проблемный вопрос закрыли.
  • Почему на клиенте при входе через Chrome не работает https://animate.css/?

    @alexalexes
    Darya Shvakh, путь сертификации в Chrome просматривается так:
    Клик по "замку" в адресной строке -> Сертификат -> Путь сертификации.
    В Firefox:
    Клик по "замку" в адресной строке -> "Соединение >" -> Подробнее -> Защита -> Посмотреть сертификат -> Подробности -> Иерархия сертификатов.
    Не знаю, проверьте этот момент, мне как-то доводилось видеть "опеку" антивируса в виде подстановки своего сертификата.
  • Почему на клиенте при входе через Chrome не работает https://animate.css/?

    @alexalexes
    6) Антивирус - отключен.

    А путь ssl сертификатов для этого сайта смотрели, не маячит ли там какой-нибудь корневой сертификат от Касперского?
  • Как преобразовать RGB в 1 из 24 цветов?

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

    @alexalexes
    xhr.open('POST', 'http://my-site.ru/');
    Вы прям в корень сайта шлете запрос и потом определяете, что такое обращение было по ajax-у (например, если бекэнд на php, наверное, в index.php где-то детектится $_SERVER['HTTP_X_REQUESTED_WITH'] )? или вы так упростили url для примера, что непонятно, где принимается на стороне сервера ajax запрос?
    Нужно отладкой посмотреть, что там, на стороне сервера твориться в момент отправки ajax-запроса. И точно определиться, куда вы будете слать его, потому что action формы указывает, что вы намереваетесь отправить форму на адрес текущей страницы (не обязательно это корень сайта), а ajax настроили на отправку в корень сайта, тут нужно четкое понимание куда полетит запрос, на какую страницу или метод, где его встретит код обработки.
  • Неориентированный граф с четырьмя вершинами возможно?

    @alexalexes
    Ну, вот решение (список ребер):
    А-B
    B-C
    C=D (тут два ребра)
    D-D (это петля)
  • Неориентированный граф с четырьмя вершинами возможно?

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

    @alexalexes
    Вы должны четко понимать, что реализация задачи отправки формы состоит из двух этапов:
    1) Вывод формы для заполнения пользователем;
    2) Обработка данных формы после отправки.
    Эти две функции можно реализовать в разных файлах (или модулях), либо в одном модуле.
    Если вы делаете это в разных модулях, то с помощью одного вы выводите только html-код этой формы, а в другом (предположительно, по url-адресу "/zakaz/sendemail.php", написание "../" говорит о том, что вы не понимаете различие url-адреса на стороне клиента от ftp-пути на стороне сервера) разбираете $_POST массив и делаете необходимые операции отправки данных из $_POST.
    Можно реализовать вывод формы и обработку результатов отправки в одном файле, но в коде этого файла должна четко отслеживаться фаза этой задачи.
    Например, это можно реализовать так:
    <?php
    if(isset($POST_['submit'])) // если в пост-массиве есть некоторые данные (в данном случае детектим данные кнопки 'submit'), которые возникают в момент отправки формы, значит скрипт должен работать в фазе обработки этих данных
    {
     $error = ''; // переменная для накопления ошибок ввода данных формы 
      print_r($_POST); // вывод пост-массива для отладки обработки формы 
      // тут реализуем обработку данных формы и отправку почты
    }
    ?>
    <form enctype="multipart/form-data" method="post" id="form" action="/zakaz/sendemail.php">
      <table ">
      <caption><h1 ><span>Оформление заказа</span></h1>
      <?php
      if(isset($_POST['submit'])) // если форму отправили, в этом месте html мы можем вывести текст ошибки или вывести успешный статус
      {
        echo $error != '' ? '<p>Ошибка: '.$error.'</p>' : '<p>Сообщение отправлено успешно!</p>'; 
      } 
       ?> 
    
       <div >
            <input name="p0" class="uk-input" type="text" placeholder="Укажите ваш адрес" value="<?php echo isset($_POST['submit']) ? $_POST['p0'] : ''; ?>">
        </div>
      
      </caption>
        <thead>
            <tr >
                <th>Название</th>
                <th>Количество</th>
                <th>Вес/Объём</th>
                <th>Примечание</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Название продукта</td>
                <td><input name="p[0][count]"   placeholder="Укажите количество" value="<?php echo isset($_POST['submit']) ? $_POST['p'][0]['count'] : ''; ?>"></td>
                <td><input name="p[0][type]"   placeholder="Объём или вес" value="<?php echo isset($_POST['submit']) ? $_POST['p'][0]['type'] : ''; ?>"></td>
          <td><input name="p[0][remark]"   placeholder="Примечание" value="<?php echo isset($_POST['submit']) ? $_POST['p'][0]['remark'] : ''; ?>"></td>
            </tr>
            <tr>
                <td>Название продукта</td>
                <td><input name="p[1][count]"   placeholder="Укажите количество" value="<?php echo isset($_POST['submit']) ? $_POST['p'][1]['count'] : ''; ?>"></td>
                <td><input name="p[1][type]" c  placeholder="Объём или вес" <?php echo isset($_POST['submit']) ? $_POST['p'][1]['type'] : ''; ?>></td>
          <td><input name="p[1][remark]"   placeholder="Примечание" <?php echo isset($_POST['submit']) ? $_POST['p'][1]['remark'] : ''; ?>></td>
            </tr>		
        </tbody>
    </table>
    <input type="submit" name="submit" value="Отправить заказ на почту"/> <!-- Обратите внимание на то, что у этой кнопки есть name, ее назначение - обнаружить данные в пост-массиве после отправки данных на этот же скрипт, обозначив тем самым фазу, когда нужно обработать данные -->
    </form>
  • Почему не работают функции mb_convert_encoding() и iconv()?

    @alexalexes
    Страница-источник на самом деле в кодировке utf8 отдается, а не в windows-1251, как это указано в html.
    Вот так будет работать:
    header('Content-type: text/html; charset=utf8');
      echo file_get_contents('http://antiko22.info/vse_novosti/dolg-pered-mfo-ne-mozhet-prevyshat-telo-zajma-bolee-chem-v-3-raza/');
  • Почему не работают функции mb_convert_encoding() и iconv()?

    @alexalexes
    mb_detect_encoding не надежен в этом деле, он может почуять любую кодировку символов в произвольной строке, и не обязательно это будет из распространенных windows-1251/koi8-r/utf8.
  • Почему не работают функции mb_convert_encoding() и iconv()?

    @alexalexes
    Можно вываливать контент в echo, просто сообщив кодировку вывода клиенту с помощью заголовка.
    Для версий PHP 5.6+ это нужно обязательно делать, неважно, что внутри html есть мета-тэг с кодировкой.
    header('Content-type: text/html; charset=windows-1251');
      echo file_get_contents('http://antiko22.info/vse_novosti/dolg-pered-mfo-ne-mozhet-prevyshat-telo-zajma-bolee-chem-v-3-raza/');
  • Почему не работают функции mb_convert_encoding() и iconv()?

    @alexalexes
    А под какую кодировку у вас сейчас PHP настроен?
    echo mb_internal_encoding();