Практика PHP для начинающих. Урок 13. Показ ошибок валидации

  Рет қаралды 1,358

Андрей Кудлай

Андрей Кудлай

Күн бұрын

Пікірлер: 32
@ВладимирТ-х1с
@ВладимирТ-х1с Жыл бұрын
Все понятно. Спасибо за урок!
@matroskin978
@matroskin978 Жыл бұрын
Пожалуйста)
@bzzq2314
@bzzq2314 Жыл бұрын
Отличный урок. Большое спасибо!
@matroskin978
@matroskin978 Жыл бұрын
Всегда пожалуйста)
@КонстантинСигуев
@КонстантинСигуев Жыл бұрын
Спасибо огромное!
@matroskin978
@matroskin978 Жыл бұрын
Пожалуйста 😉
@АлександрВасилёнок-н4г
@АлександрВасилёнок-н4г Жыл бұрын
Спасибо за урок!
@matroskin978
@matroskin978 Жыл бұрын
Пожалуйста ;)
@SuperLinuxoid
@SuperLinuxoid 2 ай бұрын
дякую!
@screomyscreomy6714
@screomyscreomy6714 9 ай бұрын
Спасибо! Очень интересный урок и полезный урок👍
@matroskin978
@matroskin978 9 ай бұрын
Пожалуйста 😉
@sergeykondratev5721
@sergeykondratev5721 Жыл бұрын
Спасибо) очень полезный урок)
@matroskin978
@matroskin978 Жыл бұрын
Пожалуйста ;)
@dmitriivanov7010
@dmitriivanov7010 9 ай бұрын
Отлично. Очень познавательно!
@StasKantor
@StasKantor 10 ай бұрын
Спасибо огромное за урок
@ТОЛЬКОПОБЕЗДОРОЖЬЮ
@ТОЛЬКОПОБЕЗДОРОЖЬЮ Ай бұрын
Андрей добрый день! подскажите пожалуйста , после того как данные прошли валидацию valitron\validate как дальше их отправить в бд, как составить sql запрос, почемуто не получается, я смотрел видео с другого вашего канала, но там нет про это, а на этом канале тут с ооп , это пока сложно))
@matroskin978
@matroskin978 Ай бұрын
Добрый день! В исходниках к этому уроку я смотрю есть сохранение в БД. В файле app/controllers/post-create.php. Вот такой код: if (!$validation->hasErrors()) { if ($db->query("INSERT INTO posts (`title`, `content`, `excerpt`) VALUES (:title, :content, :excerpt)", $data)) { $_SESSION['success'] = 'OK'; } else { $_SESSION['error'] = 'DB Error'; } redirect(); } В нем проверяется, что если нет ошибок валидации, тогда просто выполняется запрос INSERT. В качестве параметров передаются данные, которые находятся в массиве $data. Без ООП - это нужно использовать mysqli, но я даже и не подскажу сейчас, как это написать, поскольку mysqli уже 100 лет не использовал)) Примерно так как-то должно быть по идее: $stmt = mysqli_prepare($db, "INSERT INTO posts (`title`, `content`, `excerpt`) VALUES (?,?,?)"); mysqli_stmt_execute($stmt, [$data['title'], $data['content'], $data['excerpt']]); Само собой, у вас должно быть подключение mysqli в переменной $db. Вообще, все очень зависит от вашего проекта, сложно дать конкретное решение без привязки к проекту.
@ТОЛЬКОПОБЕЗДОРОЖЬЮ
@ТОЛЬКОПОБЕЗДОРОЖЬЮ Ай бұрын
@@matroskin978 спасибо)) буду пробовать)
@matroskin978
@matroskin978 Жыл бұрын
Исходники к уроку - github.com/matroskin978/phpbeginners/tree/08a76fb382771b52d95e20ab0e99472b20bfef8c
@НикитаМоржевский
@НикитаМоржевский Жыл бұрын
Здравствуйте , а почему у меня не выводит ошибки как у вас на 10:50. Заметил что в переменной output, когда html-код ей присваиваем у меня не подсвечиваются классы, все одним цветом, хотя кавычки правильно расставил. Пробовал просто строку ей присвоить, ее выводит, а ошибки нет
@НикитаМоржевский
@НикитаМоржевский Жыл бұрын
Может ли это быть из-за версии php. Моя 7.2.34
@НикитаМоржевский
@НикитаМоржевский Жыл бұрын
Разобрался, точку не ставил перед равно
@matroskin978
@matroskin978 Жыл бұрын
@@НикитаМоржевский здравствуйте! 🙂 Отлично, что получилось найти ошибку самостоятельно) А теперь представьте, как бы я мог Вам подсказать, что именно не так с Вашим кодом, если я с ним не работаю?))) Ответ - никак. Что-то более-менее конкретное можно подсказать в том случае, если при выполнении Вашего кода возникает какая-то ошибка и Вы ее показываете. В этом случае по ошибке можно предположить, чем она вызвана. В Вашем случае никакой ошибки выполнения кода нет. Код выполняется нормально. Просто есть неточность в логике. А подобные проблемы можно решить только при непосредственной работе с кодом. На всякий случай напомню, что в описании урока есть ссылка на исходники, которые можно использовать для сравнения Вашего кода с моим, чтобы искать как раз такие "ошибки".
@niks1302
@niks1302 Жыл бұрын
Выходит ошибка: Parse error: syntax error, unexpected 'PDOStatement' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST) in C:\OSPanel\domains\localhost\vendor\myfrm\core\classes\Db.php Подскажите пжл в чем может быть проблема.
@matroskin978
@matroskin978 Жыл бұрын
Проблема в какой-то синтаксической ошибке. Не видя кода, конкретнее сказать сложно. Также Вы не указываете строку, в которой произошла ошибка (в тексте ошибки строка должна быть). Все же рискну предположить, что Вы используете старую версию PHP. Скорее всего, PHP < 7.4. Поэтому проверьте этот момент и, если это так, тогда повысьте ее хотя бы до 7.4, а лучше используйте уже 8-ю версию. Вообще странно, что эта ошибка возникла у Вас в 13-уроке, а не раньше, когда писался класс Db.
@niks1302
@niks1302 Жыл бұрын
@@matroskin978 Показывает ошибка здесь private PDOStatement $stmt;
@matroskin978
@matroskin978 Жыл бұрын
@@niks1302 ну так я же не только за строку спрашивал)) Вы версию PHP проверили? В Open Server это можно сделать, кликнув по флажку сервера и перейти в Настройки - Модули. В комментарии выше еще раз прочтите рекомендации по версии языка.
@niks1302
@niks1302 Жыл бұрын
​@@matroskin978 Спасибо.
@matroskin978
@matroskin978 Жыл бұрын
@@niks1302 пожалуйста)
@soversus5374
@soversus5374 9 ай бұрын
$_SESSION['error'] ?: ''
@niks1302
@niks1302 Жыл бұрын
Обновил PHP до версии 8.1 теперь выходит ошибка Warning: require(C:\OSPanel\domains\localhost/app/views/errors/500.tpl.php): Failed to open stream: No such file or directory in C:\OSPanel\domains\localhost\vendor\myfrm\core\funcs.php on line 30 Fatal error: Uncaught Error: Failed opening required 'C:\OSPanel\domains\localhost/app/views/errors/500.tpl.php' (include_path='.') in C:\OSPanel\domains\localhost\vendor\myfrm\core\funcs.php:30 Stack trace: #0 C:\OSPanel\domains\localhost\vendor\myfrm\core\classes\Db.php(50): abort() #1 C:\OSPanel\domains\localhost\public\index.php(22): myfrm\Db->getConnection() #2 {main} thrown in C:\OSPanel\domains\localhost\vendor\myfrm\core\funcs.php on line 30 эта строка require VIEWS . "/errors/{$code}.tpl.php";
@matroskin978
@matroskin978 Жыл бұрын
В тексте ошибки сообщается, что не находит файл для подключения app/views/errors/500.tpl.php. Если Вы его создадите, тогда он будет подключен без ошибки. Файл пытается подключить, как я понял, из-за ошибки подключения к БД. Поэтому проверьте настройки подключения к БД и проверьте, включен ли сам модуль БД в настройках сервера. Настройки подключения могут отличаться в зависимости от версии Open Server. Например, в моей версии логин и пароль - это строка root. А в новой версии root используется только для логина, а для пароля используется пустая строка. Т.е. настройки в файле config/db.php могут быть такими: 'username' => 'root', 'password' => '',
Try Not To Laugh 😅 the Best of BoxtoxTv 👌
00:18
boxtoxtv
Рет қаралды 7 МЛН
Миллионер | 2 - серия
16:04
Million Show
Рет қаралды 1,9 МЛН
这是自救的好办法 #路飞#海贼王
00:43
路飞与唐舞桐
Рет қаралды 90 МЛН
Быстрый запуск тестов в Symfony, прикасаемся к вечно молодому phpunit!
18:14
1. Анализ макета в Figma и подключение ресурсов
44:46
Try Not To Laugh 😅 the Best of BoxtoxTv 👌
00:18
boxtoxtv
Рет қаралды 7 МЛН