Проблема multipart/form-data

romanich

Новичок
Проблема multipart/form-data

Есть простая форма:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="text" name="name"><br>
<input type="file" name="userfile"><br>
<input type="submit" name="romula" value="Отправить">
</form>
Все отправляется и все записывается. В этом проблем нет.
ПРОБЛЕМА в том, что если, к примеру, ячейка <input type="text" name="name"> не заполненная, пустая, то все равно данная переменная передается
if (isset($name)) {
print ("Переменная существует");
}
Выводит переменная существует. Хотя если попытаться распечатать данную переменную, ничего не выведит выведит.

Как решить данную промблему?
 

SiMM

Новичок
[m]empty[/m]
И вообще - столько времени заниматься PHP и не знать, что переменная передаётся ВСЕГДА, независимо от того, заполнял её пользователь или оставил пустой - это нечто.
 

milan

Новичок
romanich
так то что она пустая не означает , что её нет

-~{}~ 14.06.05 16:37:

Фанат Фаната
так она всё равно передастся... если он ее в форму ставит
 

romanich

Новичок
Автор оригинала: SiMM
[m]empty[/m]
И вообще - столько времени заниматься PHP и не знать, что переменная передаётся ВСЕГДА, независимо от того, заполнял её пользователь или оставил пустой - это нечто.
Не вижу разницы, между empty и isset. В первом и во втором случае идет проверка было ли присвоено какое-либо значение переменной, в данном случае $name. Значение $name присвоено не было, но при проверке данная переменная всплывает.
Если я буду делать проверку через empty, то что? Переменной $name всегда присвоено какое-либо значение, даже если она пустая.
 

milan

Новичок
romanich
разница в том что ИССЕТ проверяет существование
а ЕМТИ проверяет на пустоту
 

Фанат

oncle terrible
Команда форума
romanich
от тебя не требуется видеть разницу. Равно, как не требуется от тебя и любых других интеллектуальных усилий.
Всё, что тебе нужно - это совершить механическое действие по замене функции isset на ту, которую тебе принесли на блюдечке.
только действие будет обратное - при проверке надо писать "переменная НЕ заполнена"

мнение же твоё про разницу здесь никого не интересует.
 

romanich

Новичок
Автор оригинала: milan
romanich
разница в том что ИССЕТ проверяет существование
а ЕМТИ проверяет на пустоту
Хорошо, тогда как сделать проверку следующего вида:
если переменной $name не присвоено значение, а переменной userfile присвоено значение?
 

romanich

Новичок
Все уже разобрался, спасибо всем, извините за дурацкий вопрос. Теперь буду знать. Просто в одной книге у меня так написано: Функция isset() позволяет определить, присвоено ли переменной какое-либо значение. Если значение присвоено функция возвращает true.

До этого вроде так и делал, и все проходило. А здесь...
Спасибо еще раз всем, удачи.
 

SelenIT

IT-лунатик :)
romanich
Все правильно (в данном случае). Пустая строка тоже является "каким-либо значением".
 

slego

Новичок
Вот
http://www.322222.dp.ua/topX/test/null_test.php
может кому интересно, сделал сравнительную таблицу работы функций isset(), is_null(), empty() при различных входных значениях.
Последний столбик - моя функция
PHP:
return empty($i) && ((string)$i != (string)(int)$i)
, которая "корректно" проверяет пустые строки, т.к. по моему скромному мнению "0" != пустое значение.
Возможно, условие можно записать лаконичней. Но, по-быстрому, в голову пришло только это.
 

cober

Guest
isset отличается от empty только тем, что 0 для empty тоже является пустым... по моему так...
 

slego

Новичок
ну, так и есть, разве кто-то спорит? ;) Причем и 0 и 0.0 и "0" - все пусто.

Вопрос в другом, действительно ли 0 - это пустое значение?
Допустим, механизм заказа путевок: нужно указать сколько взрослых и сколько детей. Соответственно при получении проверить данные, чтобы они были заполнены.
Если сделать так взрослы = 2, дети = 0 и проверять их при помощи empty() , то ЧТО нужно присвоить параметру дети, чтобы оно расценивалось как ЗАПОЛНЕННОЕ НУЛЕВОЕ значение?
 

slego

Новичок
Нет, приведение типов мне не нужно.
Мне нужен УНИВЕРСАЛЬНЫЙ способ определения "пустая" переменная или нет - вне зависимости от типа.
Сделал

return empty($i) && ((string)$i != (string)(int)$i)

пока подходит
 
Сверху