Загрузка, хранение, вывод, обработка jpg

Mark&Ameli

Новичок
Загрузка, хранение, вывод, обработка jpg

Доброго времени суток.

Создал форму для добвления некоторых данных в форму. К этой форме добавил выбор рисунков. Пользователь воодит какой-либо текст, выбирает 10 картинок, и тыкает "отправить". Текстовые данные размещаются в базе, фотографии грузятся на сервер. И возникла такая проблема: как хранить именя файлов в базе? Тоесть фотки грузяться на сервак, а в базе сохраняются их названия. При выводе читается название файла из базы, и ищется в нужной папке. Если файл существует, он отображается. Возникла проблема сохранения этих самых имен. Как их хранить в базе. Была идея для каждого имени создать отдельную колонку. Но файлов 10, и очень не охота создавать 10 колонок. Как быть?

Форма такая:
PHP:
<input type='hidden' name='MAX_FILE_SIZE' value='300000' />Фото1
<input name='userfilel2' type='file' /><br>
<input type='hidden' name='MAX_FILE_SIZE' value='300000' />Фото2
<input name='userfileb2' type='file' />
И так деся раз, так как файлов 10. Кусок обработчика:
PHP:
if (!empty($userfileb1)){  $nameb1 = md5(uniqid("random"));
$userfile = $_FILES['userfileb1']['tmp_name'];
$userfile_name2 = $_FILES['userfileb1']['name'];
    $upfile = 'c:/'.$_FILES['userfilel1']['name'].'.jpg';
    if (file_exists($upfile)) {
        echo 'Файл уже существует';
        }
        elseif (is_uploaded_file($userfile)) {
            if (filesize($userfile) > 2000000) {

            }
            elseif (!move_uploaded_file($userfile, $upfile)) {

            }
            else {

            };
    };};
И так тоже десять раз :( Как-то уж не правильно все получается :( В На сервере сохраняется имя файла $nameb1 = md5(uniqid("random")); слишком оно длинное, и при выводе, сервер будет очень сильно тужится ищя этот файл... Да с выводом не все сростается...
Вот незнаю чего с этим все делать :( Подскажите какую-то идею. Может я как-то не так все делаю с самого начала...
 

kamatoz

Новичок
>>Но файлов 10, и очень не охота создавать 10 колонок
Зачем 10 колонок, добавь еще всего лишь одну, в которой будешь хранить id "какого-то текста" , к которому относятся картинки.

>>И так деся раз, так как файлов 10
userfile[]
и соответственно в обработчике цикл.

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

SiMM

Новичок
> userfile[]
Не советую ;)
> И так тоже десять раз
Так а кто тебя заставляет-то писать один и тот же код аж 10 раз? Вообще-то, если ты не в курсе, в PHP, как ни странно, есть даже специальные конструкции для создания циклов. Вот [m]foreach[/m], к примеру...
 

Mark&Ameli

Новичок
kamatoz
Но ведь где-то надо соранять имена файлов? И они все разные... Так что, если создать одно поле с ИД текста, к которому должны относиться картинки, где хранить имя этих картинок?
 

kamatoz

Новичок
Mark&Ameli
_добавить_ одно поле вместо 10. Имя никуда убирать н надо.
 

Wicked

Новичок
SiMM
почему? из-за того, что пхп (на мой взгляд) нелогично обрабатывает массивы внутри $_FILES?
 

SiMM

Новичок
> из-за того, что пхп (на мой взгляд) нелогично обрабатывает массивы внутри $_FILES?
Угу. Вообще тут главное - чтобы это неожиданно не изменилось в будущих версиях ;)
 

Mark&Ameli

Новичок
kamatoz
Чего-то я не понимаю.
Таблица:
id text foto
1 ab имя_фотографий (а их десять)
2 ab имя_фотографий (а из десять)

Поидее, как я думал, после поля фото будет еще 9 таких же. В каждом поле по одному названию картинки (и все они разные)...
И куда это все девать? Я чего-то не понимаю :(
 

Фанат

oncle terrible
Команда форума
в ещё одну таблицу.
в одной - текст, в другой - имена фотографий.
текст - один. фотографий - много. что - непонятно?
 

Mark&Ameli

Новичок
Фанат
Мысля понятна. Тока я вот думаю как избавиться от этих десяти полей, а оказывается надо создать новую таблицу с теми же десятью полями. Где смысл?
 

Wicked

Новичок
Mark&Ameli
она станет не с десятью ПОЛЯМИ, а с несколькими ЗАПИСЯМИ. И записей этих может уже быть сколько угодно.
 

kamatoz

Новичок
Mark&Ameli

Да не с 10 полями! Зачем тебе 10 полей? Имя файла с картинкой - id поля из другой таблицы, к которому относится. Хоть 1 картинка будет, хоть 100 при таком раскладе.
 

Mark&Ameli

Новичок
Нда, неприятное ощущение когда осознаешь собственную тупость :(
Дошло до меня наконец... Всем спасибо, если чего, еще обрашусь.
Да, еще такой вопросик. Под какими именами хранить рисунки? Все они храняться в одной паке, имена у все разные (ну по идее совпадать не должны:
PHP:
md5(uniqid("random")
Если их имена оставлять такими же какими пользовати грузят, есть шанс что такой файл уже существует. Как быть? Дело в том, что имена получаются очень длинные (естественно :)), а когда их в папке будет много, это затруднит поиск. Может лучше все фотографии относящиеся к одной записи хранить в одной папке, и так расскидать их по папкам? Или же пусть остается как есть?
 
Сверху