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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите с логикой [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
valenok Модератор
Отправлено: 19 Января, 2008 - 14:30:55
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Можно, только
- Место в БД
- Требование обновлять одновременно и БД и название картинок при изминениях
- Да и вообще просто загрузиьт картинку лечге чем загрузить, потом входить в pma и чтото делать
- Я нахожу более удобным хранить xxx.7.jpg на сервере, потому что потом понятней что за файл
- Ещё не факт что файл действительно находится на сервере если он прописан в БД.
- Скорость выполнения. Хотя база должна быть быстрее, но учитывая предыдущий пунт..

Хотя с другой стороны в базе тоже можно


-----
Truly yours, Sasha.
 
My status
 Top
EuGen Администратор
Отправлено: 19 Января, 2008 - 14:38:21
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




-ну, это ерундовый объем, мы же не храним в базе картинки, только их имена
-еще пара строк в коде
-pma не потребуется, при удалении/изменении картинки изменяем и строки в таблице
-с этим согласен, так удобнее
-если не лежит на сервере, то делаем имя в виде полной ссылки и все
-если картинка не лежит на сервере, то придется без БД сильно изгаляться, соответственно вряд ли, что картинок не на сервере будет много => скорость на БД будет выше


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
valenok Модератор
Отправлено: 19 Января, 2008 - 14:53:38
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Вроде бы все файлы на сервере.

Цитата:
- Требование обновлять одновременно и БД и название картинок при изминениях -
- еще пара строк в коде

Не очень понял.

Я так понимаю что нарисовали ещё картинку для данного товара
мы её заливаем на сервер через ftp и всё.

Цитата:
-pma не потребуется, при удалении/изменении картинки изменяем и строки в таблице

А строки в таблице как изменять если зашёл по ftp, удалил картинку и всё.

Тут минус будет с тем что если лежат на сервере картинки
xxx.1.jpg xxx.2.jpg xxx.3.jpg
и я удалю вторую, то третюю уже не покажет ..


-----
Truly yours, Sasha.
 
My status
 Top
EuGen Администратор
Отправлено: 19 Января, 2008 - 14:59:58
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Аа.. через ftp - да, проблемно, я то думал через админку - скрипт какой-нибудь.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Dastar
Отправлено: 19 Января, 2008 - 15:10:00
Post Id



Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008  
Откуда: Израиль


Помог: -6 раз(а)




Легче простого написать скриптик, задача которого будет загружать картинку, изменять ее название и удалять, и тогда никаких проблем.
А если все-таки страшно, что картинка не существует, то просто делаешь проверку (открываешь эту самую картинку) и если тебе возвращается значение false то заменяешь эту картинку на картинку no.jpg


-----
Не знаешь - молчи.
 
 Top
Andrey
Отправлено: 20 Января, 2008 - 15:24:20
Post Id


Новичок


Покинул форум
Сообщений всего: 58
Дата рег-ции: Май 2007  


Помог: -1 раз(а)




valenok пишет:
Вот и запишите file_exist в цикле.
Может пока будете писать - появятся идеи что делать с file_exist.
(Добавление)
p.s. Сколько конструкций циклов в php ?
Советую познакомиться со всеми


Мне известны только 3: while, do..while и for.
Я так понимаю, в моём случае подходят только while или do..while.
Но придумать условия не могу. Огорчение
 
 Top
Andrey
Отправлено: 30 Января, 2008 - 23:06:18
Post Id


Новичок


Покинул форум
Сообщений всего: 58
Дата рег-ции: Май 2007  


Помог: -1 раз(а)




Andrey пишет:
Интернет магазин. К каждому товару есть несколько картинок в формате XXXX.1.jpg, XXXX.2.jpg .... XXXX.n.jpg. То есть картинок максимум n штук, минимум - может ни одной небыть. В каталоге товара показывается картинка XXXX.1.jpg, а в карточке товара показываются все картинки ( от XXXX.1.jpg до XXXX.n.jpg). Если картинки XXXX.1.jpg на сервере нет, то вместо этой картинки картинка с надписью нет изображения (no.jpg).
Вопрос такой: как описать логику, чтобы скрипт если не находит картинку XXXX.1.jpg, подставлял в каталог картинку XXXX.2.jpg, если не находил, её, то XXXX.3.jpg и т.д. перебирал до n. И только если скрипт ненайдёт ни одной картинки с имененами от XXXX.1.jpg до XXXX.n.jpg, то подставлял кактинку no.jpg.
В карточке товара структура таблицы, где первый столбец - картинки, а второй описания и т.п. Как описать логику, чтобы скрипт подсчитавал, сколько есть картинок (например XXXX.1.jpg, XXXX.2.jpg = 2 картинки; XXXX.3.jpg = 1 картинка; XXXX.2.jpg, XXXX.7.jpg, XXXX.10.jpg = 3 картинки). Это надо для формирования количества строк таблицы.


Поставим вопрос по-другому.
Для каждого товара есть какое-то количество картинок от XXXX.1.jpg до XXXX.n.jpg.
Как узнать чему равно n?
Можно использовать цикл на проверку существования файла, например while. Но какое придумать условие? Я так понимаю, что можно задать шаблон XXXX.*.jpg, но не получается у меня Огорчение

(Отредактировано автором: 30 Января, 2008 - 23:10:18)

 
 Top
Dastar
Отправлено: 30 Января, 2008 - 23:42:16
Post Id



Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008  
Откуда: Израиль


Помог: -6 раз(а)




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


-----
Не знаешь - молчи.
 
 Top
scuter
Отправлено: 31 Января, 2008 - 01:52:02
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2008  


Помог: 0 раз(а)




да прикольная логика,
PHP:
скопировать код в буфер обмена
  1.  
  2. $n = 10;
  3. $dir = './som_dir/';
  4. for($i=1;$i<$n;$i++)
  5. {
  6.         if(file_exists($dir.'xxx.'.$i.'.jpg'))
  7.         {
  8.                 $img = 'xxx.'.$i.'.jpg';
  9.                 continue;
  10.         }
  11. }
  12. if(isset($img))
  13. {
  14.         $logimg = $img;
  15. }
  16. else
  17. {
  18.         $logimg = 'no.jpg';
  19. }
  20. $dir = opendir($dir);
  21. $dir = scandir($dir);
  22. $numimg = 0;
  23. foreach ($dir as $key => $val)
  24. {
  25.         if(preg_match('|xxx\.[0-9]+\.jpg|siU', $val, $pat))
  26.         {
  27.                 if($pat[1] <= $n)
  28.                 {
  29.                         $numimg++;
  30.                 }
  31.         }
  32. }
  33. //картинка
  34. print '<img src="'.$logimg.'">';
  35. //количество картинок
  36. print $numimg;
  37.  

код не проверял, но вроде должен работать.
 
 Top
Andrey
Отправлено: 31 Января, 2008 - 11:35:57
Post Id


Новичок


Покинул форум
Сообщений всего: 58
Дата рег-ции: Май 2007  


Помог: -1 раз(а)




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


А какая именно функция?
(Добавление)
scuter пишет:
да прикольная логика,
PHP:
скопировать код в буфер обмена
  1.  
  2. $n = 10;
  3. $dir = './som_dir/';
  4. for($i=1;$i<$n;$i++)
  5. .....
  6. .....
  7. //картинка
  8. print '<img src="'.$logimg.'">';
  9. //количество картинок
  10. print $numimg;
  11.  

код не проверял, но вроде должен работать.


логика может и прикольная Закатив глазки Только здесь ты заставляешь цикл гонять 10 раз, а если, картинок, допустим 12? Можно, конечно выставить до 1000, но это же будет сильно тормозить... У меня вопрос, как подсчитать количество картинок, не ограничивая число итераций.
 
 Top
Dastar
Отправлено: 31 Января, 2008 - 12:32:41
Post Id



Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008  
Откуда: Израиль


Помог: -6 раз(а)






-----
Не знаешь - молчи.
 
 Top
valenok Модератор
Отправлено: 31 Января, 2008 - 17:50:27
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Andrey , scuter
А что, просто проверять на наличие следующей картинки в голову не приходит?
CODE (text):
скопировать код в буфер обмена
  1. while ( file_exist("xxx.".$i.".jpg") ) $i++;

Ладно, может быть с опытом ..

А вообще делаейте через глоб().
А теперь объясните мне почему через глоб() и какая проблема в методе в коде строкой выше.


-----
Truly yours, Sasha.
 
My status
 Top
Andrey
Отправлено: 31 Января, 2008 - 21:50:59
Post Id


Новичок


Покинул форум
Сообщений всего: 58
Дата рег-ции: Май 2007  


Помог: -1 раз(а)




valenok пишет:
Andrey , scuter
А что, просто проверять на наличие следующей картинки в голову не приходит?
CODE (text):
скопировать код в буфер обмена
  1. while ( file_exist("xxx.".$i.".jpg") ) $i++;

Ладно, может быть с опытом ..

А вообще делаейте через глоб().
А теперь объясните мне почему через глоб() и какая проблема в методе в коде строкой выше.


Так коде строкой выше проверка прекращается, если нет какой-нить промежуточной картинки: например, есть 1, 2, 3, 6, 7 - он на 3 и оборвётся. Так?
 
 Top
valenok Модератор
Отправлено: 31 Января, 2008 - 22:25:08
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Так.

Если не разберётесь с globом создайте пожалуйста новую тему,
а то в этой уже много страниц.


-----
Truly yours, Sasha.
 
My status
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB