случайный вывод фото PHP

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
radiofannat
сержант
Сообщения: 155
Зарегистрирован: 2007-09-12 14:07:39
Откуда: Украина
Контактная информация:

случайный вывод фото PHP

Непрочитанное сообщение radiofannat » 2008-07-03 10:32:15

есть несколько директорий в каждой лежат фотки, нужно зделать вывод по одной фотке из каждой директории..
привожу код:

Код: Выделить всё

//функция сканиревания директории
function scanngal()
{
  $d = @opendir("gallery");
  if (!$d) return;
  while (($e=readdir($d)) !== false)
  {
    // Игнорируем элементы то что не нужно
    if ($e=='.' || $e=='..' || $e=='smile') continue;
    if (!@is_dir("gallery/$e")) continue;
//////////случайный вывод
$fotodir="gallery/$e/trumb";
$openfotodir=opendir($fotodir);
while ($fotok=readdir($openfotodir))
{
$fotom=substr($fotok,-4);
if ($fotom=='.jpg' or $fotom=='.jpeg' or $fotom=='.png' or $fotom=='.gif') $array[]=$fotok;
}
closedir($openfotodir);
$numberfoto=rand(0,count($array)-1);
echo "<img src='$fotodir/$array[$numberfoto]'><br>";
////////////////////////////
   fclose($handle);
  }
  closedir($d);
}
scanngal();

в результате некоторые фото не соответствуют своего места, в общем путаница... :unknown:
когда не будь мы за это поплатимся....

zg
полковник
Сообщения: 5843
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: случайный вывод фото PHP

Непрочитанное сообщение zg » 2008-07-03 11:44:33

radiofannat писал(а):в результате некоторые фото не соответствуют своего места, в общем путаница... :unknown:
переведи

radiofannat писал(а):$numberfoto=rand(0,count($array)-1);
пхп выгодно отличается тем, в нём есть функции на все случаи жинзи, например array_rand :good:

Аватара пользователя
radiofannat
сержант
Сообщения: 155
Зарегистрирован: 2007-09-12 14:07:39
Откуда: Украина
Контактная информация:

Re: случайный вывод фото PHP

Непрочитанное сообщение radiofannat » 2008-07-03 12:01:01

выводит не все фотки а тех которыз нет:

Код: Выделить всё

Warning: opendir(gallery/3/trumb) [function.opendir]: failed to open dir: No such file or directory in /....../foto.php on line 26

Warning: readdir(): supplied argument is not a valid Directory resource in /.........../foto.php on line 27

Warning: closedir(): supplied argument is not a valid Directory resource in /........../foto.php on line 32

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

zg
полковник
Сообщения: 5843
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: случайный вывод фото PHP

Непрочитанное сообщение zg » 2008-07-03 12:06:46

