Задать вопрос
  • Как грамотно реализовать пагинацию через класс?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Еще раз: Тут нет никакого ооп, у вас получается какой-то процедурный код, засунутый внутрь класса. Это к ооп не имеет никакого отношения. Не пытайтесь сделать деревянную печку, ничего хорошего не получится.
    У вас:
    Код реализует (такой себе) пэйджинг для одного конкретного запроса (нахрена такой пейджинг засовывать в класс?)
    Код ничего не инкапсулирует, тупо выполняется как функция. По сути если мы уберем class Paginate extends Connection{ то ничего не поменяется.
    Внутри методов используются глобальные переменные (GET), что само по себе уже лютый говнокод.
    Много слов про солид и прочие вещи из ооп не пишу, в виду полного их отсутствия в коде, да и смысл?

    По этому решения для вашего случая в контексте ооп просто нет, так как:
    Пэйджинг работает с моделями на основе ОРМ, в пэйджинг в качестве аргумента передается модель, и далее уже пэйджинг работает с моделью, используя ее методы работы с хранилищем, а не просто тупо фигачит запросы. У вас моделей просто нет.
    Модели подразумевают конкретный интерфейс, который позволяет работать с пэйджингом адекватно. Ну и моделей нет ))
    Точкой взаимодействия между моделью и пэйджингом будет контроллер, про который тут вообще у вас никто не в курсе.
    Вывод (view) никогда не пересекается с кодом логики, в него просто передаются готовые данные, после чего они вставляются в нужные точки шаблона.
    Ответ написан
    6 комментариев
  • Как вывести второе поле если первое пустое?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    или покороче,
    'name' => $result['short_name'] ?: $result['name'],
    Ответ написан
    1 комментарий
  • Как вывести второе поле если первое пустое?

    Eridani
    @Eridani
    Мимо проходил
    'name' => ($result['short_name'] ? $result['short_name'] : $result['name']),
    Ответ написан
    1 комментарий
  • Как просмотреть нужные файлы в папке?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    Использовать функции для работы с файловой системой. glob, например.
    И ты не стесняйся - рассказывай что уже пытался сделать, что получилось, где застрял. Код показывай, там, ага

    Дополнительная информация из комментариев:
    Для неопределенного количества вложений используют рекурсию - пишешь функцию, которая возвращает список файлов в каталоге и его подкаталогах в нужном тебе формате, которая вызывает сама себя для каждого найденного каталога или стилистической ссылки и добавляет результат к списку файлов.
    Пример рекурсии: https://qna.habr.com/q/1189114#answer_2211560

    Также, есть способ через итератор: https://www.php.net/manual/en/class.filesystemiter...
    Ответ написан
    4 комментария
  • Как мне быть, если HP Support Assistant больше не работает в России?

    @ewgenc
    Снести его нафиг и забыть, меньше мусора в системе будет.
    Ответ написан
    Комментировать
  • Какая архитектура приложения лучше?

    @exmach
    Frontend Developer
    Монолит (предположу, что вы описываете inertia js) лучше-удобнее для работы fullstack-разработчика в одиночку, если отдельные люди на фронте и бэке, то монолитная структура проекта превращает их работу в ад (по личному опыту говорю).

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

    @Akina
    Сетевой и системный админ, SQL-программист.
    В общем случае невозможно определить, чем вызвано изменение данных, приведшее к срабатыванию триггера. Так что определить встроенными средствами - нельзя.

    Для решения задачи необходимо использовать внешние средства передачи данных. Поскольку весь каскад триггеров работает в одном соединении, проще всего использовать определённые пользователем переменные с предопределёнными именами, которые инициализируются на старте триггера и сбрасываются на его финише:

    CREATE TRIGGER trigger_name
    EVENT ACTION ON table_name
    FOR EACH ROW
    BEGIN
        SET @trigger_name_table_name = CONCAT('executed, ', 'column_value=', NEW.column);
    -- trigger action
        SET @trigger_name_table_name = NULL;
    END;

    Если в теле триггера определены EXIT хэндлеры - они тоже должны выполнять соответствующие сбросы.
    Ответ написан
    Комментировать
  • Как запускать компьютер с помощью кнопки на сайте?

    GavriKos
    @GavriKos
    Микропетпроджект - домашнее облако homeCloud
    WakeOnLan +нечто мониорящее ваш сайт на предмет нажатости кнопки
    Ответ написан
    Комментировать
  • Как сдедать скрипт, который будет обратно кодировать код?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Никак.
    Лицензия получается XOR'ом ключа с вычисляемой (на самом деле, фиксированной) гаммой.
    Зная только часть лицензии можно получить только соответствующую часть ключа.
    Если знать все части лицензии, то достаточно записать их через '|', проXORить с вычисленной гамой и закодировать в BASE64.
    Ответ написан
    4 комментария
  • Как правильно отправить в базу данных сразу несколько ссылок на картинки?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    То есть весь вопрос сводится к "при записи я кодирую данные c помощью json_encode, а при выводе не раскодирую, но виноваты создатели этого сайта".

    Но главные проблемы этого кода конечно не в json.
    Во-первых, этот код позволяет заливать РНР файлы, и первый же малолетний придурок этим воспользуется.
    Во-вторых, этот код пропускает SQL инъекцию, и первый же малолетний придурок этим воспользуется.
    Остальное уже мелочи.

    Но если отвечать на вопрос в целом, то да - вставлять все ссылки в одно поле это действительно неправильно.
    Плюс, в БД всегда должны храниться только сырые данные, а любое форматирование добавляться только при выводе. То есть сохранять надо только сами имена файлов.

    Но в данном случае вообще непонятно, зачем сохранять ссылки в БД.
    При заливке берётся id созданного пользователя, создаётся папка с таким именем, и в неё заливаются файлы.
    При выводе файлы читаются из этой папки и выводятся.
    Ответ написан
  • Есть ли риск спалить системник при использовании блока питания с 450 ватт?

    При повышении нагрузки либо будет аварийное выключение из-за просадки напряжения, либо будет перегрев БП.
    При перегреве БП будет либо аварийное выключение БП, вместе со всем компьютером, либо произойдёт повреждение компонентов БП.
    При этом может произойти возгорание БП, а потом и всего компьютера, если разгорится хорошо.
    Также может произойти какой-нибудь интересный электрический эффект, из-за чего может произойти КЗ или ещё что неприятное, из-за чего даже без возгорания твои дорогие комплектующие, в лучшем случае, придётся ремонтировать.

    В целом, даже если 450вт фактически хватает - он будет на предельных значениях работь, а тут и КПД ниже, и нагрев больше.
    + со временем (с годами) общая мощность БП может падать.

    Так что лучше в ближайшее время купить более мощный БП.
    Ответ написан
    Комментировать
  • Есть ли принципиальные преимущества Intel+NVidia перед AMD+AMD?

    @rPman
    'были времена', когда продукция amd как процессоры и видеокарты от них были дешевле до 30% при равной производительности

    Так intel для своих процессоров чаще меняет сокеты, а значит апгрейд подразумевает замену не только процессора но и материнской платы, когда как у amd его socket am4 да и предыдущий am3 держались на столько долго что у некоторых материнки могут работать десятилетиями, и при этом достаточно мощный процессор и оперативная память.

    У видеокарт от amd (точнее это не их вина но это не важно) была небольшая проблема поддержки ускорения в не игровых приложениях, так как большинство разработчиков крупных приложений в первую очередь вводили поддержку nvidia.

    Вот и смотри, получается быть приверженцем amd может оказаться дешевле но можно поймать проблему не совместимости (кстати сейчас это уже не так заметно, все больше софта поддерживают gpgpu от amd, точнее opencl, а значит кроссплатформенно)

    p.s. сейчас, благодаря локальному проигрышу гонки производства процессоров, intel сильно понизили стоимость своих процессоров, как минимум из среднего сегмента, а значит можно собрать intel конфигурацию заметно дешевле amd при лучшей производительности, но кризис сначала ковид, потом проблемы с поставками а потому и война внесли много хаоса в этот выбор
    Ответ написан
    Комментировать
  • Нужно ли использовать interface?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Нет, ничего указывать не надо.
    Тут и без интерфейсов получатся отличные самолёты из соломы и палок.
    Ответ написан
  • Как запустить php скрипт после ajax запроса?

    @rPman
    Вопрос немного не понятен.
    * Если задача в php скрипте как то отличить обычную загрузку страницы от запроса, то к запросу нужно добавить параметры, это нормальный способ, специально для этого созданный. Параметры могут быть добавлены напрямую в ссылку, это формат запроса http get (используется по умолчанию) или как дополнительные поля запроса http post, в любом случае метод ajax jquery все делает автоматически и достаточно указать данные в settings в виде массива key->value в параметре data
    * Если проблема в том что запрос выполняется параллельно загрузки данных браузером и может быть прерван принудительно браузером или при проблемах с соединением, то типичный способ - запускать свои задачи отдельным приложением (сервисом), с которым веб приложение (то что внутри index.php) должно как то общаться (обычно используют тот же http протокол но это не обязательно, например один из способов - оставить в базе данных задачу, список которых и будет мониторить это приложение). Способов тьма, написано куча решений, особенно когда речь идет о высоконагруженных задачах, но настоятельно рекомендуется решить подобную задачу самостоятельно, благо там нет ничего сложного.
    В данном решении должно появиться понятие задачи, у которой есть статусы новая, исполняется, завершена, ошибка,... а на стороне клиента это соответственно должно обрабатываться.

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

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Читайте обе.
    Ответ написан
    2 комментария
  • Как отсортировать массив по дате в формате от и до?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Зависит от формата даты. пример массива не помешает. так же как и вариант "такое хочу получить".
    2) Если данные получены из бд, правильным ответом будет добавить сортировку в запрос.
    Ответ написан
    21 комментарий
  • Как вернуть html код в ответ ajax запросу?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Вы уже возвращаете ответ через echo.
    Проблема в том, что вы не понимаете собственный код. Сначала вы вызываете ferchAll, а потом пытаетесь работать с результатом как с одной записью, а не их набором. Скрипт ваш падает из-за этой ошибки, а сервер не настроен для разработки и ошибки не показывает.

    PDOStatement::fetchAll() возвращает массив, содержащий все оставшиеся строки результирующего набора. Массив представляет каждую строку либо в виде массива значений одного столбца, либо в виде объекта, имена свойств которого совпадают с именами столбцов.
    https://www.php.net/manual/ru/pdostatement.fetchall.php

    P.S. И это если игнорировать неправильные кавычки.
    Ответ написан
    Комментировать
  • Как вернуть html код в ответ ajax запросу?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вы пытаетесь выполнить внешнюю команду с именем <div
    Изучайте синтаксис PHP. Посмотрите, чем обратные апострофы отличаются от прямых и от двойных.
    Ответ написан
    Комментировать
  • Как в Laravel после регистрации/авторизации оставаться на той же странице?

    iMedved2009
    @iMedved2009
    Не люблю людей
    return redirect()->back();
    А на роуты login и register просто повесить миддлваре аля guest который будет редиректить куда надо.
    Ответ написан
    2 комментария
  • Как скомпилировать хоть 1 проект с гитхаба на с/с++?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега C
    Седой и строгий
    Судя по ридмихе, нужно просто уметь пользоваться gcc и make.
    Ответ написан
    Комментировать