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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Лучше сразу получать в нужном виде
    https://phpdelusions.net/pdo/fetch_modes#FETCH_GROUP
    Ответ написан
    Комментировать
  • Как получить данне из БД и вставить их в PHP код?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    А что - три отдельных поля в таблице base_post нельзя было сделать? Обязательно было в одно пихать?
    Ответ написан
  • Не работает pdo php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Где ты это ужас взял?
    По виду код из моей статьи, но кто-то его изуродовал.

    ERRMODE должно быть PDO::ERRMODE_EXCEPTION
    в DSN не надо писать отсебятину. что такое $dbname?!
    try catch надо выкинуть
    var_dump($sth) вернёт не то что ты думаешь
    надо добавить charset, чтобы потом снова не бегать с вопросами "ой у миня кракозябры"

    <?php
    $host = 'localhost';
    $user = 'root';
    $password = 'root';
    $db_name = 'db_des';
    $charset = 'utf8mb4';
    $options = [
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_EMULATE_PREPARES => true,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ];
    $pdo = new PDO("mysql:host=$host;dbname=$db_name;charset=$charset", $user, $password, $options);
    
    $sth = $pdo->query('SELECT * FROM `pages`');
    var_dump($sth->fetchAll());
    Ответ написан
  • Насколько хорош w3schools.com для старта в изучении php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Гайд по РНР w3shools считается позором РНР сообщества. Его называют не иначе как w3fools.

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

    Надо взять нормальну книгу, выше уже рекомендовавшуюся Котерова и Симдянова.

    Хочу сразу предостеречь от видеокурсов на ютубе. Снимают их люди, не сильно ушедшие от вас в плане опыта, привлечённые обманчивой простотой языка РНР. Всех их роднит одно свойство - они отлично рассказывают что делать, когда всё работает. Но ни один не объясняет, что делать, когда ничего не работает и как сделать, чтобы всегда работало. У всех авторов с ютубочки (как и с w3fools) кругозор с гулькин нос. Они поголовно не понимают, что нацарапанный ими код работает только в тепличных условиях, но тут же ломается в реальном окружении, ведет к ошибкам и уязвимостям.

    про geeekbrains ничего не могу сказать, а htmlacademy.ru пока не стоит своих денег.
    Хотя их подход достаточно интересный - учться с наставником, но учебник очень неровный - местами ничего, а местами написан левой пяткой, компиляция из тех же w3fools и устаревших учебников.

    После освоения теории надо переходить к практике. Написать что-то своё. Гостевую книгу, маленькую соцсеть. сервис-файлохранилище, страничку игрового клана.

    Поле этого надо правдамии неправдами искать работу джуна в офисе. Любая учёба которая подразумевает варку в собственном соку приводит к деградации.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Никак.
    Ответ написан
    Комментировать
  • Как защитить сайт от взлома по GET запросу?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Никак не защищать.
    Никаких "взломов" по "GET запросу" в природе не существует.
    Ответ написан
    3 комментария
  • Не устанавливается подключение к Базе Данных php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    А теперь правильный ответ.
    Как минимум надо писать вот так:
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = new mysqli('localhost','root','','test');
    $mysqli->set_charset('utf8mb4');

    А лучше полностью так как описано по ссылке выше.
    Ответ написан
    Комментировать
  • Что не так в коде?

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. Должен быть перезаписан
    2. Без разницы. Можо делать или так, или эдак. Или и так и эдак.

    Сама по себе операция какая-то бессмысленная. Не нужно хранить объекты в сессии. Можно хранить в сессии пару атрибутов, которые инжектить в объект при создании.
    Ответ написан
  • Использование функций из одного php файла, в другом?

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

    Если фунция возвращает не то, что ожидается, это значит что в нее передали неверные данные.
    Вот на данные, которые ты передаёшь, и надо смотреть.
    А не на файл, в котором функция лежит.
    Ответ написан
    Комментировать
  • While vs foreach при sql запросе?

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

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

    Идея в том чтобы не тащить с собой базу данных по всему приложению. Соединился, получил нужные данные, передал в другой модуль сами данные, а не соединение с бд.

    Должен например модуль формирования html знать что-то про базу данных? Не должен. Его должны интересовать сами данные, а не средства работы с ними.

    Ну и разумеется, код для работы с БД не должен смешиваться с кодом вывода в браузер. Это аксиома.
    Ответ написан
    4 комментария
  • Можно ли это сделать быстрее?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Быстрее нельзя.

    Лучше можно. Зависит от определения что такое "лучше".
    Можно например изменяющиеся значения записать в массив и вывести элементы в цикле.
    Ответ написан
  • Как правильно составить запрос SQL?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Хоть и не очень элегантно, но благодаря удобству ПДО всё же и не очень громоздко,
    $params = [];
    $sql = "SELECT * FROM `brands` ";
    if (!empty($_GET['district'])) {
        $sql .= "WHERE `district` = ?";
        $params[] = $_GET['district'];
    }
    $stmt = $pdo->prepare($sql);
    $stmt->execute($params);


    Таким же образом можно добавлять и другие условия.
    Ответ написан
    Комментировать
  • Почему не сохраняются данные в БД?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Чтобы запрос всегда выполнялся, надо делать так
    1. сначала подготавлиавешь запрос, вместо всех переменных ставишь знак вопроса
    2. в bind_param пишешь столько букв s, сколько переменных, а дальше - сами переменные
    3. выполняешь запрос

    Кроме того и в тот и в дргой файл надо добавить разные нужные вещи, и выкинуть ненужные.

    Я знаю, что это трудно поначалу осилить, но тут надо выбирать - или постараться, или вообще не тратить время учебу.

    database.php взять отсюда , только название БД свое подставь

    saveOrder.php :

    <?php
    include "database.php";
    $order_number = $_GET["order_id"];
    
    $sql = "UPDATE `orders` SET `order_status`=?,`customer_surname`=?,`customer_name`=?,
    `customer_patronymic`=?,`email`=?,`phone_number`=,`second_phone_number`=?,`address`=? 
    WHERE `orders`.`order_number` =?";
    $stmt = $connection->prepare($sql);
    $stmt->bind_param("sssssssss", $_POST['orderStatus'],$_POST['customerSurname'],
        $_POST['customerName'],$_POST['customerPatronymic'],$_POST['email'],
        $_POST['phoneNumber'],$_POST['secondPhoneNumber'],$_POST['address'],$order_number
    );
    $stmt->execute();
    
    // второй запрос делаешь по тому же принципу
    header('Location: crm_order_page.php?order_id='.$order_number);
    Ответ написан
    4 комментария
  • Почему mysqli_query() получает первым параметром NULL?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Убрать строчки
    global $connection;
    function saveOrder (){
    }
    saveOrder();

    И постараться впредь не писать бессмысленные закорючечки только потому что они выглядят красиво
    Ответ написан
    Комментировать
  • Как получить данные с checkbox?

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

    $ids = array_keys($_POST['add']);
    Ответ написан
    Комментировать
  • Автозагрузка обязывает указывать namespace у всех классов?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    С точки стандартов программирования, насколько правильно указывать у каждого класса namespace?

    Других вариантов нет.

    Ведь так можно легко запутаться, да и код начинает содержать символы, которых раньше мог миновать.

    Это какая-то белиберда на которую я даже не знаю, что ответить. Пространства имён служат для того чтобы не путаться. Про символы вообще непонятно

    Какой подход для использования spl_autoload_register из двух перечисленных является более правильным

    Второй
    Ответ написан
    3 комментария
  • Как настроить autoincrement PhpMyAdmin в Open Server?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не в Open Server а в своем коде
    1. Вместо '' надо писать null
    2. Переменные никогда не пихать прямо в запрос, а передавать отдельно.
    3. Чтобы не тыкать пальцем в небо в оисках ошибки, надо настроить сообщения об ошибках в mysqli

    $stmt = $db->prepare("INSERT INTO `users` VALUES(null, ?,?)");
    $stmt->bid_param("ss", $login, $pass);
    $stmt->execute();


    Как настроить вывод ошибок и вообще правильно соединяться, см здесь
    Ответ написан
  • Какой оптимальный размер view?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Я так понял, что речь идет о размере страницы сайта.
    НЕТ, "2 мб и 5000 строк кода" это абсолютно ненормально.

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

    Но из чисто эмпирического опыта я бы за пару сотен килобайт максимум не вылезал.
    Ответ написан
    Комментировать
  • Можно ли отправить post или get запрос файлу с классом и передать данные определенному методу в этом классе?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    гугли роутер
    Ответ написан
    Комментировать