случайный вывод фото 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:
когда не будь мы за это поплатимся....

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 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
полковник
Сообщения: 5845
Зарегистрирован: 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
полковник
Сообщения: 5845
Зарегистрирован: 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
полковник
Сообщения: 5845
Зарегистрирован: 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
полковник
Сообщения: 5845
Зарегистрирован: 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
полковник
Сообщения: 5845
Зарегистрирован: 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
полковник
Сообщения: 5845
Зарегистрирован: 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]
[/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]
[/code]

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

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

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

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