radiofannat писал(а):раньше была одна фотка и всё было супер-гуд, а после пришлось сделать с директориями и поставить скрипт анимации всех галлерей.. но вот проблема с рандом((((
проблемы не с рандом, а со знанием пхп, сходи на http://php.net там много чего есть :smile:

radiofannat писал(а):может подскажешь что то подобное уже готовое?
если только реализовать тот функционал, который есть у тебя, то щас сделаю

Аватара пользователя
radiofannat
сержант
Сообщения: 155
Зарегистрирован: 2007-09-12 14:07:39
Откуда: Украина
Контактная информация:

Re: случайный вывод фото PHP

Непрочитанное сообщение radiofannat » 2008-07-03 12:19:34

было бы неплохо :roll:
когда не будь мы за это поплатимся....

zg
полковник
Сообщения: 5843
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: случайный вывод фото PHP

Непрочитанное сообщение zg » 2008-07-03 12:29:38

Код: Выделить всё

<?php

// Папка с галереями
$photosDir = 'images';

// Папка с эскизами
$thumbDir  = 'trumb';

if ( is_dir($photosDir) )
{
   foreach ( glob($photosDir .'/**', GLOB_ONLYDIR) as $dir )
   {
      // Проверка на существование папки с эскизами
      if ( !is_dir( $dir .= '/'. $thumbDir ) ) continue;
      
      $dirObj = dir($dir);
      $files  = array();
      
      // Заполнение списка файлов в папке галереии
      while ( false !== ($file = $dirObj->read()) )
         if ( is_file($dir .'/'. $file) && is_image($file) ) $files[] = $file;
      
      if ( $files )
      {
         // Вывод случайной картинки
?>
<table>
<tr><td><?=$dir?></td></tr>
<tr><td><img src="<?=$dir?>/<?=$files[ array_rand($files) ]?>" /></td></tr>
</table>
<br />
<?
      }
   }
}

/**
 * Проверка имени файла на принадлежность к картинкам
 *
 * @param string $file
 * @return bool
 */
function is_image( $file )
{
   return (bool) preg_match('/\.(gif|png|jpe?g)$/i', $file);
}

?>

UPD: ввёл папку trumb :roll:
Последний раз редактировалось zg 2008-07-03 12:57:39, всего редактировалось 1 раз.

Аватара пользователя
radiofannat
сержант
Сообщения: 155
Зарегистрирован: 2007-09-12 14:07:39
Откуда: Украина
Контактная информация:

Re: случайный вывод фото PHP

Непрочитанное сообщение radiofannat » 2008-07-03 12:34:15

сейчас попробую!
когда не будь мы за это поплатимся....

Аватара пользователя
radiofannat
сержант
Сообщения: 155
Зарегистрирован: 2007-09-12 14:07:39
Откуда: Украина
Контактная информация:

Re: случайный вывод фото PHP

Непрочитанное сообщение radiofannat » 2008-07-03 12:48:29

всё работает на ура! только есть небольшой нюанс, небольшое уточнение по каталогам:
в каталоге галлерея есть много галлерей, в каждой галлерее есть 2 каталога 1-большая фотка 2-маленькая...
вот примерный путь к маленькой фотке которую надо выводить:
gallery/...моя галерея.../trumb/123.jpg
как зделать?
когда не будь мы за это поплатимся....

Аватара пользователя
radiofannat
сержант
Сообщения: 155
Зарегистрирован: 2007-09-12 14:07:39
Откуда: Украина
Контактная информация:

Re: случайный вывод фото PHP

Непрочитанное сообщение radiofannat » 2008-07-03 12:57:12

зделал!

Код: Выделить всё

foreach ( glob($photosDir .'/*/trumb', GLOB_ONLYDIR) as $dir )

посибо огромное!!! :drinks:
когда не будь мы за это поплатимся....

Аватара пользователя
radiofannat
сержант
Сообщения: 155
Зарегистрирован: 2007-09-12 14:07:39
Откуда: Украина
Контактная информация:

Re: случайный вывод фото PHP

Непрочитанное сообщение radiofannat » 2008-07-03 17:50:02

ещё такой вопрос, как получить размер фотки?
этот вариант не получатся...

Код: Выделить всё

$blah = getimagesize($dir/$files[ array_rand($files) ]);
$type = $blah['mime'];
$width = $blah[0];
$height = $blah[1];
echo "размер" ;
echo $width ;
echo " x ";
echo $height;
echo " px";
когда не будь мы за это поплатимся....

zg
полковник
Сообщения: 5843
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: случайный вывод фото PHP

Непрочитанное сообщение zg » 2008-07-03 18:10:54

radiofannat писал(а):ещё такой вопрос, как получить размер фотки?
этот вариант не получатся..
хм...

radiofannat писал(а):$blah = getimagesize($dir/$files[ array_rand($files) ]);
ты $dir делишь на случайный файл... зачем? :smile: если уж на то пошло, то

Код: Выделить всё

$randomFile = $files[ array_rand($files) ];
$blah = getimagesize($dir .'/'. $randomFile);
....

Аватара пользователя
radiofannat
сержант
Сообщения: 155
Зарегистрирован: 2007-09-12 14:07:39
Откуда: Украина
Контактная информация:

Re: случайный вывод фото PHP

Непрочитанное сообщение radiofannat » 2008-07-03 18:23:25

получилось, но размер не соотвецтвует!

Код: Выделить всё

$size = getimagesize($dir."/".$files[ array_rand($files) ]);
echo "{$size[0]}"; //мне нужна только ширина/width

получается у каждой фотки случайный размер...
когда не будь мы за это поплатимся....

zg
полковник
Сообщения: 5843
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: случайный вывод фото PHP

Непрочитанное сообщение zg » 2008-07-03 18:32:15

radiofannat писал(а):получилось, но размер не соотвецтвует!
на счёт размера.. ну мягко говоря не верится :cf: что дело тут в getimagesize 8)

Аватара пользователя
radiofannat
сержант
Сообщения: 155
Зарегистрирован: 2007-09-12 14:07:39
Откуда: Украина
Контактная информация:

Re: случайный вывод фото PHP

Непрочитанное сообщение radiofannat » 2008-07-03 18:35:27

да нет, всё правельно он считает, только как бы показывает размер другой фотки...
вот посмотри
Последний раз редактировалось radiofannat 2008-07-03 19:00:55, всего редактировалось 1 раз.
когда не будь мы за это поплатимся....

zg
полковник
Сообщения: 5843
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: случайный вывод фото PHP

Непрочитанное сообщение zg » 2008-07-03 18:46:57

radiofannat писал(а):всё правельно он считает, только как бы показывает размер другой фотки...
:oops: ну... да, так и есть, ты ж ему сам говоришь показывать размер случайной фотки
radiofannat писал(а): getimagesize($dir."/".$files[ array_rand($files) ]);


как ты думаешь для чего я ввёл переменную $randomFile?

Аватара пользователя
radiofannat
сержант
Сообщения: 155
Зарегистрирован: 2007-09-12 14:07:39
Откуда: Украина
Контактная информация:

Re: случайный вывод фото PHP

Непрочитанное сообщение radiofannat » 2008-07-03 18:49:17

кстати это с твоим вариантом, вот кусок кода в цикле...

Код: Выделить всё

<tr><td><img src="<?=$dir?>/<?=$files[ array_rand($files) ]?>" /></td></tr>
</table><br />
<?
$randomFile = $files[ array_rand($files) ];
$asd = getimagesize($dir .'/'. $randomFile);
echo "{$asd[0]}";
когда не будь мы за это поплатимся....

Аватара пользователя
radiofannat
сержант
Сообщения: 155
Зарегистрирован: 2007-09-12 14:07:39
Откуда: Украина
Контактная информация:

Re: случайный вывод фото PHP

Непрочитанное сообщение radiofannat » 2008-07-03 18:52:43

вот так вроди бы работает!!!!

Код: Выделить всё

$randomFile = $files[ array_rand($files) ];
$asd = getimagesize($dir .'/'. $randomFile);
echo "{$asd[0]}";
//echo $dir;
//echo "/";
//echo $files[ array_rand($files) ];
?>
<tr><td><img src="<?=$dir?>/<?=$randomFile?>" /></td></tr>
</table><br />

:drinks:
когда не будь мы за это поплатимся....

Аватара пользователя
radiofannat
сержант
Сообщения: 155
Зарегистрирован: 2007-09-12 14:07:39
Откуда: Украина
Контактная информация:

Re: случайный вывод фото PHP

Непрочитанное сообщение radiofannat » 2008-07-03 18:56:02

а вот что в итоге получилось)))
Последний раз редактировалось radiofannat 2008-07-03 19:01:27, всего редактировалось 1 раз.
когда не будь мы за это поплатимся....

