Вывод картинок на PHP - нужен скрипт

Тема в разделе "PHP", создана пользователем caspersky, 12 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. caspersky

    caspersky Создатель

    Регистр.:
    7 июл 2008
    Сообщения:
    18
    Симпатии:
    0
    ТЗ - в папке лежат картинки (тумбы).
    нужен максимально простейший скрипт на ПХП для вывода случайных
    картинок (к примеру 9 штук) на странице и чтобы не было одинаковых.

    находятся восновном тяжелые скрипты. либо случайный вывод только одной картинки.
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
  3. Igor123

    Igor123 Постоялец

    Регистр.:
    14 июн 2008
    Сообщения:
    116
    Симпатии:
    13
    Код:
    <?php 
    
    function dir_tree($df) {
       $dirs=array();
       $files=array();
       $pdirs=array();
       $pfiles=array();
    
       $dir=@opendir($df); 
          while (($file=readdir($dir))!==false) {
             if ($file=="." || $file=="..") continue;
             if (is_dir("$df/$file"))  {
                $dirs[]=$file;
                $pdirs[]=$df."/".$file;
    	
             }
           else  {
                $files[]=$file;
                $pfiles[]=$df."/".$file;
             }
    
    
          }
    
      @closedir($dir);
    
    
    
    
    
    
    
    for ($i=0; $i<count($files); $i++) {
    
    
    	echo  "<img src=\"foto/".$files[$i]."\">\n";
    
          }
    
    
    
    
    }
    
    
    
    dir_tree("./foto/");
    
    ?>
    
    осталось только "отрандомить" массив $files[] и выводить не все файлы а $i строго столько сколько надо.

    Добавлено через 6 минут
    сколько всего интерестного добавилось в пхп после 3ей версии :)

    переделал, теперь все совсем просто :)
    dir_tree("./foto/",2);
    1 значение - папка где фотки
    2 значение - колво случайных фоток

    PHP:
    <?php 

    function dir_tree($df,$kolvo) {

       
    $dirs=array();
       
    $files=array();
       
    $pdirs=array();
       
    $pfiles=array();

       
    $dir=@opendir($df); 
          while ((
    $file=readdir($dir))!==false) {
             if (
    $file=="." || $file=="..") continue;
             if (
    is_dir("$df/$file"))  {
                
    $dirs[]=$file;
                
    $pdirs[]=$df."/".$file;
        
             }
           else  {
                
    $files[]=$file;
                
    $pfiles[]=$df."/".$file;
             }


          }

      @
    closedir($dir);





    srand((float) microtime() * 10000000);
    $rand_keys array_rand($files$kolvo);




    for (
    $i=0$i<count($rand_keys); $i++) {


        echo  
    "<img src=\"foto/".$files[$rand_keys[$i]]."\">\n";

          }


    }



    dir_tree("./foto/",2);

    ?>
     
    irk, _acid_ и Vincent нравится это.
  4. pavloff

    pavloff

    Регистр.:
    5 авг 2007
    Сообщения:
    265
    Симпатии:
    39
    По одной не показывает, минимум по 2
     
  5. 1d37r

    1d37r Читатель

    Заблокирован
    Регистр.:
    16 сен 2007
    Сообщения:
    287
    Симпатии:
    48
  6. caspersky

    caspersky Создатель

    Регистр.:
    7 июл 2008
    Сообщения:
    18
    Симпатии:
    0
    Скинули такой скрипт

    <?php
    function get_images($directory)
    {
    $filenames = array();
    $directory = str_replace('\\', '/', $directory);
    if(is_dir($directory))
    {
    $dp = opendir($directory);
    while($filename = readdir($dp))
    {
    if(!is_dir($directory.'/'.$filename))
    {
    $file_ext = strtolower(substr($directory.'/'.$filename, strrpos($directory.'/'.$filename, '.')+1));
    if(in_array($file_ext, array('jpg', 'gif', 'png')))
    {
    $filenames[count($filenames)] = $filename;
    }
    }
    }
    }
    $dp = closedir();
    return $filenames;
    }

    $path = '/images/'; // тут указываешь папку относительно корня веб дерева
    $img_count = 9; // тут указываешь число картинок которое нужно выводить


    $images = get_images($_SERVER["DOCUMENT_ROOT"].$path);
    $i = 0;
    while($images[$i])
    {
    $npic = rand(0, count($images)-1);
    echo '<img src="'.htmlspecialchars($path.$images[$npic]).'" border="0" alt="">';
    unset($images[$npic]);
    $images = array_values($images);
    $i++;
    if($i>=$img_count) break;
    }
    ?>

    Спасибо, то что требовалось!
     
  7. Igor123

    Igor123 Постоялец

    Регистр.:
    14 июн 2008
    Сообщения:
    116
    Симпатии:
    13
    гыы :) а зачем ты даешь линку на мной написанный скрипт если он на пару постов выше. это не наезд, просто вопрос :eek:y:
     
  8. rafic

    rafic

    Регистр.:
    14 май 2008
    Сообщения:
    477
    Симпатии:
    24
    Полезная вещь. А можно его как то оформить в дизайн?
     
  9. 1d37r

    1d37r Читатель

    Заблокирован
    Регистр.:
    16 сен 2007
    Сообщения:
    287
    Симпатии:
    48
    я его там немного подправил :) смотри внимательнее:p
     
  10. maxfighton

    maxfighton Создатель

    Регистр.:
    18 дек 2008
    Сообщения:
    39
    Симпатии:
    7
    <?php
    function get_images($directory)
    {
    $filenames = array();
    $directory = str_replace('\\', '/', $directory);
    if(is_dir($directory))
    {
    $dp = opendir($directory);
    while($filename = readdir($dp))
    {
    if(!is_dir($directory.'/'.$filename))
    {
    $file_ext = strtolower(substr($directory.'/'.$filename, strrpos($directory.'/'.$filename, '.')+1));
    if(in_array($file_ext, array('jpg', 'gif', 'png')))
    {
    $filenames[count($filenames)] = $filename;
    }
    }
    }
    }
    $dp = closedir();
    return $filenames;
    }

    $path = '/images/'; // тут указываешь папку относительно корня веб дерева
    $img_count = 9; // тут указываешь число картинок которое нужно выводить


    $images = get_images($_SERVER["DOCUMENT_ROOT"].$path);
    $i = 0;
    while($images[$i])
    {
    $npic = rand(0, count($images)-1);
    echo '<img src="'.htmlspecialchars($path.$images[$npic]).'" border="0" alt="">';
    unset($images[$npic]);
    $images = array_values($images);
    $i++;
    if($i>=$img_count) break;
    }
    ?>

    все это хорошо но в функции должно быть рекуррсивный вызов самой в себя после проверки есть ли поддериктория?, в которой параметром должно было передаваться переменная поддиректории, тогда происходит обход н-мерного дерева, поправьте если я чтото напутал
     
Статус темы:
Закрыта.