Задать вопрос
Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
  • Как проверить наличие записей в таблице MySQL через PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    if ($result = $connection->query($checkUserQuery)) {

    Это очень распространенная ошибка.
    И очень нелогичная.

    Ты, когда запрашиваешь выписку в банке чтобы узнать, есть ли у тебя деньги, на что смотришь? Просто на то пришла ли выписка, или нет? Серьёзно? Или все-таки смотришь в саму выписку, какие там цифры?

    query() возвращает результат запроса. Результат с нулем строк - это тоже результат. Сами строки ты получаешь другими функциями.

    Чтобы узнать, еслть ли в таблице данные, нельзя запрашивать все строки. А представь что ты наконец освоишь программирование и на твоем сайте будет миллион пользователей. Будешь всех запрашивать в РНР чтобы узнать, есть ли хоть один?

    Если надо узнать, есть ли в базе хоть один пользователь, надо и запрашивать одного. Л - логика.

    function usersTableNotEmpty($connection)
    {
        $checkUserQuery = 'SELECT 1 FROM users LIMIT 1';
        $result = $connection->query($checkUserQuery);
        $row = $result->fetch_row();
        return (bool) $row;
    }


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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Очень смешной топик.
    Сразу видно что почти никто из советчиков никогда с реальным интернет-магазином не работал.

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

    Ну и третье, уже специально для автора вопроса, а не только для всех юных писателей крупных интернет-магазинов - сначала, перед тем как приступать к написанию крупных интернет магазинов, следует изучить букварь по веб-разработке. И открыть для себя, что у любого интернет-магазина, даже некрупного, есть back-end. В котором, в общем-то, вся логика работы с товарами, заказами и корзиной и реализуется. И которое к "SPA на реакте" не имеет ни малейшего отношения. И чтобы написать которое, надо учить основы баз данных, SQL и какой-нибудь серверный язык программирования. Ну и ещё примерно 20 дисциплин.
    Ответ написан
    3 комментария
  • Почему не работает Red Bean PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не надо учиться по этим тупым видео про тухлую фаслоль. Так и будешь ведь спотыкаться на каждом шагу
    Надо купить нормальную книжу и учить язык нормально, а не думать что ты с помощью одной устаревшей в прошлом веке библиотеки можешь делать сайты.

    В данном случае тебе свою фамилию надо добавить в ЗАПРОС, а не сравнивать в пхп.
    Ответ написан
  • Что производительней - сортировка массива средствами php, или выборка и сортировка запросом mysql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ты видел доклад про то как мучают в аду нерадивых разработчиков.

    В нормальной БД все будет работать быстрее и без необходимости использовать, прогревать и инвалидировать кэш.
    Вместо того чтобы смотреть доклады, тебе надо купить букварь по базам данных.
    Ответ написан
    2 комментария
  • Какой рекомендуемый размер файла для php-скрипта?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Мерять надо не килобайтами, а строками.

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

    Есть правило 30 - в классе должно быть не больше 30 методов и размер каждого метода не больше 30 строк. Но при этом не надо воспринимать это как догму. Большинство классов должно быть сильно меньше - 3-5 методов по 5-10 строк.

    Но опять же это всё не самоцель и не надо устраивать из этого карго культ, разибвая свои классы на более мелкие чтобы гордиться "я офигенный оопэ программист". Тут на самом деле не размер имеет значение. Просто если ты умеешь в ооп, умеешь декомпозировать и делить ответственность, то у тебя классы и методы сами станут маленькими, отвечающими за четкий строго определенный круг задач.
    Ответ написан
    5 комментариев
  • Есть ли смысл использовать параметризованный запрос, если в запросе не используются данные, предоставленные пользователем?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос с подвохом.
    Потому что "данные, предоставленные пользователем" может означать что угодно. Поэтому формулировать надо так:

    Надо использовать параметризованный запрос, если в запросе не используются переменные?


    И тогда ответ будет простой и очевидный - нет, не надо.
    Это очень простое правило: используются в запросе переменные? Используем подготовленный запрос и передаем через плейсхолдер. Не используются? Можно использовать query()

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Робот - это браузер. Разницы нет никакой.
    Если все читают, а робот нет - это проблемы либо робота, либо криворукого хостера, который почему-то не пускает определенные браузеры.
    Для исправления проблемы вместо невнятного "ниможит, насяльника" нужно четкое описание проблемы - айпи робота, юзерагент, сообщение об ошибке, точное время запроса. Потом с этими данными смотреть логи.

    Хотя бы какая ошибка выдается, этот банк может сказать? 404? 403? 500? Робот взрывается и убивает осколками все живое врадиусе 5 метров?
    Ответ написан
    3 комментария
  • Как задать значение по умолчанию для статической переменной?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вместо переменной использовать метод.

    А вообще если такие вопросы возникают, то скорее всего ООП применяется не по назначению, и внутри голимая процедурщина, глазированная красивыми словами "паблик" и "статик". И лучшим решением будет не пытаться изображать из себя программиста, а писать по-старинке, функциями внутри которых использовать global. принципиально для этого кода разницы не будет.
    Ответ написан
    Комментировать
  • Как обрабатывать данные результата формы чужого сайта?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Если это путанное объяснение означает что пользователь переходит с сайта А на сайт Б, там заполняет форму, в которой экшеном стоит скрипт на сайте А, то обрабатывать как обычно.

    Если задача какая-то другая, то надо родить нормальное описание.

    Но для начала надо открыть для себя, что "форма на сайте" не бывает. Форма всегда в браузере. С какого сайта форму браузер загрузил - совершенно неважно. Важно на какой сайт ведет экшен формы.
    Ответ написан
    Комментировать
  • Какую сделать структуру и запросы для каталога?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Нормальная структура. Только писать в таблице parentCategory_id глупо, по двум причинам. Во-первых, у товара нет никакой родительской категории. А есть просто категория. Во вторых, мешать стили именования - это как ходить в гразных штанах. Традиционно для баз данных используется змеиный стиль в нижнем регистре. Поэтому просто category_id

    Второй пункт относится и к таблице категорий тоже. поэтому просто parent_id

    Как получать все дочерние категории - в общем без разницы. можно с рекурсией, но чтобы было совсем просто, я предлагаю тупо добавить поле path, в котором печечислить все родительские котегории через точку. Например для жидкого туалетного мыла path будет 1.2.3.4.6
    соответственно, если клиент ждет мыла, то получаем path из мыла, и пишем в запросе WHERE path like "1.2.%"

    Заодно и выводить сортировать дерево категорий моно будет простой сортировкой order by path
    Ответ написан
    Комментировать
  • Почему не выводится результат выполнения запроса php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    потому что у тебя красным по серому написано в запросе SUM(result), а выводишь ты почему-то result
    Ответ написан
  • Как вывести данные из одной таблице, при этом используя для запроса еще 2 таблицы?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    простой джойн между всеми тремя таблицами, осортировать по номеру заказа
    выводить в цикле
    информация о заказе будет повторяться, поэтому надо запоминать заказ, и добавить условие - если заказ поменялся, то вывести по нему информацию.
    Ответ написан
  • Как делать шардинг такой базы данных?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Надо тег сделать, "влажные эротические фантазии".

    Сайта у нас ещё нет.
    Базы данных нет.
    Статей нет.
    Известной личности нет.
    Офигиллиарда лайков нет.

    Но зато полные штаны беспокойства, А ВДРУГ БАЗА НЕ СПРАВИЦА!!!

    В порядке конструктива.
    Купи себе пару хороших книжек, а лучше пойди на нормальные курсы, которые от Авито, не помню, как они называются. Потом пойди поработать в нормальную контору, где можно на практике разобраться, что такое база данных и с какого конца к ней подходят. Не в смысле нагрузки, а чтобы и мысли не возникало про дичь типа таблиц вида likes_for_userid_847192.
    И годков через 5 можешь начинать задумываться о вопросе, "что будет если в базе будет 1 000 000 000 0000 00000 000000!!!111адинадин записей".
    Ответ написан
    1 комментарий
  • Как искать информацию в SQL базе в колонке JSON формата?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Никогда не хранить такие данные в формате json.
    Хранить в нормальном виде, выбирать обычным where
    Ответ написан
    Комментировать
  • Зачем передавать экземпляр класса в качестве аргумента?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Забудь на время про ООП. Учи базовый синтаксис.
    Разберись с тем, для чего вообще нужны параметры.

    Посде этого таких вопросов возникать не будет.
    Ответ написан
    5 комментариев
  • Как посчитать количество определённых строк в файле?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не совсем по теме, но обчно я с логами работаю средствами консоли. получается очень быстро, гибко, удобно

    grep -P -o 'Fatal error|Syntax error|Not Found' logs/images.*.error.log  | sort | uniq -c | sort -V


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

    А, ну и
    wc -l logs/images.*.error.log
    чтобы получить полное количество ошибок пофайлово, если нужно
    Ответ написан
    Комментировать
  • Как отправить данные в базу?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Комментировать
  • Как работать с большими массивами на php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Я думаю, самым разумным решением будет писать эти массивы в базу и сравнивать простым запросом. Именно так в общем случае решается задача "сравнение двух больших массивов данных на РНР." Конкретную же реализацию можно будет предложить только если будет конкретный вопрос, без "может быть " и "например".

    Да, память в БД тоже не бесплатная, но тут надо уже определиться - или мы хотим ворочать гигазы варезов, или сидеть на копеечном впс с 500 метрами памяти. Одновременно не получится.

    Можно конечно извернуться и скомпилить специальное расширение, которое как раз и предназначается для работы с иллимонами элементов, но опять же - все зависит от возможностей и потребностей.
    Ответ написан
    1 комментарий