Вставить картинку в mysql ссылкой

ArkDoom

Новичок
Вставить картинку в mysql ссылкой

Новая проблема, не могу найти материала как это решить. Хотя бы что-то.....
Так вот, проблема в том, что в базу нада запихнуть фотки, после тонны перечитанного материала принял решение вставлять ссылки в базу.
И думаю все это делать через 1 таблицу, т.к. не будет путаницы с ID и для меня пока проще.
Нашел скрипт, который принимает фотки и записывает их на жесткий.
PHP:
// Если upload файла if(isset($_FILES['myfile1'])) { $myfile = $_FILES['myfile1']['tmp_name']; $myfile_name = $_FILES['myfile1']['name']; $myfile_size = $_FILES['myfile1']['size']; $myfile_type = $_FILES['myfile1']['type']; $error_flag = $_FILES['myfile1']['error']; // Если ошибок не было if($error_flag == 0) { print("Имя файла на нашем сервере (во время запроса): ".$_FILES['myfile1']."<br>"); print("Имя файла на компьютере пользователя: ".$myfile_name."<br>"); print("MIME-тип файла: ".$myfile_type."<br>"); print("Размер файла: ".$myfile_size."<br><br>"); // Получаем содержимое файла $fp = fopen($myfile,"r"); $content = fread($fp, filesize($myfile)); fclose($fp); // Вывод содержимого файла print($content); } // end of if 2 } // end of if 1
Может подскажите каким нить стандартным скриптом или ссылкой где можно почитать? я через гугл ничего не могу найти, может не так ищу +_+


Заранее, спасибо.
 

StiM

Новичок
Тут описано как загружать файл на сервер: http://www.php.ru/manual/features.file-upload.html
 

Фанат

oncle terrible
Команда форума
ArkDoom
в базу надо записывать имена файлов, а не ссылки.
а можно и вообще ничего не записывать.

Напиши подробно, что куда назо записывать и для какой задачи
 

ArkDoom

Новичок
Ну вот, выполняю загрузку через скрипт:

<?php
if(isset($_FILES["userfile"]))
{
$myfile = $_FILES["userfile"]["tmp_name"];
$myfile_name = $_FILES["userfile"]["name"];
$myfile_size = $_FILES["userfile"]["size"];
$myfile_type = $_FILES["userfile"]["type"];
$error_flag = $_FILES["userfile"]["error"];


if($error_flag == 0)
{

$uploaddir = '/var/www/uploads/';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir .
$_FILES['userfile']['name'])) {
print "File is valid, and was successfully uploaded.";
} else {
print "There some errors!";
}
?>

Файлы закачиваются, но! 2 раза удачно, 1 раз нет......потом 5 раз удачно, раза 4 неудачно! Или сразу гружу 5 файлов (фото) 3 прозодят, на 2 другие пишет ошибку +_+размеры у всех файлов не больше 50кб.

При этом ; Whether to allow HTTP file uploads.
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir =/home/welcomevn.ru/www/temp/

; Maximum allowed size for uploaded files.
upload_max_filesize = 2M

Вот не понимаю почему так.

А ссылку пытаюсь засунуть :
INSERT INTO table_name SET userfile="$uploaddir$_FILES[userfile][name]"

Вопрос? Можно ли сделать так:
$userfile1="$uploaddir$_FILES[userfile][name]"


и затем в запрос вставить '.$userfile1.'
 

Фанат

oncle terrible
Команда форума
можно.
но сначала надо узнать, надо ли вообще писать имена в базу.

на 2 другие пишет ошибку
ошибку надо вывести на экран, прочесть и исправить
 

StiM

Новичок
Вопрос? Можно ли сделать так:
$userfile1="$uploaddir$_FILES[userfile][name]"

Можно сделать вот так:
$userfile1=$uploaddir.$_FILES[userfile][name];
 

ArkDoom

Новичок
*****, мне их потом нужно будет вывести в таблицу на сайт. Так что думаю нужно.

StiM, спасибо за поправку)

-~{}~ 16.11.09 14:49:

Слово фанат является цензурой?))
 

Фанат

oncle terrible
Команда форума
чтобы вывести картинки в таблицу на сайт, в базу данных их имена записывать не нужно.
имена можно прекрасно прочитать и с диска
 

ArkDoom

Новичок
Нужно, чтобы через форму мне на сервер записывались фотки ( это я сделал) и одновременно записывалась на них ссылка (или что нужно???) в базу данных.

Т.е. чтобы потом вывести на сайт таблицу, и в последней ячейки таблицы была фотка
 

StiM

Новичок
А че тут думать. Берем файл, загружаем его в нужную директорию (крайне желательно отслеживать имена файлов в этой директории, чтоб не было одинаковых имен). Берем имя этого файла и кладем его в БД. А при отображении, мы получаем из БД список файлов, добавляем перед именем ЮРЛ и путь к директории с этими файлами, ну и отображаем. :)
 

Фанат

oncle terrible
Команда форума
а если немного подумать, то файл можно переименовать при загрузке, убив таким образом сразу двух зайцев. и контролировать не надо, и в базу писать
 

ArkDoom

Новичок
*****, как это сделать, совершенно не имею представления и нужно ли это?

-~{}~ 16.11.09 15:01:

А если фото загаружется в 1 и ту же таблицу и __одновременно__ с информацией об этой фотке? )

Так бы да....приделывать id объекта вместо имени, было бы круто, но id то еще не получил обьект!
 

StiM

Новичок
Есть замечательная функция mysql_insert_id, которая возвращает ID записи после инсерта ;)
 

Фанат

oncle terrible
Команда форума
совершенно не имею представления и нужно ли это?
Ну, ты все равно не имеешь представления и о любых других методах, так что разницы никакой :)
но id то еще не получил обьект!
а вот это неправильно.
фотку надо копировать только тогда, когда в базу уже вставили информацию. иначе вставка может не пройти и тогда картинка останется валяться бесхозная

кстати, картинок может быть больше одной, как я понял?
 

StiM

Новичок
Можно сделать так:

$fname=time()."_".$_FILES['userfile']['name'];
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$fname))...

INSERT... (... $uploaddir.$fname ...)
 

ArkDoom

Новичок
Да, картинок максимум 5.

Тогда, загружать фото луже через отдельную форму? тогда нада 2 таблицы .... и тут я опять начну адски путаться))))


Или просто в скрипте в 1ю очередь выполнять запрос на вставку инфы, затем на вставку фото? ...... боже, опять начинаю путаться)
 

Фанат

oncle terrible
Команда форума
боже, опять начинаю путаться)
это далеко не самое сложное в веб-программировании
если уже сейчас такие сложности, то рекомендую подумать - а стоит ли начинать?

если картинок может быть больше одной, то имеет смысл создавать каталог с именем - id записи
и складывать картинки туда
 

ArkDoom

Новичок
Да просто, я столько делаю щас одновременно дел 1...и самоучка к тому же. Что не всегда могу сразу врубиться. но потом быстро догоняю.

Бывает, пойду...похожу по дому или сериал посмотрю...бах и все понял...и ругаю себя за то, что это так просто..а я не понимал)

+хронический недосып)))
 

StiM

Новичок
Автор оригинала: ArkDoom
Да, картинок максимум 5.

Тогда, загружать фото луже через отдельную форму? тогда нада 2 таблицы .... и тут я опять начну адски путаться))))


Или просто в скрипте в 1ю очередь выполнять запрос на вставку инфы, затем на вставку фото? ...... боже, опять начинаю путаться)
А для чего делать 2 таблицы?

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