SD_TuXo 4 Posted April 8, 2019 Помогите сделать проверку длины заполняющего поля, нужно что бы если длина текста меньше 30 символов выбивает ошибку а если больше то заносит в базу я вот накидал код но что то не хочет работатьХТМЛ Форма <div> <form method="POST" action=""> <center><input name="name" type="text" placeholder="Текст"/></center> <input type="submit" value="Отправить"/> </form> </div> PHP Код <? if (isset($_POST['name'])){ // Переменные с формы $name = $_POST['name']; // Параметры для подключения $db_host = "localhost"; $db_user = "Логин БД"; // Логин БД $db_password = "Пароль БД"; // Пароль БД $db_base = 'Имя БД'; // Имя БД $db_table = "Имя Таблицы БД"; // Имя Таблицы БД // Подключение к базе данных $mysqli = new mysqli($db_host,$db_user,$db_password,$db_base); // Если есть ошибка соединения, выводим её и убиваем подключение if ($mysqli->connect_error) { die('Ошибка : ('. $mysqli->connect_errno .') '. $mysqli->connect_error); } $result = $mysqli->query("INSERT INTO ".$db_table." (name) VALUES ('$name')"); if (strlen($result)<30) { echo "Короткий текст."; } else if (strlen($result)>30) { echo "Текст записан в базу."; } } ?> Share this post Link to post Share on other sites
Formatter 16 Posted April 8, 2019 ну как бы нужно проверять длину параметра "name", а не результата выполнения запроса. 1 1 Share this post Link to post Share on other sites
SD_TuXo 4 Posted April 8, 2019 6 минут назад, Formatter сказал: ну как бы нужно проверять длину параметра "name", а не результата выполнения запроса. Блин точно чёт я тупанул, поправил но дело в том что оно все равно заносит в базу если даже короткое сообщение Share this post Link to post Share on other sites
Formatter 16 Posted April 8, 2019 (edited) Если проверка у тебя осталась в том-же виде как и была, то нужно добавить остановку выполнения кода, ака "return" или "exit" upd. ну и быть она должна до добавления в базу. upd.2 одного сравнения длинны < 30 достаточно, либо же необходимо изменить вторую проверку на >= 30, ибо при длине текста в 30 символов - сообщения не будет Edited April 8, 2019 by Formatter 1 Share this post Link to post Share on other sites
TURGOR 33 Posted April 8, 2019 <? if (isset($_POST['name'])){ // Переменные с формы $name = $_POST['name']; // Параметры для подключения $db_host = "localhost"; $db_user = "Логин БД"; // Логин БД $db_password = "Пароль БД"; // Пароль БД $db_base = 'Имя БД'; // Имя БД $db_table = "Имя Таблицы БД"; // Имя Таблицы БД // Подключение к базе данных $mysqli = new mysqli($db_host,$db_user,$db_password,$db_base); // Если есть ошибка соединения, выводим её и убиваем подключение if ($mysqli->connect_error) { die('Ошибка : ('. $mysqli->connect_errno .') '. $mysqli->connect_error); } if (strlen($result)<30) { echo "Короткий текст."; return false; } else { $result = $mysqli->query("INSERT INTO ".$db_table." (name) VALUES ('$name')"); echo "Текст записан в базу."; return true; } } ?> Share this post Link to post Share on other sites
Formatter 16 Posted April 8, 2019 1 minute ago, TURGOR said: <? if (isset($_POST['name'])){ // Переменные с формы $name = $_POST['name']; // Параметры для подключения $db_host = "localhost"; $db_user = "Логин БД"; // Логин БД $db_password = "Пароль БД"; // Пароль БД $db_base = 'Имя БД'; // Имя БД $db_table = "Имя Таблицы БД"; // Имя Таблицы БД // Подключение к базе данных $mysqli = new mysqli($db_host,$db_user,$db_password,$db_base); // Если есть ошибка соединения, выводим её и убиваем подключение if ($mysqli->connect_error) { die('Ошибка : ('. $mysqli->connect_errno .') '. $mysqli->connect_error); } if (strlen($result)<30) { echo "Короткий текст."; return false; } else { $result = $mysqli->query("INSERT INTO ".$db_table." (name) VALUES ('$name')"); echo "Текст записан в базу."; return true; } } ?> твой код не заработает скажет что хз что за переменная $result Share this post Link to post Share on other sites
TURGOR 33 Posted April 8, 2019 (edited) то уже устал за день) <? if (isset($_POST['name'])){ // Переменные с формы $name = $_POST['name']; // Параметры для подключения $db_host = "localhost"; $db_user = "Логин БД"; // Логин БД $db_password = "Пароль БД"; // Пароль БД $db_base = 'Имя БД'; // Имя БД $db_table = "Имя Таблицы БД"; // Имя Таблицы БД // Подключение к базе данных $mysqli = new mysqli($db_host,$db_user,$db_password,$db_base); // Если есть ошибка соединения, выводим её и убиваем подключение if ($mysqli->connect_error) { die('Ошибка : ('. $mysqli->connect_errno .') '. $mysqli->connect_error); } if (strlen($name)<30) { echo "Короткий текст."; } else { $result = $mysqli->query("INSERT INTO ".$db_table." (name) VALUES ('$name')"); echo "Текст записан в базу."; } } ?> хотя и $result нужно бы обработать или убрать Edited April 8, 2019 by TURGOR 1 Share this post Link to post Share on other sites
SD_TuXo 4 Posted April 8, 2019 (edited) Всем большое спасибо, я вот тоже накидал тут код не знаю верно или нет но работает <? if (isset($_POST['name'])){ // Переменные с формы $name = $_POST['name']; // Параметры для подключения $db_host = "localhost"; $db_user = "Логин БД"; // Логин БД $db_password = "Пароль БД"; // Пароль БД $db_base = 'Имя БД'; // Имя БД $db_table = "Имя Таблицы БД"; // Имя Таблицы БД // Подключение к базе данных $mysqli = new mysqli($db_host,$db_user,$db_password,$db_base); // Если есть ошибка соединения, выводим её и убиваем подключение if ($mysqli->connect_error) { die('Ошибка : ('. $mysqli->connect_errno .') '. $mysqli->connect_error); } if (strlen($name)<30) { exit("Короткий текст."); } else if (strlen($name) >= 30) { echo "Текст записан в базу."; } $result = $mysqli->query("INSERT INTO ".$db_table." (name) VALUES ('$name')"); } ?> Edited April 8, 2019 by SD_TuXo Share this post Link to post Share on other sites
terege 110 Posted April 8, 2019 (edited) 2 часа назад, SD_TuXo сказал: Всем большое спасибо, я вот тоже накидал тут код не знаю верно или нет но работает <? if (isset($_POST['name'])){ // Переменные с формы $name = $_POST['name']; // Параметры для подключения $db_host = "localhost"; $db_user = "Логин БД"; // Логин БД $db_password = "Пароль БД"; // Пароль БД $db_base = 'Имя БД'; // Имя БД $db_table = "Имя Таблицы БД"; // Имя Таблицы БД // Подключение к базе данных $mysqli = new mysqli($db_host,$db_user,$db_password,$db_base); // Если есть ошибка соединения, выводим её и убиваем подключение if ($mysqli->connect_error) { die('Ошибка : ('. $mysqli->connect_errno .') '. $mysqli->connect_error); } if (strlen($name)<30) { exit("Короткий текст."); } else if (strlen($name) >= 30) { echo "Текст записан в базу."; } $result = $mysqli->query("INSERT INTO ".$db_table." (name) VALUES ('$name')"); } ?> Ты уверен что этот рабочий. Я вот нет боле менее верен у TURGOR и вообше все это надо превратить в функцию и будет лучше Соединение (получение данных и соединение)-> обработка (проверка ошибок и правил)-> Выполнение результата (верного или ложного)-> завершение ( очистка и разъединение сессии) и + со стороны клиента проверку еще бы сделал на запрет публикацию меньше 30 символов иль что там у тебя Edited April 8, 2019 by terege дополнение Share this post Link to post Share on other sites
k0ss11 302 Posted June 20, 2019 Я бы посоветовал использовать mb_strlen() в место strlen() если будете использовать кириллицу. Share this post Link to post Share on other sites