|
|
|
|
<?php
if ((isset($_POST['t'])&& $_POST['t'] !="")
&& (isset($_POST['d'])&& $_POST['d'] !="")
&& (isset($_POST['s'])&& $_POST['s'] !="")
&& (isset($_POST['c'])&& $_POST['c'] !="")
&& (isset($_POST['date'])&& $_POST['date'] !=""))
{
////////////////////
}
?>
|
Здесь я проверяю наличие переменных и чтобы они были не пустые...
Это из серии проверки полей формы....
Както можно уменьшить код.... | |
|
|
|
|
|
|
|
для: serjinio
(13.07.2008 в 02:56)
| |
<?php
if(isset($_POST['t'], $_POST['d'], $_POST['s'], $_POST['c'], $_POST['date']) and !in_array('', $_POST))
{
////////////////////
}
|
Конечно in_array здесь замахивается на все значения массива $_POST, но можно ограничить перечислив нужные значения через конструкцию array().
Или объявить такую функцию:
<?php
function isnotempty($keys, &$array)
{
foreach($keys as $key)
{
if(!isset($array[$key]) or $array[$key] == '')
return false;
}
return true;
}
if(isnotempty(array('t', 'd', 's', 'c', 'date'), $_POST))
{
////////////////////
}
|
Или такую:
<?php
function isnotempty(&$array)
{
foreach(array_slice(func_get_args(), 1) as $key)
{
if(!isset($array[$key]) or $array[$key] == '')
return false;
}
return true;
}
if(isnotempty($_POST, 't', 'd', 's', 'c', 'date'))
{
////////////////////
}
|
| |
|
|
|
|
|
|
|
для: sms-send
(13.07.2008 в 03:40)
| | Спасибо, сейчас просплюсь и перепишу по новой,а то уже утро........:) | |
|
|
|
|
|
|
|
для: sms-send
(13.07.2008 в 03:40)
| | Все нормально заработало..и намного меньше кода...как я сразу не сообразил насчет массива..да вредно работать до утра...еще раз спасибо за помощь... | |
|
|
|
|
|
|
|
для: serjinio
(13.07.2008 в 02:56)
| |
<?
if ($_POST['t'] && $_POST['d'] && $_POST['s'] && $_POST['c'] && $_POST['date'])
{
////////////////////
}
?>
|
| |
|
|
|
|
|
|
|
для: Drago
(13.07.2008 в 05:44)
| | нельзя.
Нотайсы косяком полезут. | |
|
|
|
|
|
|
|
для: Trianon
(13.07.2008 в 10:21)
| | >нельзя.
>Нотайсы косяком полезут.
Ну и что? Кто-то обращает на них внимание?
Строчка в .htaccess решает эту проблему.
php_value error_reporting 7
|
| |
|
|
|
|
|
|
|
для: Drago
(13.07.2008 в 12:31)
| | Автор ветви обращает.
Точнее, автор кода в первом посте. | |
|
|
|
|
|
|
|
для: Trianon
(13.07.2008 в 12:35)
| | Кстати говоря, все зависит от логики приложения.
Например, при следующем подходе, нотайсов не будет:
<?php
error_reporting(2024);
if ($_POST)
{
if ($_POST['v1'] and $_POST['v2'] and $_POST['v3']) echo "cool";
else echo "no cool";
}
echo "<form method=post>
1 <input type=text name=v1><br>
2 <input type=text name=v2><br>
2 <input type=text name=v3><br>
<input type=submit name=send value=go><br></form>";
?>
|
| |
|
|
|
|
|
|
|
для: Drago
(13.07.2008 в 12:45)
| | И куда же они денутся? | |
|
|
|
|
|
|
|
для: sms-send
(13.07.2008 в 12:57)
| | никуда, потому что для их вывода не будет повода. | |
|
|
|
|
|
|
|
для: Drago
(13.07.2008 в 13:01)
| | Повод будет, если в массиве $_POST будет хотя бы один элемент.
Вообще мне такие измывательства над языком не нравятся =/
Зачем string или array неявно приводить к boolean, если есть операторы предназначенные для явного сравнения конкретных величин.. | |
|
|
|
|
|
|
|
для: sms-send
(13.07.2008 в 13:05)
| | Если сам язык это позволяет, то зачем ухудшать читаемость и засорять код использованием лишних функций?
>Вообще мне такие измывательства над языком не нравятся =/
на вкус ИЛИ цвет, все фломастеры разные. | |
|
|
|
|
|
|
|
для: Drago
(13.07.2008 в 13:13)
| | Ну лишними я бы их не назвал, а вот читаемость кода как раз портится от приведения string => boolean, например, строка "0" будет приведена к false, хотя это вполне рабочее значение для строки, а в коде эта логика не просматривается. | |
|
|
|
|
|
|
|
для: sms-send
(13.07.2008 в 13:20)
| | >а вот читаемость кода как раз портится от приведения string => boolean, например, строка "0" будет приведена к false, хотя это вполне рабочее значение для строки, а в коде эта логика не просматривается.
Это, как раз, портиться не читаемость, а уже логика скрипта.
И если она, логика, предполагает ввод в поле формы одного символа "0" (нуль), то и обрабатывать это поле должна соответственно. А именно, использовать строгое сравнение "===" переменной со строкой "0".
Поскольку, нестрогое сравнение, empty() и даже in_array(), приравняют нуль к false. И опять таки, нарушат логику. | |
|
|
|
|
|
|
|
для: Drago
(13.07.2008 в 13:35)
| | in_array() имеет 3ий параметр strict.
>И если она, логика, предполагает ввод в поле формы
У меня логика всегда предполагает ввод чего угодно, в том числе пустой строки и соответствующую реакцию. Конечно, это уже дело привычки и стиля, зато работает безотказно и логично. | |
|
|
|
|
|
|
|
для: sms-send
(13.07.2008 в 13:47)
| | >in_array() имеет 3ий параметр strict.
Так почему вы его не использовали в своем первом посте?
Ведь:
<?
$a = array(1, 2, 0);
if (!in_array('', $a))
?>
|
вернет false
>У меня логика всегда предполагает ввод чего угодно, в том числе пустой строки и соответствующую реакцию. Конечно, это уже дело привычки и стиля, зато работает безотказно и логично.
Я вам верю, но вы все же, так, для себя, потестируйте свои скрипты на ввод одного единственного символа нуль. | |
|
|
|
|
|
|
|
для: Drago
(13.07.2008 в 14:03)
| | - | |
|
|
|
|
|
|
|
для: Drago
(13.07.2008 в 14:03)
| | >Так почему вы его не использовали в своем первом посте?
Первый вариант был заведомо ошибочным, ниже я об этом написал. А в общем да, это недочёт.
>Я вам верю, но вы все же, так, для себя, потестируйте свои скрипты на ввод одного единственного символа нуль.
Это к чему?:) | |
|
|
|
|
|
|
|
для: Drago
(13.07.2008 в 12:45)
| | Вопрос о логике Вы плавно перевели в плоскость вопроса о стиле.
Объективности ради я в полемику вопросов стиля вступать зарекся очень давно.
Субъективно (подчеркиваю, это мое личное мнение, и я его никому не навязываю) мне такой подход (сокрытие диагностики на участке кода, превышающем фрагмент одной строки) омерзителен. | |
|
|
|
|
|
|
|
для: Drago
(13.07.2008 в 05:44)
| | так использовать нельзя потому что при внесении в БД получишь пустые поля в таблице...
в принципе можно сделать используя уничтожение переменной если ее значение не определено
<?php
$date = $_POST['date'];
if ($date == '')
{
unset($date);
}
?>
|
А затем можно и сравнивать
<?php
if (isset($t) && isset($d) && isset($s) && isset($date) && isset($c))
{
// если заполнены все поля (нет пустых) то заносим значения в БД...
}
?>
|
| |
|
|
|
|
|
|
|
для: serjinio
(13.07.2008 в 11:18)
| | > так использовать нельзя потому что при внесении в БД получишь пустые поля в таблице...
Недостаток кода Drago только в том, что эти переменные могут быть не определены и полезут ошибки. А пустые строки такой код не пропустит.
> isset($t) && isset($d) && isset($s) && isset($date) && isset($c)
isset($t, $d, $s, $date, $c) | |
|
|
|