Sign in to follow this  
SD_TuXo

PHP Проверка длины текста

9 posts in this topic

Помогите сделать проверку длины заполняющего поля, нужно что бы если длина текста меньше 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

ну как бы нужно проверять длину параметра "name", а не результата выполнения запроса.

 

  • Like 1
  • Upvote 1

Share this post


Link to post
Share on other sites
6 минут назад, Formatter сказал:

ну как бы нужно проверять длину параметра "name", а не результата выполнения запроса.

 

Блин точно чёт я тупанул, поправил но дело в том что оно все равно заносит в базу если даже короткое сообщение 

Share this post


Link to post
Share on other sites
Posted (edited)

Если проверка у тебя осталась в том-же виде как и была, то нужно добавить остановку выполнения кода, ака "return" или "exit"

 

upd. ну и быть она должна до добавления в базу.

upd.2 одного сравнения длинны < 30 достаточно, либо же необходимо изменить вторую проверку на >= 30, ибо при длине текста в 30 символов - сообщения не будет

Edited by Formatter
  • Like 1

Share this post


Link to post
Share on other sites
<?
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
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
Posted (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 by TURGOR
  • Like 1

Share this post


Link to post
Share on other sites
Posted (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 by SD_TuXo

Share this post


Link to post
Share on other sites
Posted (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 by terege
дополнение

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.