Показ случайной картинки на сайте при помощи РНР
Рассмотрим вывод на странице сайта произвольной картинки из директории. Для этого нам нужно зайти в директорию где находятся изображения, затем просмотреть количество изображений и с общего количества показать n-ю картинку. Реализовывать мы это будем как вы уже догадались с помощью РНР.
И так, сначала нам нужно создать две переменные. Одна будет указывать директорию в которой находятся наши изображения, а вторая хранить массив с названиями изображений.
$dir = "путь к папке с изображениями"; // Указываем директорию в которой находятся наши изображения. Например: http://mypage.ua/img/ $img_a = array(); // Создаем пустой массив для хранения названий изображений
После созданий переменных приступаем к проверке наличия изображений в директории, а также их добавления в массив.
if (is_dir($dir)) < // Проверяем действительно ли переменная содержит путь к папке if($od = opendir($dir))< // Открываем папку while(($file = readdir($od)) !== false)< // Проверяем все файлы что находятся в папке if(strtolower(strstr($file, "."))===".jpg" || strtolower(strstr($file, "."))===".gif" || strtolower(strstr($file, "."))===".png")< // Выделяем с всех файлов только изображения. Как правило это файлы с расширением: .jpg, .gif, .png array_push($img_a, $file); // Если файл действительно имеет расширение изображения добавляем его в массив >> closedir($od); // Закрываем папку > >
Теперь наша вторая переменная содержит в себе массив с именами изображений. Нам осталось только вывести одно из них на страницу нашего сайта. Для этого создадим переменную которая будет генерировать случайное число от 1 до количества записей в массиве n.
$rd = rand(0, count($img_a)-1); // Получаем случайное число от 1 до количества записей в массиве
в котором и зададим высоту (height) и ширину (weidth) нашего изображения.
print '
'// Выводим изображение с директории и задаем высоту и ширину изображения
В результате мы получаем следующий РНР код:
> closedir($od); > > $rd = rand(0, count($img_a)-1); print '
' ?>
И так код показа картинки мы написали что дальше? Нужно его применить и тут собственно два пути.
Первый просто вставить вышеуказанный код в HTML документ в то место где вы хотите отобразить картинку.
Второй создать текстовый документ с вышеуказанным кодом и сохранить его с расширением .php например (random_img.php). После того как документ создан копируем его в корневой каталог вашего сайта и в HTML документ в то место где вы хотите отобразить картинку пишете следующую строку:
Если все сделано верно то при каждом обновлении страницы на вашем сайте в случайном порядке будут отображаться картинки из указанной вами директории.
Создание и вывод массива PHP, картинки в массиве для слайдера?
Всем привет!Не могу разобраться как вывести в каталоге товаров изображения для слайдера предпросмотра товара.
Уже второй день маюсь с этим, не нахожу решение для создания и вывода дополнительного массива из функции products которая представлена ниже.
Возможно ли в функции products прописать создание массива для вывода img_slide или для этого лучше создать отдельную функцию?
База данных:
В таблице goods есть столбец с img_slide содержащий названия изображений [69_0.jpg|69_1.jpg|69_2.jpg|69_3.jpg|69_4.jpg]
Создаю функцию и получаю массив товаров:
function products($category, $order_db, $start_pos, $perpage) < $query = "(SELECT goods_id, name, img, img_slide, keywords, description, anons, price, hits, goods_brands_name FROM goods WHERE goods_brandid = $category AND visible='1') UNION (SELECT goods_id, name, img, img_slide, keywords, description, anons, price, hits, goods_brands_name FROM goods WHERE goods_brandid IN ( SELECT brand_id FROM brands WHERE parent_id = $category ) AND visible='1') ORDER BY $order_db LIMIT $start_pos, $perpage"; $res = mysql_query($query) or die(mysql_error()); $products = array(); while($row = mysql_fetch_assoc($res))< $products[] = $row; >return $products; >
case('cat'): // товары категории $category = abs((int)$_GET['category']); /* =====Сортировка===== */ // массив параметров сортировки // ключи - то, что передаем GET-параметром // значения - то, что показываем пользователю и часть SQL-запроса, который передаем в модель $order_p = array( 'pricea' => array('от дешевых к дорогим', 'price ASC'), 'priced' => array('от дорогих к дешевым', 'price DESC'), 'datea' => array('по дате добавления - к последним', 'date ASC'), 'dated' => array('по дате добавления - с последних', 'date DESC'), 'salea' => array('сначало акции', 'sale DESC'), 'hitsed' => array('сначало скидки', 'hits DESC'), 'namea' => array('от А до Я', 'name ASC'), 'named' => array('от Я до А', 'name DESC') ); $order_get = clear($_GET['order']); // получаем возможный параметр сортировки if(array_key_exists($order_get, $order_p))< $order = $order_p[$order_get][0]; $order_db = $order_p[$order_get][1]; >else < // по умолчанию сортировка по первому элементу массива order_p $order = $order_p['namea'][0]; $order_db = $order_p['namea'][1]; >/* =====Сортировка===== */ // параметры для навигации $perpage = PERPAGE; // кол-во товаров на страницу if(isset($_GET['page']))< $page = (int)$_GET['page']; if($page < 1) $page = 1; >else < $page = 1; >$count_rows = count_rows($category); // общее кол-во товаров $pages_count = ceil($count_rows / $perpage); // кол-во страниц if(!$pages_count) $pages_count = 1; // минимум 1 страница if($page > $pages_count) $page = $pages_count; // если запрошенная страница больше максимума $start_pos = ($page - 1) * $perpage; // начальная позиция для запроса $brand_name = brand_name($category); // хлебные крохи $products = products($category, $order_db, $start_pos, $perpage); // получаем массив из модели $meta['title'] = $brand_name[0]['brand_name']; if($brand_name[1]) $meta['title'] .= " - "; $meta['title'] .= "" ; $meta['description'] = " "; break;
// для примера как я это представляю
Пытался как можно лучше раскрыть суть, буду благодарен если поможете с направлений где прочитать или искать примеры подобных решений, сам я только учусь.
UPD
Решил проблему создав еще одну функцию.
Простой 2 комментария
Вывод картинок из массива
Здравствуйте! Подскажите пожалуйста, как мне разобрать массив картинок, что бы на выходе получилась таблица с двумя картинками в каждой строке ?
Вывод картинок
Добрый вечер всем. Прошу помощи. Есть галерея. Не могу понять как сделать так чтоб при заходе на.
Вывод картинок
Здравствуйте, вывод идет: <a href="/catalog/catalog_img/" target=_blank onclick="return.
Вывод картинок
Здравствуйте! Вывожу на сайт картинки из бд и несколько строк в список. Возле каждого элемента.
Вывод картинок в php
Всем доброе время суток, у меня есть код вывода картинки и стать, есть шаблон для вывода статьи на.
Сообщение было отмечено maximillian77 как решение
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
# Массив имён картинок $images = [ 'image1.jpg', 'image2.jpg', 'image3.jpg', 'image4.jpg', 'image5.jpg' ]; ?> table> tr> foreach($images as $key=>$image): ?> td> img src="/path/to/images/$image?>" alt="Php изображения в массиве"/> td> if(++$key % 2==0): ?> tr>tr> endif; ?> endforeach; ?> tr> table>
lyod , спасибо Вам ! Я вот сделал так, но не работает как хотелось бы .. получаю вот такой вариант!
Не подскажите пожалуйста в чём может быть ошибка ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14
'; echo ' | '; if ($j % 2 == 0 ) { echo '
Сообщение было отмечено maximillian77 как решение
Решение
Это затрата ресурсов и времени.
А во-вторых, почему бы не сделать, как я показал? Зачем тут FOR?
Попробуйте так:
1 2 3 4 5 6 7 8 9 10 11 12
Php изображения в массиве
Гостей: 7
Гости: | |
| 13:42:45 |
/Статьи | |
| 13:42:44 |
Поиск по тегам | |
| 13:42:36 |
Поиск по тегам | |
| 13:41:50 |
/Поиск | |
| 13:39:16 |
Поиск по тегам | |
| 13:39:08 |
Поиск по тегам | |
| 13:38:32 |
Поиск по тегам |
Всего пользователей: 55
Новый пользователь: antalyaliali
JS- утилиты, фреймворки → Syntax Highlighter [1270]
PHP скрипты → Скрипт для проверки . [1054]
JS- утилиты, фреймворки → JQuery TimeAgo [970]
JS- утилиты, фреймворки → JQuery Form [924]
JS- утилиты, фреймворки → JQuery Validation Pl. [4037]
Безопасность → DKIM-подпись для почтового домена в I. [18363]
Собственное мнение → Page Rank и тИЦ ушли в небытие. [4538]
Собственное мнение → isset и empty — функции? Нет! [8098]
Программирование → PHP-Fusion: переход с mysql на mysqli. [8846]
Программирование → Перевод CMS PHP-Fusion с mysql_* на m. [6609]
PHP → Функция хэширования пароля
HTML → HTML5: валидация email в поле ввода
JavaScript, JQuery → Поиск выделенных чекбоксов на ст.
PHP → Функция преобразования hex в rgb
.htaccess → Переименование названия сессии
Да, смайлы зачетные )) Уже не помню, где брал их. Это далеко не все, лень добавлять просто, их там штук 70
→ На картеКупить AMWAY: офис в Ярославле Консультации, презентации, мастер–классы, знакомство с продукцией, заказ и выдача купленного товара:
●Адрес: улица Валентины Терешковой, дом 1 (Вход со двора)
●Телефон:+7 (920) 112-00-91
●Email:matyxho@mail.ru
●Сайт:https://www.amway.ru/user/lebedem
●Визитка:http://yar.meweb.ru
При создании одного из плагинов понадобилось мне показать все изображения из указанной папки (директории). Признаться, раньше я не работал с подобным, но все новое всегда вызывает азарт. Поэтому, чуть погуглив и покурив мануалы, я набросал несколько строк кода, коими и поделюсь с вами.
Pisatel
06 Апрель 2015 15:36:11
28441 Прочтений
Обновлено: 06 апреля 2015 16:00:17
В данной статье приведу небольшой скрипт, который ищет изображения в указанной папке (директории) и выводит их. Для начала — вывод всех изображений из папки (как всегда- комментарии прямо в коде):
$wimage = "";
$fimg = "";
$path = "images/"; // задаем путь до сканируемой папки с изображениями
$images = scandir($path); // сканируем папку
if ($images !== false) < // если нет ошибок при сканировании
$images = preg_grep("/\.(?:png|gif|jpe?g)$/i", $images); // через регулярку создаем массив только изображений
if (is_array($images)) < // если изображения найдены
foreach($images as $image) < // делаем проход по массиву
$fimg .= "";
>
$wimage .= $fimg;
> else < // иначе, если нет изображений
$wimage .= "Не обнаружено изображений в директории!\n";
>
> else < // иначе, если директория пуста или произошла ошибка
$wimage .= "Директория пуста или произошла ошибка при сканировании.";
>
echo $wimage; // выводим полученный результат
Однако, задачи бывают разные. Попробую привести несколько примеров. Например, нам необходимо вывести не все изображения, а только первые 10. Для этого нужно будет лишь задать дополнительное условие при проходе по массиву. Итак, код с комментариями:
$stop = 9; // на 1 меньше, так как ключи в массиве начинаются с 0, то есть
// 0, 1, 2. значит первые 10 значений закончатся на ключе 9
foreach($images as $key => $image) < // делаем проход по массиву, выбирая ключ =>значение
$fimg .= "";
if ($stop == $key) break; // останавливаем проход по массиву, когда 9==9
>
Следующий пример — выберем, например, каждое второе изображение:
foreach($images as $key => $image) < // делаем проход по массиву, выбирая ключ =>значение
if ($key % 2 == 0) < // если целочисленный остаток от деления ключа на 2 равен 0
$fimg .= "";
> else < // иначе
continue; // пропускаем изображение
>
>
Ну и на закуску — выберем 5 случайных (рандомных) изображений из папки (каталога). Для этого я воспользуюсь php–функцией array_rand(); , и код придется чуть усложнить, увеличив буквально на пару строк:
$arand = array_rand($images, 5); // получили массив 5 случайных ключей (ключ массива => ключ изображения)
$i = 0;
foreach($images as $key => $image) < // проход по массиву
if ($arand[$i] == $key)
// если значение случайного ключа равно текущему ключу- выводим изображение
$fimg .= "";
> else < // иначе
continue; // пропускаем
>
$i++;
>
Если кто–то сможет сделать это более изящно — милости прошу. Я лично всегда стараюсь использовать для работы с массивами функции, которые специально предназначены для работы с ними и не изобретать велосипедов.
На этом, в общем, и закончу. Удачи в кодинге и процветания твоему проекту!
Массив изображений
Добавлено через 4 часа 16 минут
некто не знает чтолы, проста сам в первые с такой проблемой столкнулся, тут в одной ячейки их может быт 100 или 200?
Добавлено через 33 минуты
foreach($imageglav[items] as $item) if($item) { echo'} echo'
Warning: Invalid argument supplied for foreach() in Z:\home\test1.ru\www\admin\admin_functions.php on line 480
Массив изображений
В папке хранятся изображения, необходимо что бы они поочередно передавались функции для обработки.
Массив изображений
как создать массив в котором возможно хранить некоторое количество изображений. если это.
Массив из изображений
Есть у меня две формы. На первой форме несколько кнопок. На второй форме элемент pictureBox (хочу.
Массив изображений
Доброго времени суток! записал массив изображений: inf.foto:=TImage.Create(Image5); при его.
Сообщение от Sear
Аргумент, передаваемый в foreach, должен быть массивом. Воспользуйтесь функцией explode() для получения нужного массива.
считываете данные из базы, после прогоняете значение этого поля через ексрлоде и получаете массив и дальше идете по этому массиву foreach
$images = explode(' ', $data_from_mysql); foreach ($images as $image) { echo'}
спасибо все ту проблему решил теперь мне надо все изображения выдать на экран у каждой записи возникла вторая проблема
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
$result = mysql_query ("SELECT * FROM bashennyekrany WHERE main='bashen'",$db); $myrow = mysql_fetch_array ($result); $photos = explode(" ",chop($myrow["photos"])); do { printf ("\"details_block\"> %s/'>%s
\"zoom_img(this.childNodes[0]);\">%s' target='blank' onclick=\"show_image('%s',true); return false;\">
\"gallery_line2\">\"gal2_left\" onclick=\"offset_previews(this,50);\" onmouseover=\"this.style.cursor='pointer';\" onmouseout=\"this.style.cursor='default';\" style=\"cursor: default;\">
\"to_left2.png\"> \"gal2_content\">\"gal2_layout\"> echo' foreach($photos as $item) echo'
\"../'.$item.'\" alt=\"'.$item.'\"\"/>'; > ';
\"gal2_right\" onclick=\"offset_previews(this,-25);\" onmouseover=\"this.style.cursor='pointer';\" onmouseout=\"this.style.cursor='default';\">
\"to_right2.png\"> %s ",$myrow["id"],$myrow["name"],$myrow["img"],$myrow["img"],$myrow["img"],$myrow["text"]); } while ($myrow = mysql_fetch_array ($result)); ?>