Случайны показ картитнок

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

Статус темы:
Закрыта.
  1. pavloff

    pavloff

    Регистр.:
    5 авг 2007
    Сообщения:
    265
    Симпатии:
    39
    Нужен простейший скрипт рендомного показа 6 картинок, есть картинки:

    1.jpg
    2.jpg
    3.jpg
    4.jpg
    5.jpg
    6.jpg

    Надо что бы они в случайном порядке показывались.
    Можно на php или js.

    Есть такой скриптик, но он глюковат, да и лишнего много:

     
  2. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    PHP:
    <?php
    $images
    =array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg");
    srand ((float)microtime()*1000000);
    shuffle($images);
    foreach(
    $images as $im){
      echo 
    "<img src='$im' alt='picture'/>";
    }
    ?>
     
    pavloff нравится это.
  3. pavloff

    pavloff

    Регистр.:
    5 авг 2007
    Сообщения:
    265
    Симпатии:
    39
    Он в этом случае выводит все картинки на страницу и рендомно меняет первую сверху, а я бы хотел что бы показывалась только одна и не подскажешь как размеры проставить? у меня у всех картинок одинаковые размеры
     
  4. 1d37r

    1d37r Читатель

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

    pavloff

    Регистр.:
    5 авг 2007
    Сообщения:
    265
    Симпатии:
    39
    Там скрипт неплохой, но показывает только по 2 картинки, а мне надо по 1
     
  6. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    Ну просто, как я понял, в твоем примере(на JS) выводились все 6 картинок.
    Если по одной, тогда так:
    PHP:
    <?php 
    $images
    =array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg"); 
    srand ((float)microtime()*1000000); 
    $im=$images[array_rand($images)];
    echo 
    "<img src='$im' alt='picture' width='300' height='300'/>"
    ?>
    Для изменения размера меняешь параметры width и height
     
    pavloff нравится это.
  7. 1d37r

    1d37r Читатель

    Заблокирован
    Регистр.:
    16 сен 2007
    Сообщения:
    288
    Симпатии:
    48
    Как вариант
    PHP:
    <?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);

    $kolvo count($files);
    $rand_keys rand(1$kolvo);

        echo  
    "<img src=\"foto/".$files[$rand_keys]."\" width=\"300\" height=\"300\">";

    }

    dir_tree("./foto/");

    ?> 
     
    pavloff нравится это.
  8. medvoodoo

    medvoodoo Постоялец

    Регистр.:
    28 мар 2007
    Сообщения:
    89
    Симпатии:
    19
    блин ребята вы меня убиваете, если вы хотите выбрать из директории в случайном порядке то используются:
    PHP:
    $array glob("dirname/*.jpg");//выбираем пути по маске
    shuffle($array);//перемешиваем массив
    foreach($array as $name)
    {
      echo 
    "<img src='$name'>";
    }
    нафига огород городить???
     
  9. 1d37r

    1d37r Читатель

    Заблокирован
    Регистр.:
    16 сен 2007
    Сообщения:
    288
    Симпатии:
    48
    Это не огород, а код :)
     
  10. Lonely Wolf

    Lonely Wolf Прохожие

    Не везде glob полезен и лучше :)
    Если в папке хотя бы 1000 файлов, то он уже заметно нагружает сервер в отличие от перебора или указания точного место положения файлов.
    Проверено на личном опыте.
     
Статус темы:
Закрыта.