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

Статус
В этой теме нельзя размещать новые ответы.

pavloff

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

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

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

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

<script>
var k;
imgprint=1;// КОЛИЧЕЧЕСТВО ПЕЧАТАЮЩИХСЯ БАННЕРОВ
imgall=6;// НОМЕР ПОСЛЕДНЕГО БАННЕРА;
var ran=new Array(imgprint-1);
function random_number(){
return Math.round(Math.random() * imgall);
}
function check(num){
while(k!=num){
ran[num]=random_number();
k=0;
for(a=0;a<num;a++){
if(ran[a]!=ran[num]){
k++
}
}
}
}
ran[0]=random_number();
for(a=1;a<imgprint;a++){
check(a);
}
img=new Array(imgall);
link=new Array(imgall);
alt=new Array(imgall);
text=new Array(imgall);
// ЗДЕСЬ ВВОДЯТСЯ ПОКАЗЫВАЕМЫЕ БАННЕРЫ В ФОРМАТЕ: КАРТИНКА; ССЫЛКА; ПОДСКАЗКА
img[0]="1.jpg"; link[0]="http://pavlov.am"; alt[0]="pavlov.am"; text[0]="";
img[1]="2.jpg"; link[1]="http://pavlov.am"; alt[1]="pavlov.am"; text[1]="";
img[2]="3.jpg"; link[2]="http://pavlov.am"; alt[2]="pavlov.am"; text[2]="";
img[3]="4.jpg"; link[3]="http://pavlov.am"; alt[3]="pavlov.am"; text[3]="";
img[4]="5.jpg"; link[4]="http://pavlov.am"; alt[4]="pavlov.am"; text[4]="";
img[5]="6.jpg"; link[5]="http://pavlov.am"; alt[5]="pavlov.am"; text[5]="";
for(i=0;i<imgprint;i++){
document.write('<a href="'+link[ran]+'" target="_self">');
document.write('<br><br><img width=1200 border=0 src="'+img[ran]+'"'); document.write('alt="'+alt[ran]+'"><br>'+text[ran]+'</a>');
}
document.write('');
</script>
 
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'/>";
}
?>
 
Он в этом случае выводит все картинки на страницу и рендомно меняет первую сверху, а я бы хотел что бы показывалась только одна и не подскажешь как размеры проставить? у меня у всех картинок одинаковые размеры
 
Там скрипт неплохой, но показывает только по 2 картинки, а мне надо по 1
 
Ну просто, как я понял, в твоем примере(на 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
 
  • Заблокирован
  • #7
Как вариант
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/");

?>
 
блин ребята вы меня убиваете, если вы хотите выбрать из директории в случайном порядке то используются:
PHP:
$array = glob("dirname/*.jpg");//выбираем пути по маске
shuffle($array);//перемешиваем массив
foreach($array as $name)
{
  echo "<img src='$name'>";
}
нафига огород городить???
 
  • Заблокирован
  • #9
Это не огород, а код :)
 
Не везде glob полезен и лучше :)
Если в папке хотя бы 1000 файлов, то он уже заметно нагружает сервер в отличие от перебора или указания точного место положения файлов.
Проверено на личном опыте.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху