Задать вопрос
  • Как сформировать переменную и передать её в 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();
  • Как реализовать поиск элементов по критериям?

    @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"]) эквивалента вопросу "Строка пуста?".