zg
полковник
Сообщения: 5843
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: случайный вывод фото PHP

Непрочитанное сообщение zg » 2008-07-03 18:57:08

ну можно и так ))))

Константин
проходил мимо

случайный вывод фото PHP

Непрочитанное сообщение Константин » 2016-01-13 22:34:42

Код: Выделить всё

[quote="zg"][code]<?php

// Папка с галереями
$photosDir = 'images';
[list][list][code][/code][/list][/list]
[img]// Папка с эскизами[/img]
$thumbDir  = 'trumb';

if ( is_dir($photosDir) )
{
   foreach ( glob($photosDir .'/**', GLOB_ONLYDIR) as $dir )
   {
      // Проверка на существование папки с эскизами
      if ( !is_dir( $dir .= '/'. $thumbDir ) ) continue;
      
      $dirObj = dir($dir);
      $files  = array();
      
      // Заполнение списка файлов в папке галереии
      while ( false !== ($file = $dirObj->read()) )
         if ( is_file($dir .'/'. $file) && is_image($file) ) $files[] = $file;
      
      if ( $files )
      {
         // Вывод случайной картинки
?>
<table>
<tr><td><?=$dir?></td></tr>
<tr><td><img src="<?=$dir?>/<?=$files[ array_rand($files) ]?>" /></td></tr>
</table>
<br />
<?
      }
   }
}

/**
 * Проверка имени файла на принадлежность к картинкам
 *
 * @param string $file
 * @return bool
 */
function is_image( $file )
{
   return (bool) preg_match('/\.(gif|png|jpe?g)$/i', $file);
}

?>[/code]
UPD: ввёл папку trumb  :roll:[/quote]

Аватара пользователя
Духовитин
мл. сержант
Сообщения: 100
Зарегистрирован: 2014-12-17 8:46:05

случайный вывод фото PHP

Непрочитанное сообщение Духовитин » 2016-02-15 22:39:52

radiofannat как же прекрасен твой слог!
Читал бы и читал только лишь твои посты :D
Кто не рискует - тот не пьёт шампанского.


Вернуться в «PHP, PERL, JS, HTML...»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя