Сканирование папки Scandir

maiker2k

Новичок
День добрый.
У меня есть задача:
Пользователи кладут каждый час новые картинки в папку в пределах 10 шт.

Нужно картинки которые положили в папку вывести на большую плазму ТВ. Картинки должны меняться анимацией каждые 5 -10 мин.

Загрузили новые картинки в папку, старые удалили, Новые Картинки крутятся анимацией на ТВ.

Я разобрался отдельно как сделать: отдельно анимацию заданных картинкой делать где используется - html и css

разобрался как сделать сканирование папки где находятся фото( с помощью PHP) c выводом на html страничку.
index.php

  1. <head>
  2. <meta charset="utf-8" />
  3. <link type="text/css" rel="stylesheet" href="css/styles.css" media="all" />
  4. <title> =) </title>
  5. </head>
  6. <body>

  7. <div id="title">
  8. <p>Сканирование папки с картинками с помощью PHP-функции scandir();</p>
  9. </div>

  10. <div id="main-container">
  11. <div id="img">
  12. <div class="img">
  13. <?PHP $files = require 'php/scanfolder.php';?>
  14. </div>
  15. </div>

  16. </div>


  17. </body>
  18. </html>

scanfolder.php
  1. <?PHP $directory = 'images/';
  2. $scandir = scandir($directory);

  3. for ($i=0; $i<count($scandir); $i++)
  4. {
  5. if ($scandir[$i] != '.' && $scandir[$i] != '..')
  6. {
  7. echo '<img src="'. $directory . $scandir[$i] . '" alt="'. $scandir[$i] . '" />';
  8. }
  9. }
  10. ?>

а нужно показывать на HTML странице по одной картинке, плавно делая анимацию на следующую.

а т.к. анимацией делается с помощью @keyframes

что бы плавно сменялась анимация картинка на другую кратинку нужно каждой картинке дать класс

что то типа вот этого:

@keyframes div-style1
{
from { opacity: 1; }
16% { opacity: 1; }
25% { opacity: 0; }
91% { opacity: 0; }
to { opacity: 1; }
}

@keyframes div-style2
{
from { opacity: 0; }
16% { opacity: 0; }
25% { opacity: 1; }
41% { opacity: 1; }
50% { opacity: 0; }
to { opacity: 0; }

@keyframes div-style3
{
from { opacity: 0; }
16% { opacity: 0; }
25% { opacity: 1; }
41% { opacity: 1; }
50% { opacity: 0; }
to { opacity: 0; }



что поменял по итогу в scanfolder.php
  1. <?PHP
  2. $directory = 'images/';
  3. $scandir = scandir($directory);

  4. for ($i=0; $i<count($scandir); $i++) {
  5. if ($scandir[$i] != '.' && $scandir[$i] != '..') {
  6. echo '<img class="div-style'.$i+1.'" src="'. $directory .$scandir[$i] . '" alt="'. $scandir[$i] . '" />';
  7. }
  8. }
  9. ?>


index.php

  1. <!DOCTYPE html>
  2. <html lang="ru">
  3. <head>
  4. <meta charset="UTF-8">
  5. <link rel="stylesheet" href="css/style.css">
  6. <title>Document</title>
  7. </head>
  8. <body>

  9. <div class="main">
  10. <div class="dashboard">
  11. <div class="div-style1"><img src=<?PHP $files = require'php/scanfolder.php';?>>
  12. </div>
  13. <div class="div-style2"><img src=<?PHP $files = require'php/scanfolder.php';?>>
  14. </div>
  15. <div class="div-style3"><img src=<?PHP $files = require'php/scanfolder.php';?>>
  16. </div>
  17. </div>
  18. </div>


  19. </body>
  20. </html>


Как я подозреваю скорее всего мой косяк в index.php
в строчке <div class="div-style2"><img src=<?PHP $files = require'php/scanfolder.php';?>>
не могу не как догнать как передать классы div-style1,div-style2,div-style3 которые создаются в scanfolder.php, как грамотно записать их в Index.php ???
Подскажите пожалуйста. примером кода, ну или ссылку киньте где описывается момент, как грамотно написать код с классами которые получились из scanfolder.php PHP, как записать их со стороны html?
 

Тугай

Новичок
Реши свою задачку без php для двух статических картинок, пусть одна заменяет анимацией другую через какой-то интервал.
Дальше тебе нужно использовать ajax запрос, который вызовет скрипт на php, который вернет ссылку на картинку для замены одной из двух в анимации, меняй ту у которой opacity = 0.
Короче тебе надо изучить javascript еще :) ajax запрос потом вызывается через заданный интервал, для этого в javascripte есть функция setInterval.

scanfolder.php - зная какие картинки сейчас показываются, может найти в каталоге следующую по дате создания файла например.
 
Сверху