Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Формы
Форумы портала PHP.SU » » Вопросы новичков » Формы

Страниц (1): [1]
 

1. imper - 26 Февраля, 2012 - 11:07:13 - перейти к сообщению
тут такая проблемка вот код формы
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form action="index.php" method="post" id="form">
  3.       сообщение       <textarea  name="text" id="forma" /></textarea> <!--пробовал и обычную форму -->
  4.               <input id="knopka" type="submit" value="Отправить" class="button button-blue" />
  5. </form>

а вот php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.    require_once 'login.php';
  5.    require_once 'connect.php';
  6.    
  7. if (isset($_POST['text'])) //вот здесь проблема, таблица заполняется даже если форма пуста и отправляет пустое значение(
  8. {
  9. $text = get_post('text');
  10. $text = net_tag($text);
  11. $query = "INSERT INTO novosti VALUES" .
  12.  "('NULL','$text')";
  13. if(!mysql_query($query, $db_server))
  14. echo "Сбой при вставке данных $query<br />" .
  15.                 mysql_error() . "<br /><br />";
  16. }
  17.  
  18.  
  19.    function get_post($var)
  20.    {
  21.        return mysql_real_escape_string($_POST[$var]);
  22.    }
  23.    function net_tag($cool)
  24.    {
  25.             $cool = htmlentities($cool);
  26.             $cool = strip_tags($cool);
  27.             $cool = stripslashes($cool);
  28.    }
  29.    ?>

пробовал и тупому if($_POST['text'] != "") и так if($_POST['text'] != FALSE)
и даже if($_POST['text'] == FALSE)
{
сообщение о пустой форме
}
else
{
вставка в таблицу и т д
}

ну и аналогично с if($_POST['text'] == "")

и тернарным оператором пробовал всё равно

и всё равно таблица заполняется даже если форма пуста и отправляет пустое значение(
Что мне сделать???
2. Symby - 26 Февраля, 2012 - 11:11:03 - перейти к сообщению
Проверить функцией "empty" пуста ли переменная.
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!empty($_POST['text']))  //Если параметр запроса 'text' не пустой то заполнить таблицу
  3.  


Цитата:
Что мне сделать???

Читать батюшка, литературу для начинающих.
3. imper - 26 Февраля, 2012 - 11:16:14 - перейти к сообщению
Symby пишет:
Проверить функцией "empty" пуста ли переменная.
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!empty($_POST['text']))  //Если параметр запроса 'text' не пустой то заполнить таблицу
  3.  


Цитата:
Что мне сделать???

Читать батюшка, литературу для начинающих.


Радость ну это я осилил =-)

ООО, щас он короче при пустой форме не передаёт данные в таблицу, ахахахах а при заполненной форме передаёт пустое значение в таблицу))
Первый раз такая проблема, обычно isset() лучше всего подходил под эту задачу
4. Pingvinenok_Lolo - 26 Февраля, 2012 - 11:16:59 - перейти к сообщению
if (isset ($_POST['knopka']))
{
//выполняем запрос к базе
}
т.е. если кнопка нажата, только тогда данные вносятся в БД
5. imper - 26 Февраля, 2012 - 11:21:56 - перейти к сообщению
Pingvinenok_Lolo пишет:
if (isset ($_POST['knopka']))
{
//выполняем запрос к базе
}
т.е. если кнопка нажата, только тогда данные вносятся в БД

Радость это хорошо ахахахах, только мне надо что бы проверялась форма, а то он может и пустое значение отправить в бд
6. Pingvinenok_Lolo - 26 Февраля, 2012 - 11:25:27 - перейти к сообщению
Радость это хорошо ахахахах, только мне надо что бы проверялась форма, а то он может и пустое значение отправить в бд[/quote]
так сделайте две проверки на knopka и text ))
7. imper - 26 Февраля, 2012 - 11:27:42 - перейти к сообщению
Pingvinenok_Lolo пишет:
Радость это хорошо ахахахах, только мне надо что бы проверялась форма, а то он может и пустое значение отправить в бд

так сделайте две проверки на knopka и text ))[/quote]

Радость обезательно сделаю
8. Symby - 26 Февраля, 2012 - 11:34:39 - перейти к сообщению
imper пишет:
обычно isset() лучше всего подходил под эту задачу

Хм isset же проверяет инициализировано ли переменная, он не проверяет какое значение в ней, ему без разницы.
PHP:
скопировать код в буфер обмена
  1.  
  2. $var = 0; // Устанавливаем значение 0
  3. // Проверка условия вернет true т.к. переменная инициализирована
  4. if (isset($var)) echo "Переманная var со значением 0 вернет TRUE";
  5. else echo "FALSE";
  6. // Уничтожаем переменную
  7. unset($var);
  8. echo "<br>";
  9. // Проверка условия теперь вернет false т.к. переменную мы уничтожили
  10. if (isset($var)) echo "TRUE";
  11. else echo "Переменая var была не инициализированна либо уничтожена FALSE";
  12. // Снова присваиваем переменной var значение 1
  13. $var = 1;
  14. echo "<br>";
  15. // Проверка условия вернет так же true, т.к. переменная инициализирована
  16. if (isset($var)) echo "Переменная var со значением 1 вернет TRUE";
  17. else echo "FALSE";
  18.  

Верхнем примере видно что isset без разницы какое значение переменная содержит.
А функция empty в нижнем примере вернет true, т.к. переменная var равна нулю.
PHP:
скопировать код в буфер обмена
  1.  
  2. $var = 0; // Устанавливаем значение 0
  3. // Проверка условия вернет true т.к. 0 воспринимается как пустое.
  4. if (empty($var)) echo "Переменная пуста";
  5. else echo "Перемменая имеет значения отличное от нуля или пустой строки";
  6.  


Хм, а тут может так надо?
PHP:
скопировать код в буфер обмена
  1.  
  2. $text = get_post('text');
  3. //Вместо верхнего написать
  4. $text = get_post($_POST['text']);
  5.  
9. imper - 26 Февраля, 2012 - 11:40:52 - перейти к сообщению
это понятно, но почему тогда при заполнении формы в таблицу пустое значение заполняется когда я применяю empty() ???
10. Symby - 26 Февраля, 2012 - 11:52:12 - перейти к сообщению
imper пишет:
но почему тогда при заполнении формы в таблицу пустое значение заполняется когда я применяю empty() ???

Приведите пример как вы проверяете данные? Может у вас на уровне передаче базе коверкаются данные?

Вот написал скрипт при помощи isset и empty - все работает.
PHP:
скопировать код в буфер обмена
  1.  
  2. <meta charset='utf-8'>
  3. <form action='test3.php' method='POST' name='ff'>
  4. <textarea name='text'></textarea><br>
  5. <input type='submit' name='ok'>
  6. </form>
  7.  
  8. <?PHP
  9. if (isset($_POST['ok'])) {
  10.         echo "Была нажата кнопка \"Отправить\".<br>";
  11.         if (!empty($_POST['text'])) echo "Данные были переданны скрипту!" . "&nbsp;" . $_POST['text'];
  12.         else echo "Форма ввода сообщения была не заполнена!";
  13. }
  14.  
  15. ?>
  16.  
11. imper - 26 Февраля, 2012 - 11:57:36 - перейти к сообщению
там в самом вверху весь код целиком, я щас тут построчно всё начал проверять тут дело в функции проверки данных)
(Добавление)
всё нашёл как исправить,
вместо последних функций надо эти вставить и вс1 работает =-)

PHP:
скопировать код в буфер обмена
  1. function get_post($var)
  2.    {
  3.        return mysql_real_escape_string($_POST[$var]);
  4.    }
  5.   function net_tag($cool)
  6.    {
  7.         $cool = htmlspecialchars(strip_tags($cool), ENT_QUOTES, 'Windows-1251');
  8.         return $cool;
  9.    }
  10.    mysql_close($db_server);

(Добавление)
я забыл просто, у меня уже эта проблема была в функции htmlentities() она с русским языком не кантачит(
ды ещё я и про return забыл))

 

Powered by ExBB FM 1.0 RC1