| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Вывод случайной картинки из заданого списка |
| Автор: NaglfarNight 3.9.2008, 11:33 |
| Здравствуйте, друзья. Мне нужно на странице моего сайта каждый день выводить три случайные картинки из заданного списка (все картинки находятся в одной папке). Примерно так: ![]() Только это я вывожу вручную. Подскажите, пожалуйста. |
| Автор: bars80080 3.9.2008, 12:08 | ||
если есть список, массив то есть с путями к картинкам, то остаётся сделать три случайных числа, неповторяющихся
|
| Автор: HackMan 3.9.2008, 14:16 | ||||||
bars80080, зачем придумывать, то что уже придумано, и придумано намного проще
NaglfarNight, всё зависит от того, как устроена структура сайта. Уточни, данные об изображениях хранятся в базе или просто в отдельной папке набор картинок? a) Если в базе и картинок не так много, тогда делай запрос
Если же в базе записей много, тогда ORDER BY RAND() лучше не использовать - сильно грузит сервер. Надо будет сначала сгенерировать 3 случайных числа, сделать из них индексы а потом сделать выборку простым SELECT b) Если это просто набор файлов в папке, тогда что-то вроде такого
|
| Автор: NaglfarNight 3.9.2008, 14:53 | ||
| HackMan Без базы. Просто набор картинок в папке. Я тормоз в вопросах php Путь до папки с картинками прописывать где? Тут
|
| Автор: Ockonal 3.9.2008, 15:32 | ||||
$path_to_img - меняете на свою папку Все рисунки должны быть такого типа: 1.jpg 2.jpg и т.д. если вам нужно выводить отдельно все 3 ( или сколько ) рисунков:
Вместо "ИНДЕКС" - номер рисунка-1 |
| Автор: NaglfarNight 3.9.2008, 15:57 | ||
| Ockonal, Выдаёт ошибку:
|
| Автор: s0lman 3.9.2008, 16:00 |
| NaglfarNight, попробуйте этот скриптик - специально для вас изменил;) |
| Автор: Ockonal 3.9.2008, 16:50 | ||||
Ошибся, извините... Выше исправьте на:
|
| Автор: HackMan 4.9.2008, 02:34 | ||||
| NaglfarNight, да, тут Ockonal, у меня есть папка images, в ней 866 картинок. Сделаем сравнительный тест моего кода с исправленным твоим а)
В результате получаем 0.000214099884033 б)
В результате получаем 0.000100135803223 Разница во времени составляет 0,00011396408081 сек. Разница в коде - 3 строчки против 9, и мой код в несколько раз прозрачней для понимания, да и ко всему в твоём коде картинки должны иметь пронумерованные имена, подряд, без пропуска, да и очень большой шанс, что сгенерируется несколько одинаковых чисел Спасибо за внимание |
| Автор: s0lman 4.9.2008, 10:16 |
| HackMan, у меня ваш код выдал 0.031064987182617 тогда как мой - 0.18256306648254 согласен, конечно, что в данном примере рекурсивный обход совсем не обязателен, хотя может быть полезен.... |
| Автор: Ockonal 4.9.2008, 14:33 | ||||
HackMan
Код ни от куда не выдранный. Я не программист пхп... Просто желание помочь. На счет массива - спасибо, я забыл об этом. Добавлено через 2 минуты и 56 секунд
Извините, конечно, может это зависит от моих знаний, но ваш код мне кажется сложнее. И, как раз, мой более прозрачный. Согласитесь |
| Автор: MoLeX 4.9.2008, 15:44 |
| HackMan, Ockonal, может не будем выяснять у кого код круче и понятнее? NaglfarNight, вопрос решен? если да то отметь пожалуйста его соответствующим образом. |
| Автор: NaglfarNight 5.9.2008, 12:08 |
| MoLeX Неа... вопрос ещё не решён. Прошу простить меня за тупость, я с самыми простейшими задачами в пхп справляюсь за сутки, а то и больше HackMan Ваш код привлекает столь маленьким объёмом. Так... где прописывать дирректорию с картинками понятно. Путь абсолютный? А выводим как? |
| Автор: HackMan 5.9.2008, 14:31 | ||
| NaglfarNight, путь можно как относительный, так и абсолютный. Удобнее - относительный. Выводить примерно так:
|
| Автор: NaglfarNight 5.9.2008, 17:02 | ||
| HackMan, Вставляю на страничку
Не работает. Может что-то неверно делаю Код Ockonal работает, но иногда почему-то вместо заданых 3-х изображений выводит либо 2, либо 4. Ockonal, для Вашего кода нужно, чтобы все картинки были названы в духе 001.jpg, 002.jpg? Или не важно? |
| Автор: Ockonal 5.9.2008, 17:26 |
| Даж не знаю, стоит ли ворошить мой код Название картинок должно быть только таким: 1.jpg, 2.jpg ... 10.jpg ... 100.jpg И, как я понял, массив нужно объявить массивом, что-то типа такого: $temp[$num_of_show-1] = Array(); HackMan, Поправьте меня, если что. |
| Автор: NaglfarNight 5.9.2008, 17:34 | ||
| Как не стоит? Работает же, только не совсем так как нужно, значит стоит. Так... Данную строчку вставила, но всё равно, как заколдованый выводит по 4 картинки Хотя в коде ясно написано
|
| Автор: Ockonal 5.9.2008, 17:48 | ||
Ок-ок |
| Автор: Ockonal 5.9.2008, 18:10 | ||
У меня все работает. Вот код:
|
| Автор: NaglfarNight 5.9.2008, 18:25 | ||||||||
| Ockonal, Вот теперь всё работает и у меня. Вот тут
было
Видимо поэтому выводило неправильное количество. Только вот тут:
нужно так?
|
| Автор: Ockonal 5.9.2008, 18:28 | ||||||||||
| Да-да А то будет выводить только первые 3 картинки. Извиняюсь за свои ошибки. Добавлено @ 18:29
Все правильно. В первом месте будет 4 итерации, а не 3 как нужно Добавлено @ 18:30
Вставьте это перед первым for
Будет лучше генерироваться случайное число. Добавлено через 6 минут и 19 секунд Да
Если у вас будет картинка 0.jpg, то можете использовать код выше, но если у вас все картинки начинаются с 1.jpg:
p.s. Если нужно, чтобы не было выведено одинаковых картинок - пишите. |
| Автор: NaglfarNight 5.9.2008, 18:46 |
| Ockonal, Спасибо! Наконец-то всё работает. По поводу одинаковых картинок, желательно чтобы не было таковых. Можете с этим помочь? |
| Автор: NaglfarNight 5.9.2008, 19:23 |
| HackMan, Так пробовала, тоже не работает. Пыталась по разному - и абсолютным, и относительным, и со слэшем, и без него. Ockonal А от расширения файлов тоже зависит? Все должны быть jpg, так? Если у меня есть несколько gif, они не будут отображаться? |
| Автор: HackMan 5.9.2008, 19:28 | ||
что выводит? |
| Автор: NaglfarNight 5.9.2008, 19:40 |
| HackMan, это куда нужно вставлять? если ставлю в начало кода, выдаёт: NULL если в конец: array(0) { } |
| Автор: HackMan 5.9.2008, 19:43 | ||
| 1) В каком каталоге находится скрипт? 2) В каком каталоге находятся картинки? 3) Что выводит следующий код
|
| Автор: NaglfarNight 5.9.2008, 19:54 |
| HackMan 1. /include/sidebar/avatars.php 2. /images/avatars/ 3. /home/u18822/naglfarru/www/include/sidebar/avatars.php |
| Автор: Ockonal 5.9.2008, 20:41 | ||
Да, в том и недостаток моего скрипта - он только для одной цели. HackMan Спасибо за советы/ответы. |
| Автор: HackMan 5.9.2008, 20:48 | ||||||||
| Ockonal, всегда пожалуйста NaglfarNight,
или
Советую ознакомиться со статьёй "http://www.phpfaq.ru/paths" Если картинки с несколькими расширениям, тогда комбинировать надо так:
Да и вообще это всё можно красиво записать в две (ато и в одну
но лично я предпочитаю делать так, как написал раньше, расписывать действия. |
| Автор: NaglfarNight 5.9.2008, 21:53 |
| HackMan Да, действительно коротко Ockonal |