Jump to content
Sign in to follow this  
SD_TuXo

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

Recommended Posts

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

Я бы посоветовал использовать mb_strlen() в место strlen() если будете использовать кириллицу.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...