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 :: Версия для печати :: Загрузка изображений в базу данных. №2
Форумы портала PHP.SU » » Вопросы новичков » Загрузка изображений в базу данных. №2

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

1. El Diablo - 04 Апреля, 2013 - 11:23:15 - перейти к сообщению
Доброго времени суток, не могу дать ума по поводу этой темы:
http://www.php.su/forum/topic.ph...1&topic=3241

вот мой код:

PHP:
скопировать код в буфер обмена
  1.  
  2. # mkdir("file", 0777);
  3. print '<html>
  4. <title>Загрузка файла</title>
  5. <form action="" method="POST" enctype=multipart/form-data>
  6. <input type="file" name="uploadfile" value="Обзор">
  7. <input type="submit" value="ok">
  8. </html>';
  9.  
  10. $uploaddir='./files/';
  11. $uploadfile=$uploaddir.basename($_FILES['uploadfile']['name']);
  12.  
  13. if(copy($_FILES['uploadfile']['tmp_name'], $uploadfile)){
  14. $res = mysql_query("INSERT INTO pic4(pic)  VALUES(".$_FILES['uploadfile']['name'].")");
  15. if($res) echo "Файл упешно загружен";
  16. else echo "Путь не добавлен в базу данных, но файл загружен";
  17. }
  18.  else echo "Файл не загружен,максимальный размер файла 2 мб ";
  19.  


у меня такая же проблема, суть такова, перед отправкой формы ругается на uploadfile а после загрузки файл копируется на сайт но не добавляется в базу. Типы полей проверил стоит varchar(255)

перед загрузкой ругается вот на вот эти строчки:

PHP:
скопировать код в буфер обмена
  1. $uploadfile=$uploaddir.basename($_FILES['uploadfile']['name']);
  2.  
  3. if(copy($_FILES['uploadfile']['tmp_name'], $uploadfile)){

такое ощущение, что не признает переменные (собственно мне так и пишет не опознанные переменные находятся в коде).


P.S. Ребят не пинайте я только только начинаю =)
P.S.S. Для администраторов и модераторов, не закрывайте тему, не хочу апать ту старую тему которую привел в самом начале =)
P.S.S.S. Создал тему от без исходности, заканчивается 2ой день который я провожу вместе с этим кодом..
2. LIME - 04 Апреля, 2013 - 11:33:14 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $res = mysql_query("INSERT INTO pic4(pic)  VALUES(".$_FILES['uploadfile']['name'].")") or die(mysql_error());
3. El Diablo - 04 Апреля, 2013 - 11:47:35 - перейти к сообщению
LIME теперь после загрузки файла, он ругается:

Цитата:
Unknown table 'JmuX572Ieww' in field list

Файл загружаю с таким именем: JmuX572Ieww.jpg

получается оп говорит, что JmuX572Ieww не знает куда добавить >
это имя файла а следовательно значение ['name'] >
получается добавляются 2 значения: ['uploadfile'] и ['name'] >
тогда я сделал, что для ['uploadfile'] - upload ряд, а для ['name'] - pic, но после того как стало выдавать ошибку:

Цитата:
Column count doesn't match value count at row 1


Я так пологаю я не правильно сделал?

PHP:
скопировать код в буфер обмена
  1. $res = mysql_query("INSERT INTO pic4(upload,pic)  VALUES(".$_FILES['uploadfile']['name'].")") or die(mysql_error());


P.S. Перед загрузкой файла ошибки так и не ушли Недовольство, огорчение
4. esterio - 04 Апреля, 2013 - 11:51:09 - перейти к сообщению
1. загрузка изображений в базу плохая идея
2. данные нужно екранировать
3. поле должно быть blob.
4. Unknown table 'JmuX572Ieww' in field list - гугл еранслейт в помощь
5. El Diablo - 04 Апреля, 2013 - 11:55:49 - перейти к сообщению
esterio не не не, там в коде же написано, что файлы загружаются:



в папку files которая находится в корневой папке.

файл кстати там появляется, но он не заносится в базу (под этим я имею в виду не заносится его путь и имя в базу,а не сам файл)

я не правильно сформулировал сообщение, то что заносить файлы в базу плохая идея это я понял полазав по форумам, я собственно к этому и не стремился изначально т.к. размер базы будет иметь огромные размеры и не оправдано занимать место, а также оперировать с базой будет сложнее. Для базы данных только данные но не сами файлы =)
6. LIME - 04 Апреля, 2013 - 12:13:34 - перейти к сообщению
El Diablo в какую таблицу загружаешь???(эх не сматериться бы)
7. El Diablo - 04 Апреля, 2013 - 12:44:54 - перейти к сообщению
LIME загружаю в таблицу под названием pic4 данные заносятся в колонку под названием upload, pic, сама табличка в присоедниненном файле.

Суть такова, после выбора файла и нажатия Ок, файл копируется в нужный каталог, но в базу данные о файле не заносятся. я предполагал, что будут заносится данные по имени файла, для того что бы я потом вывел в нужном мне месте ссылку куда вставляется название файла из базы и выводится изображение.

P.S. Если есть уроки по добавлению файлов запилите ссылочки буду очень благодарен!
8. avtor.fox - 04 Апреля, 2013 - 12:52:40 - перейти к сообщению
El Diablo, числовые значения могут писаться в базу и без кавычек -

Строки должны быть обязательно в кавычках -
CODE (SQL):
скопировать код в буфер обмена
  1. ... SET `se` = 'Привет!' ...


Но помните про "правило" одинарных и двойных кавычек.

Ниндзя
9. El Diablo - 04 Апреля, 2013 - 13:27:21 - перейти к сообщению
Мне кажется немножко не туда обсуждение пошло Улыбка

вот есть у меня код:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. /*Этот оператор разрешает добавлять файлы т.к. обаладет нужными правами*/
  3. # mkdir("file", 0777);
  4.  
  5. /*Вывод формы, методом пост, при выборе файла и нажатии кнопки Ок, его имя летит вместе с глобальным массивом POST*/
  6. print '<html>
  7. <title>Загрузка файла</title>
  8. <form action="" method="POST" enctype=multipart/form-data>
  9. <input type="file" name="uploadfile" value="Обзор">
  10. <input type="submit" value="ok">
  11. </html>';
  12.  
  13. /*указываю директорию в которую будет заливаться файл*/
  14. $uploaddir='./files/';
  15.  
  16. /*имя загружаемого файла, которое будет состоять из имени файла */
  17. $uploadfile=$uploaddir.basename($_FILES['uploadfile']['name']);
  18.  
  19.  
  20. if(copy($_FILES['uploadfile']['tmp_name'], $uploadfile)){
  21.         /*!!!! вот тут основная беда, когда файл скопировался в директорию выдет, что Путь не добавлен в базу данных, но файл загружен, тобиш переменная $res идет со значением false, следовательно беду нужно искать в этой строчке которая идет ниже*/
  22.         $res = mysql_query("INSERT INTO pic4(pic)  VALUES(".$_FILES['uploadfile']['name'].")");
  23.                 if($res) echo "Файл упешно загружен";
  24.         else echo "Путь не добавлен в базу данных, но файл загружен";
  25. }
  26.  else echo "Файл не загружен,максимальный размер файла 2 мб ";?>



основная беда, когда файл с копировался в директорию система выдает, что Путь не добавлен в базу данных, но файл загружен, тобиш переменная $res идет со значением false, следовательно беду нужно искать в этой строчке которая идет ниже.

Т.к. имя файла может иметь символы и буквы то тип поля стоит varchar (! правильно ли?)

 

Powered by ExBB FM 1.0 RC1