Задать вопрос
Ответы пользователя по тегу PHP
  • Как правильно составить SQL запрос SELECT PDO PHP для получения данных по двум строкам?

    @rPman
    так как не сказано какая именно логика в запросе должна быть при нулевых значениях, я выбрал в примере вариант - и в базе тоже нули.
    select .. from ... where ... and (:product_group is null and `product_group` is null) or (`product_group` = :product_group)

    чтобы один и тот же параметр в запросе использовать несколько раз, используй пользовательские переменные (живут до конца сессии), т.е. выполняешь два запроса, первый
    set @product_group=:product_group
    а уже в самом запросе вместо :product_group используешь @product_group
    Ответ написан
    Комментировать
  • Как сделать закрытый доступ для страницы на php и mysql?

    @rPman
    digest http auth
    настоятельно рекомендую не использовать этот метод авторизации (да и любой) без https
    Ответ написан
    Комментировать
  • Как вывести информацию с БД массивом?

    @rPman
    в $query->execute(['ref' => $my_ref[0]]); данные массивом передались.

    к сожалению биндинг в pdo не умеет работать с массивами, каждый параметр должен быть конечным объектом (число., строка...)

    так же чтобы условие в sql обрабатывало массив нужно использовать выражение
    select ... from ... where id in (1,2,3,4,...)

    поэтому чтобы решить указанную задачу нужно формировать sql запрос по старинке (без использования prepare и биндингов), естественно аккуратно к значениям, либо валидировать их что они являются числами, а если должны быть строки - то правильно экранировать

    $sql='select ... from ... where id in ('.implode(',',$id_array).')'

    Так же проверь что массив идентификаторов не пустой, так как иначе будет ошибка в sql

    p.s. осторожно, количество значений в 'id in' лимитировано (кажется 1000), если инужно больше, то придется создавать временную таблицу, заливать в нее искомые идентификаторы и строить запрос с left join

    Еще я встречал похожий метод но с использованием биндингов, когда sql запрос генерировался вида:
    select ... from ... where id in (?,?,?,?,...)
    с нужным количеством ? тогда передав массив напрямую в execute можно получить результат, лимит на количество ? еще меньше, это определяется драйвером базы данных.

    p.p.s. и совсем сверху на засыпку методика, ее имеет смысл использовать когда со стороны клиента фильтруемых данных больше чем 1 поле (например 2 массива точнее таблица с несколькими колонками) и очень не хочется заполнять в базе временную таблицу с этими данными (это очень сильно роняет производительность) то можно сформировать внутри sql таблицу из константных данных:
    select ... from ...,
    (
      select ? as col1,? as col2
      union select ?,?
      union select ?,?
    ...  
    ) x where ...
    Ответ написан
    4 комментария
  • Как можно вытащить стоимость товара из сайта конкурента?

    @rPman
    цена на сайте не формируется скриптом, т.е. достаточно загрузить эту страницу и разобрать например simple_html_dom
    Ответ написан
    Комментировать
  • Как оптимизировать генератор слов на PHP?

    @rPman
    Этот алгоритм пытается сохранить все сгенерированные слова в памяти, это 64^5 строк на это никакой оперативки не хватит

    Вместо
    $words[] = $prefix;
    вставь свой код, который сейчас в цикле
    // My Code ...

    либо оформи его вызов через анонимную функцию, так синтаксически будет красивее
    Ответ написан
    Комментировать
  • Как лучше и проще организовать на сайте RealTime notification?

    @rPman
    современное решение - websocket (позволяет серверу слать сообщения веб-клиентам)

    поддерживается всеми браузерами, есть огромное количество реализаций сервера, в т.ч. на php (рекомендую reactphp асинхронный, на нем же и сам http бакэнд делать нормально, а nginx снаружи проксирует запросы)
    Ответ написан
    Комментировать
  • Как регуляркой извлечь из html-кода элемент с определённым классом?

    @rPman
    так и не понял почему нельзя использовать адекватные инструменты?
    simple_html_dom например?
    Ответ написан
    3 комментария
  • Как регуляркой не просто удалить, но и возвратить удаляемое из строки?

    @rPman
    preg_replace_callback не подходит? будет вызывать твой метод для обработки каждого найденного вхождения чтобы получить строку, на которую ее нужно заменить
    Ответ написан
  • Как устроить поиск и вывод всех найденных значений из csv файла PHP?

    @rPman
    фильтрацию по значению лучше проводить с помощью сторонних инструментов оптимизированных по максимуму
    например grep отфильтрует по содержимому строки, можно по регулярке

    а из php работать с помощь - fopen, цикл !feof и fgetcsv
    p.s. fgetcsv сильно медленней простого чтения по строкам fgets, но он умеет читать строки с экранированными ковычками '"', так что если таковых нет то работай с текстом напрямую
    Ответ написан
  • Как избавиться от одновременных запросов в PHP?

    @rPman
    'запросы в базу данных' в принципе не должны позволять делать двойную трату, причем все финансовые транзакции должны подразумевать что их могут дублировать, подделывать, отменять в процессе выполнения, включая проблемы с железом (например переполненный диск) правильное тестирование финансового сервиса должно пережить не только издевательство клиентов, но и проблемы с самим сервером.

    на любой чих нужны проверки статусов, а не делаете ли вы сейчас эту же операцию (уже ответили, в условие обновления ставишь проверку статуса, и все параллельные запросы отвалятся на этом моменте)
    Ответ написан
    Комментировать
  • Как вывести текст на страницу PHP не привязывая PHP скрипт к странице?

    @rPman
    если я верно понял вопрос по комментариям, это javascript injecting, сделать это можно только на стороне клиента (плагином к браузеру или командой в консоли)

    Например плагин к браузеру удобный tempermonkey, позволяет запускать пользовательский javascript в зависимости от url (по маске например example.org/path/*)
    Ответ написан
    Комментировать
  • На своем сайте выложить часть другого сайта, по верх всех окон. Как сделать?

    @rPman
    скорее всего это тот сайт детектирует открытие себя в iframe и предотвращает, так как это позволяет использовать очень серьезную уязвимость clickjacking
    Ответ написан
  • Как использовать javascript для junior backend разработчика на php?

    @rPman
    it это наиболее динамичный (быстро развивающийся и меняющийся) 'рынок'

    если ты хотя бы на пару тройку лет перестанешь изучать (хотя бы просто интересоваться) чему то новому, ты выпадаешь из реальности и начинаешь отставать, 'Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее' (c)...

    веб стек один из самых сложных, и затрагивает сразу много технологий, и языки программирования - далеко не единственные из них

    мой совет, пока ты junior - изучай все до чего дотягиваешься, считай тебе дана возможность повысить свой скил за счет работодателя, как бы некрасиво это не звучало.
    Ответ написан
    Комментировать
  • Как проверить и вывести элементы массива с большой буквы (если они есть)?

    @rPman
    кто же так задание формулирует
    слова - элементы массива? игнорировать ли небуквенные символы? пустые строки? про кодировку я молчу...

    есть в php функция ctype_upper - скармливаешь ей в цикле первые символ каждого элемента и если true то выводишь его
    foreach($mas as $word) if(ctype_upper($word[0])) echo "$word ";


    есть тут любители не циклов, может array_walk использовать?
    Ответ написан
  • Можно на php сделать websocket-ы и почему все предпочитают на node.js?

    @rPman
    что значит все?
    лично мне не нравится nodejs мне оно показалось медленней php (хотя чистый helloworld сервер работает примерно в 2 раза быстрее)

    асинхронный php реализован неплохо в reactphp, там тебе и вебсокеты, и веб сервер и вообще все вкусное из мира nodejs
    Ответ написан
    Комментировать
  • Как лучше писать парсер (PHP)?

    @rPman
    Современный веб это больше про javascript а не про генерацию страниц на бакэнде (а часто и то и другое), плюс для анализа сайта бывает проще работать с dom в браузере, открыв страницу и синжектив свой код например с помощью tempermonkey или с помощью selenium

    Так что все зависит от твоего целевого сайта

    По теме, если прямо надо парсить html именно на php то я рекомендую simple_html_dom, простой удобный... но он спасовал со страницами aliexpress (этот сайт борется с парсерами, даже если брать страницу уже после javascript), можно пользоваться более низкоуровневым DOMDocument::loadHTMLFile, он не такой удобный но менее строгий
    Ответ написан
    Комментировать
  • Как печатать из PHP на сетевом принтере?

    @rPman
    php тут будет только как посредник, вызывать консольные утилиты
    если машина на windows, слать чем то типа lpr
    если машина на linux, то lp (пакет cups-client)

    p.s. ну и помним, с принтером можно работать на низком уровне, выдавая текст прямо в его порт (lpt или виртуальный, который устанавливается с драйверами) если это принтер чеков, то явно там может хватить тупо текста, т.е. просто открываешь файл порта и пишешь в него нужный текст

    если добудешь доку по принтеру можешь и управляющие команды использовать, они прямо в текст вставляются
    твой принтер гуглится в связке с linux, т.е. драйвера в опенсорсе есть так что информацию найти можно будет
    Ответ написан
    Комментировать
  • База данных MySql, как сделать переменную, с индивидуальным значением для всех аккаунтов?

    @rPman
    Если по каким то причинам таблицу для данных создавать не желаете
    то можно использовать вьюху или хранимую процедуру, в которой прописываете буквально все значения от пользователя (или любых других условий)
    SELECT CASE
      WHEN USER() =='one@localhost' THEN 1
    ...
      ELSE 0
    END

    т.е. местом хранения тут будет код хранимой процедуры или вьюхи а для ее обновления потребуется вызов ddl
    Ответ написан
    Комментировать
  • Как объединить N-ое количество mp3 в один?

    @rPman
    ffmpeg умеет работать со всем видом медиа файлов, так же умеет работать с ftp/http протоколами так что достаточно разобрать json, сформировать команду вызхова ffmpeg утилиты и получить результат

    вот дока с примерами
    Ответ написан
    2 комментария