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 » PHP » Программирование на PHP » почему не работает конструкция

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

1. leshiy_SV - 12 Ноября, 2009 - 13:57:31 - перейти к сообщению
почему не работает конструкция
if (isset($_FILES['ImgFiles'])) {действия;}
или
if (!empty($_FILES['ImgFiles'])) {действия;}
типа если файлы загружены то делай одно, если нет по пропустить дейcтвие или можно как нибудь по другому это организовать
2. Champion - 12 Ноября, 2009 - 14:50:01 - перейти к сообщению
может быть, потому, что не ImgFiles ?
3. leshiy_SV - 12 Ноября, 2009 - 14:59:18 - перейти к сообщению
Champion пишет:
может быть, потому, что не ImgFiles ?

нет все правильно файл загружается из этой формы
CODE (text):
скопировать код в буфер обмена
  1. <input type="file" name="ImgFiles[]" >
4. Champion - 12 Ноября, 2009 - 15:22:14 - перейти к сообщению
а что написано <form вот тут> ?
И "не работает" - это что обозначает?
5. leshiy_SV - 12 Ноября, 2009 - 15:54:58 - перейти к сообщению
Champion пишет:
а что написано <form вот тут> ?

написано
CODE (text):
скопировать код в буфер обмена
  1. <form method="post" id="customForm" name="userForm" action="action.php" enctype=multipart/form-data>

Champion пишет:
И "не работает" - это что обозначает?
означает если файлы загружены (т.е массив $_FILES['ImgFiles'] не пустой, в этом же массиве храняться данные загружаемых файлов), то выполняются определенные действия.
В итоге если пишем (!empty($_FILES['ImgFiles']))т.е. массив не пустой, то блок действий выполняется все равно загружены файлы или нет, а если (empty($_FILES['ImgFiles'])) то вообще не выполняются никогда. Вот как то так. Не понял
6. Stierus - 12 Ноября, 2009 - 15:58:17 - перейти к сообщению
1. Что именно не работает
2. Что выдает код:
7. JROUD - 12 Ноября, 2009 - 16:25:16 - перейти к сообщению
leshiy_SV, попробуйте:
if (isset($_FILES['ImgFiles'])) {действия;}
или
if ($_FILES['ImgFiles']!=NULL) {действия;}
8. Djin_dj - 12 Ноября, 2009 - 18:40:06 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. if(isset($_FILES) && count($_FILES['ImgFiles']) > 0)
  2. {
  3. //действие
  4. }
9. Nestor - 12 Ноября, 2009 - 21:01:30 - перейти к сообщению
<form method="post" id="customForm" name="userForm" action="action.php" enctype="multipart/form-data">
10. leshiy_SV - 13 Ноября, 2009 - 07:14:01 - перейти к сообщению
Stierus пишет:
1. Что именно не работает
2. Что выдает код:

вот что, когда загружаю два файла
CODE (text):
скопировать код в буфер обмена
  1. array (
  2.   'UserFile' =>
  3.   array (
  4.     'name' => '',
  5.     'type' => '',
  6.     'tmp_name' => '',
  7.     'error' => 4,
  8.     'size' => 0,
  9.   ),
  10.   'ImgFiles' =>
  11.   array (
  12.     'name' =>
  13.     array (
  14.       0 => 'happy_valentin_24.jpg',
  15.       1 => 'priroda24.jpg',
  16.     ),
  17.     'type' =>
  18.     array (
  19.       0 => 'image/jpeg',
  20.       1 => 'image/jpeg',
  21.     ),
  22.     'tmp_name' =>
  23.     array (
  24.       0 => 'C:\\temp\\uploadtemp\\php1F2E.tmp',
  25.       1 => 'C:\\temp\\uploadtemp\\php1F2F.tmp',
  26.     ),
  27.     'error' =>
  28.     array (
  29.       0 => 0,
  30.       1 => 0,
  31.     ),
  32.     'size' =>
  33.     array (
  34.       0 => 89769,
  35.       1 => 21710,
  36.     ),
  37.   ),
  38. )

и вот когда, поля для загрузки оставляю пустым
CODE (text):
скопировать код в буфер обмена
  1. array (
  2.   'UserFile' =>
  3.   array (
  4.     'name' => '',
  5.     'type' => '',
  6.     'tmp_name' => '',
  7.     'error' => 4,
  8.     'size' => 0,
  9.   ),
  10.   'ImgFiles' =>
  11.   array (
  12.     'name' =>
  13.     array (
  14.       0 => '',
  15.     ),
  16.     'type' =>
  17.     array (
  18.       0 => '',
  19.     ),
  20.     'tmp_name' =>
  21.     array (
  22.       0 => '',
  23.     ),
  24.     'error' =>
  25.     array (
  26.       0 => 4,
  27.     ),
  28.     'size' =>
  29.     array (
  30.       0 => 0,
  31.     ),
  32.   ),
  33. )
11. Champion - 13 Ноября, 2009 - 08:36:47 - перейти к сообщению
ну вот видишь, значит isset всегда будет истиным.
12. leshiy_SV - 13 Ноября, 2009 - 08:40:08 - перейти к сообщению
Все, вроде рабобрался, проштудировав еще раз документацию по загрузке файлов. получается что даже если поля загрузки файлов остаются пустыми, при оправке из формы данные передаются в php скрипт и массив $_FILES создается в любом случае, при этом все элементы массива пустые кроме $_FILES['uploadfile']['error'] сюда заноситься код ошибки 4 (UPLOAD_ERR_NO_FILE Значение: 4; Файл не был загружен.)
(Добавление)
выход наверное использовать только типа такой конструкции
CODE (text):
скопировать код в буфер обмена
  1.  if (!empty($_FILES['AudioFiles']['tmp_name'][0])){};
только так теперь работает правильно
13. JustUserR - 14 Ноября, 2009 - 00:58:42 - перейти к сообщению
leshiy_SV Да в PHP отсутствующая переменная и пустая перменная совершенно разные вещи - кстати так сказать отсутсвуюзая перменная эквивалентна значению NULL - поэтому если что можете смело сравнивать с ним значения переменной

 

Powered by ExBB FM 1.0 RC1