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

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

caspersky

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

находятся восновном тяжелые скрипты. либо случайный вывод только одной картинки.
 
Вод код - получение случайного файла из папки.
Для просмотра ссылки Войди или Зарегистрируйся Аналогично можно поступить и с картинками
 
Код:
<?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);

?>
 
По одной не показывает, минимум по 2
 
Скинули такой скрипт

<?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;
}
?>

Спасибо, то что требовалось!
 
Полезная вещь. А можно его как то оформить в дизайн?
 
  • Заблокирован
  • #9
гыы :) а зачем ты даешь линку на мной написанный скрипт если он на пару постов выше. это не наезд, просто вопрос :eek:y:

я его там немного подправил :) смотри внимательнее:p
 
<?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;
}
?>

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