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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Пути всегда должны быть абсолютными.

    Как к файлам, так и к http ресурсам.
    У тебя в шапке во всех урлах те же самые точечки. А должен быть абсолютный путь от корня сайта. То есть не
    <img src="../images/lame.jpg">, а <img src="/images/lame.jpg">
    , только чтобы это был реально существующий путь.

    И прочесть целком phpfaq.ru/newbie/paths
    Ответ написан
    Комментировать
  • Правильно ли вставлять include() в цикл 50x и чем это чревато?

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

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Судя по коду, у тебя здесь три вопроса.
    1. Как вывести форму?
    2. У меня есть форма, как передать ее содержимое на сервер аяксом и получить значения в РНР ?
    3. У меня есть несколько переменных в РНР, как их записать в БД
    Никогда больше так не делай.
    Первые два вопроса не имеют никакого отношения к третьему и засорять свой вопрос ими не надо.

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

    Код соединения никогда не пишем как есть, а инклюдим, чтобы не повторяться повторяться.
    Код соединения должен быть нормальный, со всеми необходимыми параметрами, и без дурацких echo. Берем здесь.
    Сами переменные в запрос не пихаем, а передаем отдельно

    <?php
    require 'mysqli.php';
    $query = "INSERT INTO message (name, email, phone, message) VALUES(?,?,?,?)";
    $stmt = $mysqli->prepare($query);
    $stmt->bind_param("ssss", $name, $email, $phone, $message);
    $stmt->execute();
    echo "Запись добавлена!";

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не очень понятно что нужно но как-то так

    $i = 0;
    while (true) {
        foreach ($array as $row) {
            if ($i++ == $max) {
                break 2;
            }
            // делаешь что тебе надо
        }
    }
    Ответ написан
  • Как отправить массив обьектов класса std на mysql с php?

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

    > Подскажите пожалуйста что делать???

    Описывать свои проблемы внятным русским языком.
    "Отправляется" только гарри поттер в хогвартс, а в базу данных что-то записывается.
    Вот и надо четко написать, что конкретно в итоге оказывается в базе данных и как ты об этом узнал.
    Ответ написан
  • Реализация правильной опции "запомнить меня" и завершение сеансов удаленно?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Генеришь токен из random_bytes() (ну или UUID) и кладешь его в куки и в базу.
    Соответственно получаешь токен из куки и по базе находишь юзера.
    Если надо разлогинить, то генеришь новый токен.

    Использовать ли при этом сессию - вопрос вкуса, и в общем-то второстепенный. Можно использовать, можно не использовать
    Ответ написан
    Комментировать
  • Может ли запрос SELECT приводить к удалению данных?

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

    всякий раз, когда ты склоняешься к такому мнению, это значит что глюк 100% в твоем собственном коде.

    Учитывая весь этот адов винегрет, от которого глаза начинают кровоточить, удивительно что оно вообще хоть как-то работает.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    require_once ('../DropCases/MySql/Connection.php'); // подключаем скрипт
    
    $sql = " SELECT * FROM `doka 2`";
    $data = $mysqli->query($sql)->fetch_all(MYSQLI_ASSOC);
    echo json_encode($data);


    В Connection.php положить то что написао здесь
    Ответ написан
    Комментировать
  • Что не так с кодировкой?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Пособие "гуголь для самых маленьких": если попку уже самостоятельно научился вытирать, а нос - ещё нет, то самое время учиться поиску в интернете : черные ромбы

    Скажи своему Sublime Text 3 чтобы сохранял файлы в нужной тебе кодировке
    Ответ написан
    Комментировать
  • Как проверить наличие записей в таблице 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. Привыкай всегда понимать, откуда и куда у тебя идут переменные, чтобы четко знать какая переменная у тебя что содержит и откуда взялась. А не просто с неба свалилась. Пеередавай переменные в функцию только через параметры
    Ответ написан
    Комментировать
  • Почему не работает 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
    Чебуратор тега РНР
    Вместо переменной использовать метод.

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

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

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

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

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

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