|
|
|
| Гуглил сейчас по поводу проверки формы на заполнение, и на многих форумах пишут, что
для этого существует функция empty().
Но ведь она, эта функция, считает поле с нулем за пустое, а поле, где кроме пробелов ничего нет, за
заполненное...
Второй случай можно решить с помощью trim(), но, мне кажется, это полумера, ведь не в каждом поле нужно чистить "левые" пробелы .
В случае с нулем вообще дичь ) Я преставляю, как сижу на сайте правоохранительных органов, там в форме есть поле "Введите количество Ваших уголовных нарушений". И ты такой вводишь 0, а тебе хопааааа, выдают: "Вы не заполнили количество нарушений) .
Очевидно , что я чего-то не понимаю, объясните пожалуйста, как решить эти проблемы с empty , и если не его использовать, то что? | |
|
|
|
|
|
|
|
для: Ramundo
(25.10.2016 в 21:56)
| | А зачем левые, да и правые пробелы, какую существенную информацию они могут нести? А для того чтобы учитывать 0, серверный сценарий "знает", что за тип данных у каждого поля, и соответственно проверяет их. А чтобы не пропускать пустые поля, это trim, и empty совсем не обязательно, в РНР много инструментов, и на empty свет клином не сошелся. | |
|
|
|
|
|
|
|
для: confirm
(26.10.2016 в 02:21)
| | Спасибо за разъяснение, теперь все понятно. Меня вводило в заблуждение то, что очень часто тычут на это самое empty в темах о проверке заполнения формы. | |
|
|
|
|
|
|
|
для: ramundo
(26.10.2016 в 21:45)
| | Мало ли чего пишут, пишут примеры, а думать и использовать инструментарий языка нужно самому.
<?
$data = array_map('trim', $_POST);
if($empty = array_intersect($data, [''])) {
//$empty содержит пустые поля формы
}
|
| |
|
|
|
|
|
|
|
для: confirm
(27.10.2016 в 03:48)
| | in_array "дешевле", не так ли? | |
|
|
|
|
|
|
|
для: Deed
(28.10.2016 в 08:31)
| | Чего? Причем тут In_array, вы понимаете смысл написанного? | |
|
|
|
|
|
|
|
для: confirm
(28.10.2016 в 14:00)
| |
<?
$data = array_map('trim', $_POST);
if(in_array('', $data)) {
//Зачем ему перечень пустых полей? А так - нашли пустое и сразу сообщили об этом. array_intersect же проходит весь массив до конца.
}
|
| |
|
|
|
|
|
|
|
для: Deed
(29.10.2016 в 11:07)
| | Еще раз - вы смысл этого понимаете?
<?
if($empty = array_intersect( array_map('trim', $_POST), [''])) {
//$empty содержит пустые поля формы
}
|
| |
|
|
|
|
|
|
|
для: confirm
(29.10.2016 в 16:14)
| | ЗАЧЕМ ЕМУ МАССИВ С ИНДЕКСАМИ-ПУСТЫМИ ПОЛЯМИ?
Ему нужно просто знать, что какое-то поле пустое.
Не? | |
|
|
|
|
|
|
|
для: Deed
(29.10.2016 в 20:23)
| | Из чего сделано заключение, что ему надо только наличие пустого?
Вопрос стоит о самом применении empty(), а для этого надо проверять каждый ключ отдельно и использование in_array() по сути не далеко от empty(). Прием данных формы, это диалог с клиентом, и сервер обязан сообщать об ошибках. А array_intersect($array, ['']), это не массив с пустыми полями, а ключи по которым сервер можно сообщить клиенту в каких полях формы допущены ошибки.
И только если вам по барабану что и где, можете применять in_array(). | |
|
|
|
|
|
|
|
для: confirm
(30.10.2016 в 01:08)
| | Ну да. Я ж про то и говорил.
Все нормально. | |
|
|
|