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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Загрузка файлов и запись в БД

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
redNek
Отправлено: 23 Мая, 2012 - 23:16:14
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Май 2012  
Откуда: Минск


Помог: 0 раз(а)




Подскажите, какой самый корректный способ записать имя загруженного файла в БД.
 
 Top
Crate
Отправлено: 24 Мая, 2012 - 08:43:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




redNek пишет:
самый корректный способ

redNek пишет:
записать имя загруженного файла
 
 Top
Muxa
Отправлено: 24 Мая, 2012 - 08:44:58
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


Помог: 5 раз(а)





Ха-ха

(Добавление)
все гениальное просто - просто запишите полное имя файла в базу инсертом)
 
 Top
avtor.fox
Отправлено: 24 Мая, 2012 - 09:08:56
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


Помог: 50 раз(а)




redNek, смотря что Вы хотите делать с этими "названиями". Если Вам просто нужно знать что картинки есть, пишите название файла вместе с его расширением в базу при загрузке на сервер, а потом просто при выводе тяните название.

Если что-то на подобии галереи, то клепаете табличку с id=>name=>link=>href=>description=>timestamp и пишите в неё свои картинки.
 
 Top
redNek
Отправлено: 24 Мая, 2012 - 09:59:00
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Май 2012  
Откуда: Минск


Помог: 0 раз(а)




Crate пишет:
redNek пишет:
самый корректный способ

redNek пишет:
записать имя загруженного файла

Ну да, спать надо было лечь вчера пораньше )
 
 Top
kappa
Отправлено: 24 Мая, 2012 - 11:08:27
Post Id



Посетитель


Покинул форум
Сообщений всего: 349
Дата рег-ции: Апр. 2011  


Помог: 3 раз(а)




Ничего толком не понять от вопроса
Создайте такую форму, загрузите файл и посмотрите на вывод
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. print_r($_FILES)
  3. ?>
  4. <form method="POST">
  5.     <input type="file" name="myfile">
  6.     <button>Загрузить</button>
  7. </form>

А для уникальности можно добавить time();
 
 Top
Crate
Отправлено: 24 Мая, 2012 - 12:54:09
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




kappa пишет:
<?PHP
print_r($_FILES)
?>
<form method="POST">
    <input type="file" name="myfile">
    <button>Загрузить</button>
</form>

И ничего у вас не выйдет. Надо так:
CODE (text):
скопировать код в буфер обмена
  1. <?PHP
  2. print_r($_FILES);
  3. ?>
  4. <form action="<?=$_SERVER['PHP_SELF']?>" method="POST" enctype=multipart/form-data>
  5.     <input type="file" name="myfile">
  6.     <button type="submit">Загрузить</button>
  7. </form>

(Отредактировано автором: 24 Мая, 2012 - 12:56:42)

 
 Top
redNek
Отправлено: 24 Мая, 2012 - 16:52:52
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Май 2012  
Откуда: Минск


Помог: 0 раз(а)




Crate пишет:

И ничего у вас не выйдет. Надо так:
CODE (text):
скопировать код в буфер обмена
  1. <?PHP
  2. print_r($_FILES);
  3. ?>
  4. <form action="<?=$_SERVER['PHP_SELF']?>" method="POST" enctype=multipart/form-data>
  5.     <input type="file" name="myfile">
  6.     <button type="submit">Загрузить</button>
  7. </form>

Это не проблема, картинки грузятся на сервер, все ок. Мне же надо выводить картинку, а для этого записать имя файла в базу. Есть таблица с колнками id, alias, header, content, image, type. Вот в колонку image и надо писать имя. Просто есть не одна таблица, надо еще и текстовые документы грузить и еще картинки. Хотелось бы чего-то универсальней, чем прямо прописать, что надо записать имя в конкретную колонку.
Картинку называю по полю alias, т.к. оно уникальное, тут тоже вопросов нет и зайдя в каталог легко понять к какой записи картинка относится.
Есть еще нюанс, в зависимости от type картинки в разные каталоги забрасываются. Можно ли избавится вот от этого кода:
PHP:
скопировать код в буфер обмена
  1. switch($_POST['type']) {
  2.         case "12": $link="main-news"; break;
  3.         case "15": $link="company-news"; break;
  4.         case "14": $link="economics-area"; break;
  5.         case "13": $link="economics-news"; break;
  6. }

Не записывая в type имя каталога?

(Отредактировано автором: 24 Мая, 2012 - 17:00:33)

 
 Top
redNek
Отправлено: 26 Мая, 2012 - 00:56:56
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Май 2012  
Откуда: Минск


Помог: 0 раз(а)




Вопрос еще. То, что массив $_FILES создается всегда, даже если пользователь оставил пустое поле, нормально? Хотелось бы вызывать нужную функцию только тогда, когда массив существует.
 
 Top
LIME
Отправлено: 26 Мая, 2012 - 07:06:30
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




 
 Top
redNek
Отправлено: 26 Мая, 2012 - 16:13:07
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Май 2012  
Откуда: Минск


Помог: 0 раз(а)





Я так и сделал с самого начала - не сработало, посмотрел в чем проблема: при пустом поле выбора файла все-равно создается массив: Array ( [image] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) ). Откуда ошибки загрузки, если ничего не грузилось?
 
 Top
LIME
Отправлено: 26 Мая, 2012 - 16:20:13
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




значит надо проверять на $_FILES[error] == 4
хз...я всегда знал имя файла загружаемого пока
 
 Top
redNek
Отправлено: 26 Мая, 2012 - 16:34:57
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Май 2012  
Откуда: Минск


Помог: 0 раз(а)




LIME пишет:
значит надо проверять на $_FILES[error] == 4
хз...я всегда знал имя файла загружаемого пока

PHP:
скопировать код в буфер обмена
  1. if($_FILES[$type]['error'] == 0){
  2.         …
  3. }

Так сделал, для работы достаточно.
 
 Top
LIME
Отправлено: 26 Мая, 2012 - 16:39:07
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




из мануала
CODE (html):
скопировать код в буфер обмена
  1. <form action="" method="post" enctype="multipart/form-data">
  2. <p>Изображения:
  3. <input type="file" name="pictures[]" />
  4. <input type="file" name="pictures[]" />
  5. <input type="file" name="pictures[]" />
  6. <input type="submit" value="Отправить" />
  7. </p>
  8. </form>
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. foreach ($_FILES["pictures"]["error"] as $key => $error) {
  3.     if ($error == UPLOAD_ERR_OK) {
  4.         $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
  5.         $name = $_FILES["pictures"]["name"][$key];
  6.         move_uploaded_file($tmp_name, "data/$name");
  7.     }
  8. }
  9. ?>
  10.  

(Отредактировано автором: 26 Мая, 2012 - 16:41:27)

 
 Top
htcsc
Отправлено: 04 Мая, 2015 - 16:58:56
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Апр. 2015  


Помог: 0 раз(а)




ш

(Отредактировано автором: 04 Мая, 2015 - 17:04:32)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB