Передача значения через <TEXTAREA>

4m@t!c

Александр
Передача значения через <TEXTAREA>

Передаю значения через $_POST, заполняя форму тега <TEXTAREA>
пишу в странице, которая обрабатывает значения формы
echo "_POST[f_var] = ". $_POST[$f_var]."<BR>";
echo "equal = ".($_POST[$f_var] != 0);
так вот получается. Если я ввожу текст, то первая строка честно отрабатывает, а вторая выдает
Код:
equal =
А вот если я ввожу цифры, то первая обрабаиывается и вторая строка выдает
Код:
equal = 1
.
Если я ввожу цифры и буквы, то опять
Код:
equal =
.
почему обрбатываются только цифры?
 

tony2001

TeaM PHPClub
пожалуйста, еще раз, но более четче.
непонятно кто-куда-что вводит и кто-где-как "не обрбатывает".
 

Cougar

Кошак
Потому что если строка, которую ты приводишь к типу int (а ты её как раз и приводишь, правда, неявно), начинается НЕ с цифры - то она интерпретируется как ноль.
 

4m@t!c

Александр
На странице с формой я заполняю поле тега <TEXTAREA> и передаю значения на второй странице. Записано
PHP:
function set_session_varvalue_by_varname($f_var)
{
   echo "_POST[f_var] = ". $_POST[$f_var]."<BR>";
   echo "equal = ".($_POST[$f_var] != "0")."<BR>";
   if($_POST[$f_var] != 0 && $_POST[$f_var] != "" && $_POST[$f_var] != "0")
   {
      $_SESSION[$f_var] = $_POST[$f_var];
      echo "!!!<BR>";
   }
   if($_POST[$f_var] != "" && $_POST[$f_var] != 0 && $_POST[$f_var] != "0")
   {
      $_SESSION[$f_var] = $_POST[$f_var];
      echo "???<BR>";
      return $_SESSION[$f_var];
   }
   else
      return "Отстуствует значение";
}
Рещультат кода следующий:
1 случай. Ввожу цифры "111":
Код:
$_POST[f_var] = 111
equal = 1
!!!
???
111
2 случай. Ввожу цифры "qwerty":
Код:
$_POST[f_var] = qwerty
equal = 1
Отсутствует значение
Вот такие варианты
 

Profic

just Profic (PHP5 BetaTeam)
4m@t!c
Нет ты скажи, а зачем тебе такая прорва проверок?
Что именно ты хочешь ими добиться?
Т.к. именно из-зп них у тебя все работает не так как ты думаешь, но однако прошу заметить, ты сам запрограммировал такое поведение.
И сходи по ссылке которую дал SelenIT. Пока не прочтешь - не возвращайся.
 

Фанат

oncle terrible
Команда форума
никогда не понимал такой каши.
к чему здесь приплетены формы, сессии и функции?

Неужели нельзя идти от простого?
Сначала научиться сравнивать значения.
потом, если все работает - научиться передавать из формы.
потом, если все работает - учиться работать с сессиями?
 

Фанат

oncle terrible
Команда форума
Кстати, 4m@t!c
тебе очень не помешает попытаться словами объяснить то, чего ты хочешь.
Тебе в этом случае расскажут, как это сделать
 

4m@t!c

Александр
Начинаю заниматься извратом
пишу функцию так
PHP:
function set_session_varvalue_by_varname($f_var)
{
   echo "<CODE>\$_POST[f_var] = ".addslashes($_POST[$f_var])."</CODE><BR>";
   echo "equal = ".($_POST[$f_var] != "0")."<BR>";
   $test = $_POST[$f_var];
   echo $test."<BR>";
   $num = strlen($test);
   if($num != 0)
   {
      echo "test STRING value by Lenght!!!!! Length = ".$num." <BR>";
   }
   if($test != 0 && $test != "" && $test != "0")
   {
      echo "test STRING value by transit var!!!!! <BR>";
   }
   if($_POST[$f_var] != 0 && $_POST[$f_var] != "" && $_POST[$f_var] != "0")
   {
       $_SESSION[$f_var] = $_POST[$f_var];
      echo "!!!<BR>";
   }
   if($_POST[$f_var] != "" && $_POST[$f_var] != 0 && $_POST[$f_var] != "0")
   {
      $_SESSION[$f_var] = $_POST[$f_var];
      echo "???<BR>";
      return $_SESSION[$f_var];
   }
   else
      return "Отстуствует значение";
}
А результат такой:
Код:
$_POST[f_var] = qwerty
equal = 1
qwerty
test STRING value by Lenght!!!!! Length = 6 
Отсутствует значение
Я понимаю, что содержимое переменной определяет ее тип.
Получается TEXTAREA передает числа, раз "вылезла" проверка на "ноль" без кавычек.
Мне нужно принимать значения надцати переменных, которые вносятся через <TEXTAREA>. Принимать, проверять содержимоей на пустую строку, и записывать в БД. Сессии завожу, что бы хранить в них значения, на случай, если нужно вернуться назад на форму и изменить значения.

