Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не всегда работает форма на добавление данных в базу.
 
 автор: Сергей Серый   (05.07.2011 в 10:26)   письмо автору
 
 

Составлена форма :

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Добавление данных</title>
</head>
<div class="Content">
<form action="add_article_post.php" method="post" name="form">
<p><label>title<br><input name="title" type="text" id="title"></label></p>
<p><label>text<br><textarea name="text" cols="80" rows="20" id="text"></textarea></label></p>
<p><label><input type="submit" name="Submit" value="Занести в базу"></label></p>
</form>      
</div>
</body>
</html>


Введенные данные передаются в файл:

<?php include ("block/bd.php");
if (isset(
$_POST['title'])) {$title $_POST['title']; if ($title == '') {unset($title);}}
if (isset(
$_POST['text'])) {$text $_POST['text']; if ($text == '') {unset($text);}}
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<div >
<?php if (isset($title) && isset($text))
{
$result mysql_query ("INSERT INTO articles (title,text) VALUES ('$title','$text')");
if (
$result == 'true'){echo "<p>$title</p><p>$text</p>";}
else {echo 
"<p>Данные не добавлены!</p>";}}
else{echo 
"<p>Данные добавлены не полностью. Заполните поля.</p>";} 
?>     
</div>
</body>
</html>


Проблема. Текст, который я ввожу в поле text не вседа попадает в базу данных и не всегда отображается браузере.
Проверял по разному. Как правило с небольшим текстом проблем нет, а начиная от 3000 знаков и больше - то проходит в базу, то появляется фраза "Данные не добавлены".
Текст в поле вводил путем копирования, а если набираю в ручную или добавляю небольшими частями все работает и при больших объемах текста.
Не пойму, что может мешать. По идее тег <textarea> позволяет ввести любой по объему и по виду текст( я имею введу наличие тегов в тексте). Помогите.

  Ответить  
 
 автор: ONYX   (05.07.2011 в 10:33)   письмо автору
 
   для: Сергей Серый   (05.07.2011 в 10:26)
 

Структуру БД в студию

  Ответить  
 
 автор: Сергей Серый   (05.07.2011 в 20:48)   письмо автору
28.9 Кб
 
   для: ONYX   (05.07.2011 в 10:33)
 

Не знаю,как правильно подавать структуру БД "в студию", - я на форуме недавно. Прикрепил скриншот. Если не понятно, то на пальцах объясню: в БД табл."articles", в ней три поля: id, title, text.
Типы полей: int, varchar, text соответственно. Вот и вся БД. Находится она на локальном сервере.

  Ответить  
 
 автор: Slo_Nik   (05.07.2011 в 10:44)   письмо автору
 
   для: Сергей Серый   (05.07.2011 в 10:26)
 

какой тип данных для поля text?
установите TEXT и попробуйте снова
ещё полезно использовать mysql_error() и mysql_errno(), чтобы видеть ошибки при выполнении запроса к базе

<?php 
$query 
"INSERT INTO articles (title,text) VALUES ('$title','$text')";
if(!
mysql_query($query)){
 echo 
mysql_error();
}
else{
 echo 
"данные записаны";
}
?>

  Ответить  
 
 автор: Сергей Серый   (05.07.2011 в 21:08)   письмо автору
 
   для: Slo_Nik   (05.07.2011 в 10:44)
 

Спасибо за попытку помочь!
Тип данных поставил "TEXT" ничего не изменилось.
На вашу рекомендацию о проверке ( echo mysql_error(); ), скрипт отреагировал следующим образом:
Когда количество текста небольшое данные в базу попадают, но в браузере выводится "You have an error in your SQL syntax near '1' at line 1". Когда текст длинный, то "Query was empty".
Такое впечатление, что форма анализирует вид текста, как ввели его в поле - бред какой-то.

  Ответить  
 
 автор: cheops   (05.07.2011 в 23:59)   письмо автору
 
   для: Сергей Серый   (05.07.2011 в 21:08)
 

Скорее всего текст у вас содержит кавычки, данные перед вставкой следует экранировать
<?php
  
...
  if (!
get_magic_quotes_gpc())
  {
    
$title mysql_escape_string($title);
    
$text mysql_escape_string($text);
  }
  
$result mysql_query ("INSERT INTO articles (title,text) VALUES ('$title','$text')");
  ...
?>

  Ответить  
 
 автор: Сергей Серый   (06.07.2011 в 17:24)   письмо автору
 
   для: cheops   (05.07.2011 в 23:59)
 

Да, на самом деле. В текстовое поле формы вводился текст на украинском языке. В некоторых словах присутствует апостроф " п'ять, зв'язок " и т.д. SQL на них и реагировал. Спасибо за совет по экранированию данных. Спасибо всем, кто отозвался!!!

  Ответить  
 
 автор: Tamplier   (05.07.2011 в 10:57)   письмо автору
 
   для: Сергей Серый   (05.07.2011 в 10:26)
 

Уважаемый автор, а вы часом кавычки не забываете экранировать....
При определенных настройках сервера, к примеру одинарные кавычки могут сыграть весьма дурную шутку...

  Ответить  
 
 автор: Сергей Серый   (05.07.2011 в 21:11)   письмо автору
 
   для: Tamplier   (05.07.2011 в 10:57)
 

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

  Ответить  
 
 автор: cheops   (05.07.2011 в 12:35)   письмо автору
 
   для: Сергей Серый   (05.07.2011 в 10:26)
 

Что возвращает функция mysql_error()?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования