Загрузка изображений в директорию и добавление данных в БД

Статус
В этой теме нельзя размещать новые ответы.

El Diablo

Доброе зло
Доброго времени суток! Бьюсь с проблемой уже 2ой день, не могу справится, суть такова вот мой код который добавляет файл в директорию, берет имя файла и его вносит в таблицу:

PHP:
<?php
# mkdir("file", 0777);

print '<html>
<title>Загрузка файла</title>
<form action="" method="POST" enctype=multipart/form-data>
<input type="file" name="uploadfile" value="Обзор">
<input type="submit" value="ok">
</html>';
 
$uploaddir='./files/';
$uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);

if(copy($_FILES['uploadfile']['tmp_name'], $uploadfile)){
	$res = mysql_query("INSERT INTO pic42('pic')  VALUES(".$_FILES['uploadfile']['name'].")");
		if($res) echo "Файл упешно загружен";
	else echo "Путь не добавлен в базу данных, но файл загружен";
}
 else echo "Файл не загружен,максимальный размер файла 2 мб ";?>

для себя я читаю данный код как: Берется файл, копируется в директорию обратно возвращается имя если файл скопирован (под своим родным названием) тогда: вставляется в таблицу pic4 в ряд pic значение имя файла, если удачно вставляется то значение переменной будет удачное и выдаст "Файл успешно загружен", если неудачно то "Путь не добавлен в базу данных, но файл загружен"

Проблема в том, что в базу не заносятся данные, и перед загрузкой на страничке выводятся ошибки которые ругаются: Notice: Undefined index: uploadfile (говорит что неизвестный идентификатор), помогите понять в чем проблема? вроде код правильный (взятый).
 

El Diablo

Доброе зло
sakon имеете в виду, проверить через echo выводятся ли данные? сейчас попробовал через echo выводит данные в строчку но не добавляет в таблицу, куда ваши правки нужно вставить?
 

sakon

П..и.н..ок
PHP:
<?php
if (!empty($_POST['uploadfile']) && !empty($_POST['submit']))
{
    $uploaddir='./files/';
    $uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
//  echo $uploadfile.'<br>';

    if (!is_uploaded_file($_FILES['uploadFile']['tmp_name']))
    {
        echo 'ошибка передачи файла';
    }
    else
    {

        if(move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile))
        {
            $tes = "INSERT INTO pic42('pic')  VALUES('".$uploadfile."')";
//          echo $tes.'<br>';
            $res = mysql_query($tes);
            if($res) echo "Файл упешно загружен";
            else echo "Путь не добавлен в базу данных, но файл загружен";
        }
        else echo "Файл не загружен, ";
    }
}
?>

<html>
<title>Загрузка файла</title>
<form action="" method="POST" enctype=multipart/form-data>
<input type="file" name="uploadfile" value="Обзор">
<input type="submit" value="ok">
</html>
 

El Diablo

Доброе зло
sakon хм, вот посмотрел, поставил код, файл теперь вообще не попадает в каталог :(

workOnFood изначально в коде было:

PHP:
$res = mysql_query("INSERT INTO pic4(upload,pic)  VALUES(".$_FILES['uploadfile']['name'].")") or die(mysql_error());
но убрал т.к. искал ошибку, когда вернул пишет, что:
Unknown table 'JmuX572Ieww' in field list
 

sakon

П..и.н..ок
"файл теперь вообще не попадает в каталог" - что значит не попадает? Какое сообщение выдает?


Повторяю
echo $uploadfile
.
.
echo $tes
$res = mysql_query("INSERT INTO pic4(upload,pic) VALUES(".$_FILES['uploadfile']['name'].")")

Это что?!!
 

El Diablo

Доброе зло
sakon имею в виду, что раньше файл копировался в нужную директорию но имя файла не попадало в базу, а теперь от того кода файл вообще не попадает в директорию сайта. Ошибок не выдает просто, ничего не происходит. Выбираю файл, нажимаю Ок, в директориях пусто, файла нет, запись в таблицу не добавлена.

P.S. Прошу прощения, что порой спрашиваю глупости, я только начал и досконально все изучаю, если спросил глупость не серчайте :)
 

sakon

П..и.н..ок
sakon имею в виду, что раньше файл копировался в нужную директорию но имя файла не попадало в базу, а теперь от того кода файл вообще не попадает в директорию сайта. Ошибок не выдает просто, ничего не происходит. Выбираю файл, нажимаю Ок, в директориях пусто, файла нет, запись в таблицу не добавлена.

P.S. Прошу прощения, что порой спрашиваю глупости, я только начал и досконально все изучаю, если спросил глупость не серчайте :)
сверху поставь
PHP:
 print_r($_POST);
и посмотри, что у тебя передается в скрипт
 

sakon

