|
|
|
| Доброго всем времени!!!!
Имеем:
группу фотографий:
pic1.jpg
pic1-1.jpg
pic1-2.jpg
pic1-N.jpg
Проще говоря pic1.jpg - это основная фотка, а все остальные pic1-1.jpg ... pic1-N.jpg это дополнительные для основной.
После загрузки всех фоток на сервер в нужную $dir
запускаем скрипт пакетной обработки фотографий в цикле
передаем имя файла в массив и разделяем имя файла и расширение
вот кусок кода :
.....
foreach ($img as $k=>$v) {
if (strpos($v,".")!==false) {
if ($v != '.' && $v != '..') {
$filenamearr = explode(".", $image);
$myfile_nameonly = $filenamearr[0];
$myfile_extension = $filenamearr[1];
......
}
}
}
.....
|
Суть задачи:
1) как можно определить основную фотографию группу (pic1.jpg) чтобы назначить ей статус = 1 , а всем остальным фот-ам группы соответственно 0 или 2?
2) как можно обрезать имя файла до тире ( из pic1-1 в pic1 )?
3) и если в имени файла встречается два тире в начале и в конце (из ppp-pic1-1 в ppp-pic1)?
Заранее всем спасибо!
***Прошу сильно не пинать, если что не так спросил или сформулировал | |
|
|
|
|
|
|
|
для: ecipuser
(06.07.2013 в 02:59)
| | >После загрузки всех фоток на сервер в нужную $dir запускаем скрипт пакетной обработки
А сразу при загрузке навести нужный порядок в именах, и какой-то статус чему-то присвоить, это разве не лучше, чем потом ковыряться в каталогах? | |
|
|
|
|
|
|
|
для: confirm
(06.07.2013 в 06:40)
| | Можно конечно и так, как Вы говорите.... Но ЧЕЛОВЕЧЕСКИЙ ФАКТОР....
Как говорит один хороший знакомый - Умненьких не много...
Приспичит манагеру сначала заказчать фотоки а уже потом прописать товар к этим фоткам ( как вариант) и как быть тогда?????
Решение вопроса есть, но при условии одного тире в наименовании файла
с помощью регулярного выражения можно разбить имя файла на состовляющие и сравнить
исходное имя с результатом
...
$shablon = preg_match("/^([a-zA-z0-9]*)\-?([0-9]*)?$/",$myfile_nameonly, $matches);
echo '<pre>';
print_r($matches);
echo '<pre>';
...
|
а как быть, если в имени файла два тире, например, ppp-kkk1-01 или p-ppk1-01
и можно ли решить данный вопрос без регулярного выражения? | |
|
|
|
|
|
|
|
для: ecipuser
(06.07.2013 в 17:09)
| | Ну-ну, еще и рег. выражений только и не хватало.
Во-первых - имена нужно привязывать к ID-товара, уже если речь о них, а это значит - пока нет записи в базу о товаре, никаких имен не знаем.
Во-вторых - не важно чего и ка он будет закачивать, никто вам не мешает отдавать форму с загрузкой и описанием товаров.
В третьих - есть сессия, в которой можно временно хранить загруженные изображения, а именовать их и перемещать в каталог после успешной записи первичных данных в базу.
Что касается человеческих факторов, то не надо кивать на них, вы определяете правила, а не пользователь, а значит все "факторы" можно успешно решать. | |
|
|
|
|
|
|
|
для: confirm
(06.07.2013 в 17:54)
| | > а значит все "факторы" можно успешно решать.
Я бы сказал: все факторы - это ваши недодумки и упущения.
(пардон, что вмешался =) | |
|
|
|
|
|
|
|
для: ecipuser
(06.07.2013 в 17:09)
| | > Приспичит манагеру сначала заказчать фотоки а уже потом прописать товар к этим
> фоткам ( как вариант) и как быть тогда?????
Какая разница, что в каком порядке делать?
Если это вызывает проблемы, то говорит лишь о не правильной организации приложения!
А если манагер посмотрит 2 дня на страничку, скажет - не продается, и решит главной сделать другую фотку? Будете всем имена менять?
Должна просто быть таблица с именами файлов и информацией о них... Кто загрузил, когда, куда, откуда, к какому товару или группе относится, является ли фото главным, промодерировано ли оно..... И т.д. и т.п.
Тогда любые изменения не будут вызывать затруднений.
Тогда и файлы можно называть хоть так: 5e9673ba844592004001c8b149ae76df.jpg - это не будет иметь ни какого значения. | |
|
|
|
|
|
|
|
для: Sfinks
(06.07.2013 в 18:01)
| | Это конечно правильное предложение.
но тут есть большое но..
а если нужно обработать более сотни фотографий или более тысячи ( например для каталога товаров)?
как тогда ? закачивать и привязывать к группе или товару? | |
|
|
|
|
|
|
|
для: ecipuser
(06.07.2013 в 22:18)
| | А может фото товара принадлежать сразу и группе и товару? Наверное же это собственность товара, а не группы, а значит привязаны фото должны быть к товару. А уж товар хоть группе, хоть к полугруппе, как душа пожелает. И самое выгодное, это иметь его ID, и производные от него, и чем проще, тем лучше - 1.ext, 1-1.ext, 1-1-1.ext, это в дальнейшем может пригодится. И ни в коем случае не имена определенные пользователем, как типа того кошмара который вы представили - ppp12-hhh...
Загрузку будет определять размер POST установленный на сервере, а не тысячи и более чего-то, так что исходить нужно из этого. К тому же, что еще за фото, если они уже имеют оптимальный размер, это одно, а если их надо преобразовывать, это другое.
А уж сколько разрешено загрузкой POST столько и обработать можно, какая разница, и при обработке именовать сразу. К тому же - добавление нового, это одно, а редактирование, это иное, и при добавлении фото впоследствии, это еще проще. А вот чтобы сперва загрузить фото, а только потом товар его, то это загружать мусор, в котором неизбежно придется копаться. | |
|
|
|
|
|
|
|
для: ecipuser
(06.07.2013 в 02:59)
| | 1. Я не понял зачем вы разделили вопрос на 3 пункта
2. Я не понял зачем у вас в цикле:
if (strpos($v,".")!==false) {
if ($v != '.' && $v != '..') {
| откуда это у вас такой массив, в котором эти условия могут не выполняться?
Разве что из чего-то типа readdir().... Но в этом случае от ненужных элементов нужно избавляться на этапе формирования массива, а не обработки.
3. Отвечая на основной вопрос:
> как можно определить основную фотографию?
... вам не кажется, что у нее будет самое короткое имя? При чем тут РВ вообще?
<?php
$min_len = 2147483647;
foreach( $img as $k => $v ){
$name = pathinfo( $v, PATHINFO_FILENAME );
$ext = pathinfo( $v, PATHINFO_EXTENSION );
if( ($len=mb_strlen($name)) < $min_len ){
$min_len = $len;
$min_name = $name;
}
}
echo $min_name;
|
| |
|
|
|
|
|
|
|
для: Sfinks
(06.07.2013 в 17:51)
| | Благодарю за хорошую идею - короткого имени.
и огромное спасибо за участие.
на 1. ответ не дам, уж не оббесудте.
по 2. в принципе вы правы, массив создается
$img = scandir($filedir);
|
по 3. ваше решение - будет иметь жизнь в моем проекте
еще раз спасибо | |
|
|
|
|
|
|
|
для: ecipuser
(06.07.2013 в 21:54)
| | Это не решение, это самое худшее, что только можно представить. | |
|
|
|