-~{}~ 25.11.04 18:53:

помимо TEXTAREA есть и другие элементы управления. А функцией я попытался объеденить обработку значений, полученных из разных типов управления.
 

Фанат

oncle terrible
Команда форума
Саша.
Давай ты не будешь заниматься извратами?
И не будешь делать то, что тебе не надо?
И не будешь делать все ОДНОВРЕМЕННО?

Давай ты пока забудешь про сессии и про формы?
Давай ты сначала научишься принимать данные и записывать в бд, а потом продолжишь дальше?

-~{}~ 25.11.04 20:30:

а потом, по вопросу вывода заполненной формы, посмотришь здесь:
http://phpclub.ru/talk/showthread.php?s=&threadid=43521
 

4m@t!c

Александр
Еще раз, попробую понять. Буду признателен если ответить так же попунктно. правильно ли я все понял.
1. Операторы сравнения для строк и для чисел разные.
2. приоритет при сравнении операндов такой. Оператор сравнения->числа->буквы
3. Сравнивая строку с числом Я пользовался опреаторами сравнения для чисел, которые преобразовывали строку в нуль. И как резальта - получал из трех разных сравнений гарантированно один false, который и глушил строки ветки true в операторе ветвления.
4. Для ПХП в сравнении операндов "", 0, "0" - это одно и тоже
5. как результат написал $_POST[$f_var] - пока что все работает.
З.Ы. спасибо, что сразу не ответили, а поглумились надо мной...;)))
 

Sniffer

Новичок
Хочу дать один совет дельный, меня так самого научили избавлятся от подобного рода ошбок, связанный с хорошим стилем программирование, раньше из-за невнимательности я тоже писал что-то типа
PHP:
if ($_POST["variable"] = 1) {.....}
Хорошие люди меня образумили и теперь я при сравнении с каким-нить числом пишу так
PHP:
if (1 == $_POST["variable"]) {.....}
попробуйте так написать:
PHP:
if (1 = $_POST["variable"]) {.....}
Сразу будет ошибка, а в первом случаи ошибки не будет.
Вот так добрые люди помогли хоть как-то исправить мой кривой стиль программирования.

p.s. Может и не в тему, но может кому пригодится.
 

Фанат

oncle terrible
Команда форума
Вообще-то, Саша, как раз твои литературные творения выглядят издевательством.
Тебе дают ссылки, на документацию,
которые ВСЕ здесь читали и из которых узнали, как пхп сравнивает числа со строками.

Над тобой никто не глумится. просто с тобой разговаривают, как с человеком, который ЧИТАЛ.
А ты, оказывается, не любишь читать.
Ну так ты сам себе злобный баклан.
идешь и читаешь
http://www.php.net/manual/ru/language.operators.comparison.php
Там еще ссылки есть.
Если ты думаешь, что форум - это бесплатное устройство для чтения тебе мануала, то ты заблуждаешься.

-~{}~ 25.11.04 23:15:

Да, забыл сказать.
Все твои пункты - бред.
 

4m@t!c

Александр
2 ФАНАТ
Спасибо за урлу из последней мессаги, это то, что нужно.
И еще, я не считаю, что форум - это "халявное устройство". Лезу на форум, когда трачу кучу времени на решение проблемы (читаю и доку и форум, смотрю примеры ...). А то что, четко не понимаю, что искать что бы решить проблему, так это уже другой вопрос.
 
Сверху