П..и.н..ок
PHP:
if (!empty($_POST['uploadfile']) && !empty($_POST['submit']))
Это прикол такой?)
Что то заело.... Тупанул не по децки.... :(
PHP:
<?php
if (!empty($_FILES['uploadfile']['name']))
{
    $uploaddir='files/';
    $uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
//  echo $uploadfile.'<br>';

    if (!is_uploaded_file($_FILES['uploadfile']['tmp_name']))
    {
        echo 'ошибка передачи файла';
    }
    else
    {

        if(move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile))
        {
            $tes = "INSERT INTO pic4(pic) VALUE ('".$uploadfile."')";
//          echo $tes.'<br>';
            $res = mysql_query($tes);
            if($res) echo "Файл упешно загружен";
            else echo "Путь не добавлен в базу данных, но файл загружен ".mysql_error();
        }
        else echo "Файл не загружен, ";
    }
}
?>

<html>
<title>Загрузка файла</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="uploadfile" value="Обзор">
<input type="submit" value="ok">
</body>
</html>
 

El Diablo

Доброе зло
sakon шикарно! пропали ошибки которые были изначально (когда открываешь выдавались ошибки еще до загрузки) но беда не приходит одна, осталась та же проблема, что данные не заносятся в базу. В самом начале у меня есть подключение к базе. Я вот думаю мб проблема в том, что у меня не правильная настройка таблицы стоит, поле куда вносится имя файла имеет тип varchar 255 символов. Вот скрин ошибки и таблици:
(!!!Важно, таблица на скрине будет носить имя pic42 это я создал новую таблицу, что бы была чистенькая.)

trabla.jpg

и вот сама ошибка:

трабла2.jpg
Путь не добавлен в базу данных, но файл загружен You have an error in your SQL syntax near 'VALUE ('files/JmuX572Ieww.jpg')' at line 1
ошибка вроде как ругается на синтаксическую ошибку только не пойму чего именно? и линия 1 это ошибка в самом php файле или линия 1 это имеется в виду таблицу куда заносятся данные?
 

WMix

герр M:)ller
Партнер клуба
PHP:
$tes = "INSERT INTO pic4(pic) VALUE ('".$uploadfile."')";
ругается на этот sql
возможно пробел pic4<вот сюда>(pic) нужно вписать
а вообще обычная ошибка MySQL где показан кусок который уже непонятен == искать чаще нужно раньше того что показанно
 

WMix

герр M:)ller
Партнер клуба
я не дебажил я просто оглядел, блин, твой взгляд острее
 

El Diablo

Доброе зло
WMix да вроде взял то рабочий код, по сути сейчас сделал пустую страничку с подключением к базе, и запилил код, код который выше указанный, различие только в том что таблица в том коде имеет имя pic4 а сейчас pic42 и все, попробовал пробел там где вы посоветовали не помогло, так же использовал кавычки ic42 ('pic') (т.к. вроде как числа идут без кавычек, а в кавычках идут данные.) не могу понять что именное не работает. Вот код на всякий случай:

PHP:
<?php
if (!empty($_FILES['uploadfile']['name']))
{
    $uploaddir='files/';
    $uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
//  echo $uploadfile.'<br>';

    if (!is_uploaded_file($_FILES['uploadfile']['tmp_name']))
    {
        echo 'ошибка передачи файла';
    }
    else
    {

        if(move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile))
        {
            $tes = "INSERT INTO pic4 ('pic') VALUE ('".$uploadfile."')";
         echo $tes.'<br>';
            $res = mysql_query($tes);
            if($res) echo "Файл упешно загружен";
            else echo "Путь не добавлен в базу данных, но файл загружен ".mysql_error();
        }
        else echo "Файл не загружен, ";
    }
}
?>
но он есть скопированный код у sakon

P.S. Так тип поля правильный ? varchar длина 255 символов?
 

El Diablo

Доброе зло
Ааааааааааа!!!! Наконец код заработал!!!!!!!!! Ребят вы супер!! Низкий вам поклон!!! От всей души благодарю! =) и с форумом я не ошибся действительно люди знающие PHP! я буду стремится стать таким же как и вы =)

P.S. Администраторы и модераторы прошу извинить меня за офтоп но ребята спасли меня от 3их суток мучений и серфинга по просторам сети =)
 

WMix

герр M:)ller
Партнер клуба
нет в кавычках пишутся strings имена пишутся в обратных ковычках
PHP:
`pic4` (`pic`)
cDLEON нашел твою ошибку вроде
 

El Diablo

Доброе зло
WMix
Да! проблема решена! меня прям в холодный пот бросило когда данные были занесены в базу =) Всем огромнейшее спасибо =) Я думал эту ночь снова не спать, т.к. разобраться надо, печалит только одно, что я не сам с 0 написал код, хотя изучал глобальную переменную $_FILES =\
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху