• Есть ли резон идти в JS разработку?

    PQR
    @PQR
    Разработка на JavaScript - это в первую очередь фронтенд, вакансий очень много, есть выбор на любой уровень и на любые зарплаты ожидания.

    Но и фронтендом JavaScript не ограничивается, можно найти совершенно разные области применения.

    Изучай JavaScript - не прогадаешь!
    Ответ написан
    1 комментарий
  • Передаёт пустые значение в БД, как это решить?

    PQR
    @PQR
    Если это одна и даже страница, что отображает форму и позже принимает данные - сначала надо проверить, а в какой стадии мы сейчас находимся, мы?

    Предлагаю обернуть весь код отвечающий за вставку записи завернуть в
    if (!empty($_POST)) {
       // здесь код из ответа товарища quiplunar
       
    }
    Ответ написан
  • RedBean выдаёт ошибку после отправки формы. Что это может быть?

    PQR
    @PQR
    Судя по сообщению об ошибке, в файле W:\domains\Dino\signup.php на строке 73 происходит вызов метода ->store($здесь_какая-то_переменная) - так вот эта переменна имеет значение null, а ожидается что должен быть bean.

    Посмотрите код, возможно там опечатка в имени переменной или она не заполняется по ошибке.
    Ответ написан
    Комментировать
  • Как обновить записи у пользователя при добавлении новой записи другим юзером?

    PQR
    @PQR
    Я думаю, что запросы к бд каждые n-секунд - решение не эффективное.


    Зависит от СУБД. Если использовать классическую СУБД MySQL, то придётся делать запросы каждые n секунд.

    Если же использовать другие системы, например Redis, можно подписываться на новые записи и получать их реактивно. Но для этого и само приложение (PHP скрипт) должно работать постоянно, что является отдельной темой для изучения.

    Так что вопрос "не эффективности" скорее лежит в другой плоскости. Vk - это большая соцсеть. Но сколько у вас, конкретно в вашем приложении, планируется сообщений в секунду? Если это чатик местного сельпо и речь до сотнях сообщения в секунду или меньше - MySQL даже на средненьком хостинге справится по схеме "опрашиваем раз в несколько секунд, нет ли новых?", и это будет гораздо эффективнее с точки зрения трудозатрат на разработку, чем разбираться с демонтированным PHP и Redis.
    Ответ написан
    Комментировать
  • Как сделать присваивание до?

    PQR
    @PQR
    Функция array_search($login, $logins) должна искать в массиве логинов $logins, но на деле это вовсе не массив, а строка, которая выглядит как-то так: "/var/nginx/html/data/login.php".

    Подозреваю, что массив логинов находится в файле login.php в таком виде:
    <?php
    return [
      'admin',
      'user1',
      'Ivan'
    ];
    ?>


    Тогда подключать этот файл нужно следующим образом:
    $logins = require $_SERVER['DOCUMENT_ROOT'] . '/data/login.php';
    Ответ написан
    Комментировать
  • Как сделать отправку файла на введенный в форму E-mail?

    PQR
    @PQR
    Для отправки файла на E-mail из PHP можно воспользоваться стандартными функциями отправки почты, но удобнее использовать библиотеку, например, Swfitmailer: https://swiftmailer.symfony.com/docs/introduction.html

    Код отправки может быть примерно таким:
    // Create the Transport
    $transport = (new Swift_SmtpTransport('smtp.gmail.com', 993))
      ->setUsername('your_email_account@gmail.com')
      ->setPassword('your password')
    ;
    
    // Create the Mailer using your created Transport
    $mailer = new Swift_Mailer($transport);
    
    // Create a message
    $message = (new Swift_Message('Тема сообщения'))
      ->setFrom(['your_email_account@gmail.com' => 'John Doe'])
      ->setTo($_POST['to']) // на форме должно быть поле <input name="to">
      ->attach(
        Swift_Attachment::fromPath('/path/to/file.pdf')
      );
    
    // Send the message
    $result = $mailer->send($message);
    Ответ написан
  • Как можно вывести отдельный блок в зависимости от выбранного наименования в выпадающем списке?

    PQR
    @PQR
    Вы сравниваете супенрглобальную переменную $_POST с числом: if($_POST=1), тут несколько ошибок:
    1) сравнение делается с помощью двойного знака равенства ==
    2) сравнение $_POST с числом не имеет смысла, т.к. $_POST - это массив, а не число.

    Нужно сравнивать так: if($_POST['polling ']==1)

    3) В через if/else конструкций не верно расставлены скобки, там вся логика нарушена (хотя чисто случайно синтаксический всё оказалось верно)
    Ответ написан
    Комментировать
  • Почему не работает перебор по ссылкам в foreach php?

    PQR
    @PQR
    Если я правильно понял условие задачи, то массив $ssil12 содержит ссылки (в смысле url страниц, которые нужно обработать).

    Далее в цикле вы перебираете этот массив и каждую отдельную ссылку в итоге передаёте в вызов функции str_get_html($https);

    Но судя по документации (https://simplehtmldom.sourceforge.io/manual.htm) принимает на вход не ссылку, html код страницы. Таким образом вы забыли скачать саму страницу по ссылке, например, так:
    $content = file_get_contents($https)
    $domObject = str_get_html($content);
    Ответ написан
    Комментировать
  • Как правильно изменить реализацию шаблона репозиторий подгружаемого с помощью интерфейсов для инициализации модели?

    PQR
    @PQR
    Чтобы конкретно этот метод buildOrderDetails не вызывал внутри new ProductRepository, код нужно переписать так:

    class OrderRepository extends BaseRepository implements OrderRepositoryInterface
    {
        use OrderTransformable;
    
        public function __construct(Order $order, ProductRepositoryInterface $productRepo)
        {
            parent::__construct($order);
            $this->model = $order;
            $this->productRepo = $productRepo;
        }
    
        public function buildOrderDetails(Collection $items)
        {
            $items->each(function ($item) {
                $product = $this->productRepo->find($item->id);
                if ($item->options->has('product_attribute_id')) {
                    $this->associateProduct($product, $item->qty, [
                        'product_attribute_id' => $item->options->product_attribute_id
                    ]);
                } else {
                    $this->associateProduct($product, $item->qty);
                }
            });
        }
    Ответ написан
    Комментировать
  • Можно ли как-то получить картинку?

    PQR
    @PQR
    Я не работал непосредственно с MTProto из PHP, но судя по описанию типа приватного свойства bytes "danog\MadelineProto\TL\Types\Bytes" - это набор байт. Можно попробовать сохранить его в файл в и посмотреть с помощью любой программы открывающей изображения: file_put_contents($bytes);
    Ответ написан
    Комментировать
  • Почему input увеличивает число на количество блоков где он вызван?

    PQR
    @PQR
    Ваш код написан верно. Я не поленился и даже его запустил: https://jsbin.com/kusobaheyu/edit?html,js,output - всё работает нормально.

    Возможно, на странице есть ещё какой-то код, который приводит к описанному багу.
    Ответ написан
    Комментировать
  • Почему не получается обновить версию node.js через командную строку?

    PQR
    @PQR
    Пакет, который вы устанавливаете с помощью команды npm i -g n - это https://www.npmjs.com/package/n - он вообще не работает на Windows (и дело тут не в лицензионности или бедности операционной системы). В Readme прямо так и написано:
    Note: n is not supported natively on Windows.
    Ответ написан
    Комментировать
  • Как подгружать картинку при клике на таб?

    PQR
    @PQR
    Современные версии браузеров поддерживают ленивую загрузку изображений, если к тегу img добавить атрибут loading="lazy":

    <img src="..." loading="lazy" />

    Подробнее: https://habr.com/ru/company/ruvds/blog/448914/
    Ответ написан
    Комментировать
  • Как заменить текст в полученном письме с помощью regexp?

    PQR
    @PQR
    Эту задачу можно решить с помощью скрипта на PHP.
    Весь код писать не буду, но алгоритм следующий:

    1. Подключаемся к почтовом ящику с помощью одной из библиотек для работы по IMAP: https://packagist.org/?query=imap (например, php-imap/php-imap)

    2. Читаем все письма из папки inbox

    3. Для каждого письма проверяем отправителя - если это тот самый отправитель, идём дальше

    4. Получаем текст сообщения в виде строки в переменной, допустим $body

    5. Заранее нужно заготовить примеры "мусорного текста", которые хотим вырезать. Для примера пусть они будут записаны в PHP коде в виде массива в константе TO_BE_DETELED_TEXTS

    Удаляем эти мусорные фрагменты из текста письма:
    $newBody = 
    str_replace(self::TO_BE_DETELED_TEXTS, '', $body);


    6. С помощью всё-той же библиотеки для работы почтой (из шага 1), отправляем письмо с новым текстом дальше на целевой почтовый ящик. Обратите внимание, что отправитель (поле from) поменяется, так что при отправке рекомендую в тело нового письма ($newBody) и в поле "reply to" добавить информацию об оригинальном авторе письма, чтобы читающий знал кому потом отвечать.
    Ответ написан
  • Не определяет свойство объекта в цикле, в чем причина?

    PQR
    @PQR
    В вашем коде используется глобальная переменная tow, которая на момент вызова getDistr() пуста, она ещё не успевает заполнится данными от вызова API Яндекс.Карт.

    Вообще глобальные переменные лучше не использоваться, а передавать tow непосредственно в getDistr(tow) в качестве аргумента, и не в самом начале работы скрипта, а после получения ответа от API (в блоке then).

    Но я проверил с помощью console.log что именно возвращает вызов в API Яндекс.Карт - он возвращает пустую строку. Так что в этом скрипте ещё нужно внимательно разобраться, как работать с API Яндекс.Карт.
    Ответ написан
    3 комментария
  • Почему не срабатывает скрипт из под крона в битрикс?

    PQR
    @PQR
    Попробуйте использовать полный синтаксис открывающий PHP код: <?php

    Итого, последняя строка должна выглядеть так:
    <? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");?>


    Короткий синтаксис (только углов скобка и вопрос) считается устаревшим и depricated. Он может работать в зависимости от настроек PHP на хостинге (регулируется настройкой short_open_tag=On), но лучше его избегать. Современный подход, это писать полностью: <?php или <?=
    Ответ написан
    Комментировать
  • Как сделать composer install внутри docker контейнера?

    PQR
    @PQR
    Чтобы composer не ругался на root/super user, нужно установить переменную окружения
    ENV COMPOSER_ALLOW_SUPERUSER 1
    https://getcomposer.org/doc/03-cli.md#composer-all...
    Ответ написан
    Комментировать
  • Постоянно запущенный скрипт на PHP, как реализовать?

    PQR
    @PQR
    Это можно сделать на ReactPHP, который по сути всегда запущен на сервере и работает в режиме event loop (как Node.js) https://reactphp.org/
    Ответ написан
    Комментировать
  • Существуют ли в природе реализации блокчейн на PHP от и до?

    PQR
    @PQR
    Один человек уже написал боокчейн на PHP: https://habrahabr.ru/company/dcoin/blog/272695/ - посмотрите, может там где-то ссылка на исходники есть или спросите у автора. Правда, потом его бросила девушка и он переписал всё на Go.
    Ответ написан
    1 комментарий
  • Как включить автоматическое показывание всех файлов?

    PQR
    @PQR
    Поставить курсор внутрь кавычек и нажать ctrl+space (Basic Completition)
    0b971f11afa947fdbd31ca18beb439f2.png

    Если же в настройках PhpStorm в разделе Editor -> General -> Completition поставить галочку "Autopopup code completition", то этот список файлов будет выпадать автоматически сразу после набора кавычек на клавиатуре.
    d7a588e110814e39a41121d7dfc4f840.png
    Ответ написан
    Комментировать