Задать вопрос
Ответы пользователя по тегу PHP
  • Как "активировать" часть php кода, если пользователь видит блок, в котором находится содержимое этого кода?

    @MadridianFox
    Web-программист, многостаночник
    Важно понимать, что сначала отрабатывает PHP, который формирует и отдаёт html, а уже потом. Браузер, приняв этот html, рендерит его, ну и если у чего-то там display:none, то не показывает этого.
    Вам надо сразу не генерировать этот div. Как это сделать зависит от того кода который у вас уже есть.
    Ответ написан
  • Как разбить запись в cvs из mySQL на столбики в Excel'e?

    @MadridianFox
    Web-программист, многостаночник
    Нади использовать не запятые, а точки с запятой.
    Ответ написан
    3 комментария
  • На каком хостинге делать большой проект?

    @MadridianFox
    Web-программист, многостаночник
    Делайте сразу в контейнерах и размещайте там где они могут запускаться. Если проект взлетит, то без проблем перенесёте в облако. Более того, грамотная работа с контейнерами сразу заставит вас организовать масштабируемую архитектуру.
    В случае с быстрым выжиранием диска, лучше сразу идти в облако. Всякие там S3 с одной стороны могут дать вам условно неограниченное, а главное сразу масштабируемое хранилище. Ну и так же заставят вас использовать чуть более грамотный подход, чем "сразу в лоб" класть файлы на диск, а потом мучиться с масштабированием.
    Ответ написан
    Комментировать
  • Как вывести информацию о Raspberry pi на сайт?

    @MadridianFox
    Web-программист, многостаночник
    Надо чтобы малина отправляла телеметрию на сайт.
    Т.е. на сайте есть специальный эндпоинт, который, ну допустим, принимает json/xml/etc... и пишет значения из него в базу.
    Надо просто периодически делать http запрос, и передавать туда температуру полученную с малины.
    Это можно сделать как самой малиной, если с неё есть выход инет, либо можно держать малину подцепленную к ПК, и пусть ПК уже получает данные с малины и делает тот же запрос на сайт.

    Ну а на сайте уже читаем последнюю запись из базы и выводим на страницу. Если интересно хранить все пришедшие с малины записи, то ещё и графики строить можно)

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

    @MadridianFox
    Web-программист, многостаночник
    Используя ...$arr вы не получите ключи в массиве. Поэтому почему бы не сделать третий агрумент обычным агрументом, и не передавать туда массив, который без изменений будет передаваться в execute?
    public function query($sql, $class, $params){ // $params = [":age"=>20]
            $sth = $this->dbh->prepare($sql);
            $res = $sth->execute($params); // <----
            if (false !== $res) {
                return $sth->fetchAll(\PDO::FETCH_CLASS, $class);
            }
            return [];
        }
    Ответ написан
    Комментировать
  • Как получить количество заказов за сегодня?

    @MadridianFox
    Web-программист, многостаночник
    $day_orders = $db->query("SELECT COUNT(*) as cnt FROM 'oc_order' WHERE 'date_add' >= CURDATE() ");
    echo $day_orders['cnt'];
    Ответ написан
    7 комментариев
  • Как подгружать новости не в хронологическом порядке?

    @MadridianFox
    Web-программист, многостаночник
    Просто используйте постраничную навигацию:
    SELECT *, something FROM `news`
    WHERE (некое условие для фильтрации по категориям) AND  date < "time of page hit"
    ORDER BY `something` ASC
    LIMIT 20, 20

    Я добавил в этот запрос всего два маленьких изменения. Первое - задал смещение для LIMIT, его надо высчитывать на PHP и вставлять в запрос. Первая цифра это просто номер страницы минус один, умноженное на количество постов на странице (page_num-1)*page_size. Вторая цифра - как обычно, количество постов на странице.
    Второе измененеие - добавил в where дополнительное условие: выбирать только те новости, которые уже были в базе, пользователь открыл страницу. Это необходимо, т.к. если в процессе подгрузки новостей добавится ещё одна, то страницы поедут (вы могли замечать это, когда листаете хабр и на следующей странице первым виден последний пост с предыдущей) и какая-то новость задублируется в общем списке на клиенте. Time of page hit должно храниться на клиенте и передаваться на сервер при подгрузке каждой следующей порции данных.

    Этот метод не зависит от того как вы сортируете новости - по дате, рейтингу, любому другому полю... главное чтобы первая подргузка и все последующие сортировались одинаково.
    Ответ написан
    5 комментариев
  • Как узнать какие файлы php сейчас исполняются?

    @MadridianFox
    Web-программист, многостаночник
    В списке процессов должно быть видно что выполняется скрипт.
    Кроме того, вы можете добавить в свой скрипт разного рода вывод в консоль (или сразу в файл), а при запуске скрипта через крон перенаправить вывод в файл. Далее уже этот файл открываете с помощью tail с опцией непрерывного чтения (насколько помню tail что-то такое умеет), ну и в реалтайме наблюдать что выводит скрипт запущенный через крон.
    Ответ написан
    Комментировать
  • Вынесение в трэйты работы с API платёжных систем, можно ли?

    @MadridianFox
    Web-программист, многостаночник
    Платёжные системы потому и можно назвать общим понятием "платёжные системы" потому что они предназначены для выполнения каких-то сходных операций. Если вы хотите иметь возможность подменять их или соединять друг с другом в разных комбинациях - вам необходимо привести их к общему интерфейсу, а все отличия инкапсулировать.
    Только так.. и это бигмак)
    Ответ написан
    Комментировать
  • Вызвать функцию класса и других функций(область видмости)?

    @MadridianFox
    Web-программист, многостаночник
    Лучший вариант - иметь одну точку входа, в которой создаётся подключение, и передавать это подключение вглубь только через конструкторы классов и аргументы методов.

    Более реалистичный вариант - выделение какого-нибудь service locator'а, который тоже лучше передавать руками, но часто его делают доступным глобально через static или singleton (который сам строится на static).

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

    @MadridianFox
    Web-программист, многостаночник
    А вам точно надо каждый раз делать run с одинаковым именем и без rm, а после этого exec?
    Ответ написан
  • Как передать ошибку пользователю в MVC?

    @MadridianFox
    Web-программист, многостаночник
    передавать через контроллер, но при этом придется совершать в нем множество проверок, типа проверка на уникальность пользователя, пустоту полей, идентичность паролей

    Этим вы делаете толстый контроллер. На самом деле форма - это модель. Это страница на которой есть своя логика, и в зависимости от действий пользователя она меняет своё состояние, которое и отображается пользователю.
    И вот логика формы реализуется в модели формы, которая в свою очередь может дёргать более глубокие слои приложения.
    Таким образом задачей контроллера становится только получение данных из http запроса, засовывание их в модель и вызов у модели одного-двух методов.
    Ответ написан
    Комментировать
  • Структура универсального каталога данных?

    @MadridianFox
    Web-программист, многостаночник
    Вангую - щас понабегут люди с советами типа "юзай mongodb"...
    Вообще можно использовать EAV. Это когда атрибуты сущности хранятся не горизонтально (столбцы в таблице), а вертикально (один атрибут - одна строка). Дополнительно нужны таблицы, которые будут хранить список типов сущностей, список типов атрибутов и связи типов сущностей и типов атрибутов.

    Но предупреждаю - есть ощутимое проседание по быстродействию, да и работать с этим может быть не так удобно.
    В случае, когда необходимо соорудить хранилище для однотипных сущностей с опциональными атрибутами, например каталог товаров, где всё есть товар, но у холодильника есть мощность, а у смартфона - количество мегапикселей это в самый раз.
    Так вот, в таком случае быстродействие по фильтрации достигается через создание отдельного индекса, может даже с использованием отдельного ПО, такого как Sphinx.
    Ответ написан
    7 комментариев
  • Cron не может найти класс из подключаемого файла?

    @MadridianFox
    Web-программист, многостаночник
    Логично, в php запущенном из консоли нет document_root
    Ответ написан
  • Почему не добавляются запись в БД на Denwer?

    @MadridianFox
    Web-программист, многостаночник
    После вызова mysql_query добавьте вызов mysql_error и посмотрите какую строку он вернёт.
    Ответ написан
  • Получить массив в js через ajax?

    @MadridianFox
    Web-программист, многостаночник
    JSON.parser принимает строку и делает из неё объект/массив, в вашем случае это объект.
    Если вы используете jQuery для выполнения ajax запросов то достаточно будет указать dataType:"json" и результат сразу будет в виде объекта.
    Ответ написан
  • Как запустить php скрипт при помощи plink или из bat-файла?

    @MadridianFox
    Web-программист, многостаночник
    Возможно команда иначе называется. Или же на сервере совсем нет php.
    Ответ написан
  • Что почитать о динамическом выводе данных с сервера, без перезагрузки страницы?

    @MadridianFox
    Web-программист, многостаночник
    Если хотите много динамики на странице, то смотрите в сторону SPA (Single Page Application), т.к. jQuery лапша с ростом количества динамических частей на старнице начнёт запутываться.
    Но это отнюдь не "не очень сложное", т.к. мир SPA фреймворков это наверное одна из самых быстро развивающихся областей программирования.
    Ответ написан
    Комментировать
  • Как решить эту проблему?

    @MadridianFox
    Web-программист, многостаночник
    Где-то есть редирект с www на без www, вот оно по кругу и редиректит. Браузер это заметил и выкинул ошибку.
    Ответ написан
    Комментировать
  • Возможно ли сымитировать загрузку файла на сервер, если операция проходит на локальном ПК и установленном на нем Openserver?

    @MadridianFox
    Web-программист, многостаночник
    У вас в запросе на добавление данных в БД используется переменная $screenshot, но нигде выше (в предьявленном куске кода) она не определяется.
    Вам необходимо получить из супеглобального массива $_FILES данные о загруженном файле, там будут название, размер и путь до временного файла. Обычно, при загрузке файлов берут временный файл и копируют туда где он будет лежать, а путь до этого самого "туда" записывают в базу.
    Загружать файл можно даже "на локальном ПК и установленном на нем Openserver".
    Ответ написан
    Комментировать