Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Случайная картинка
 
 автор: (Sandr)   (13.06.2011 в 13:23)   письмо автору
 
 

Есть папка с картинками разных форматов (jpg, gif, png, ...). Подскажите, как достать случайную картинку из папки?

  Ответить  
 
 автор: cheops   (13.06.2011 в 13:35)   письмо автору
 
   для: (Sandr)   (13.06.2011 в 13:23)
 

Возможно вас заинтересует тема по ссылке http://softtime.ru/forum/read.php?id_forum=1&id_theme=4830.

  Ответить  
 
 автор: (Sandr)   (13.06.2011 в 19:55)   письмо автору
 
   для: cheops   (13.06.2011 в 13:35)
 

Попробовал так как в той теме, но ничего не получилось

$imgdir="up/";
$ext="jpg";
$cfile=opendir("$imgdir");
while(($e=readdir($cfile))!==false)
{
if(is_file($e)) $filename[] = $e;
}
$ranfile = mt_rand(0, count($filename) - 1);
echo '<img src="'.$imgdir.$filename[$ranfile].'.'.$ext.'">';


echo count($filename); // почему-то выводит 0

  Ответить  
 
 автор: (Sandr)   (13.06.2011 в 20:00)   письмо автору
 
   для: (Sandr)   (13.06.2011 в 19:55)
 

В папке 3 картинки, и если в цикле выводить $e то выводятся их имена. Но почему-то не заносятся в массив $filename.
Если посмотреть код страницы, то там показывается только это:
<img src="up/.jpg">

  Ответить  
 
 автор: cheops   (13.06.2011 в 20:54)   письмо автору
 
   для: (Sandr)   (13.06.2011 в 19:55)
 

Проверьте корректно ли открывается директория
<?php
  
...
  
$cfile=opendir("$imgdir");
  if(!
$cfile) exit("Невозможно открыть директорию");
  ...
?>

  Ответить  
 
 автор: (Sandr)   (13.06.2011 в 21:27)   письмо автору
 
   для: cheops   (13.06.2011 в 20:54)
 

Да, корректно.

Сейчас попробовал другой способ:
$dir="up/";
$scan = scandir($dir);
$ranfile = mt_rand(1, count($scan));
echo '<img src="'.$dir.$scan[$ranfile].'"><br>';
echo count($scan);

Но вот почему-то картинки не всегда выводятся. И count($scan); выводит 5, хотя всего картинок 3.

  Ответить  
 
 автор: cheops   (13.06.2011 в 21:40)   письмо автору
 
   для: (Sandr)   (13.06.2011 в 21:27)
 

5 из-за того что считаются временные директории . и .. - их нужно убрать из массива $scan.

  Ответить  
 
 автор: (Sandr)   (13.06.2011 в 21:44)   письмо автору
 
   для: cheops   (13.06.2011 в 21:40)
 

$ranfile = mt_rand(2, count($scan));

Сделал так. Но всё равно то выводит, то не выводит.

  Ответить  
 
 автор: (Sandr)   (13.06.2011 в 22:16)   письмо автору
 
   для: (Sandr)   (13.06.2011 в 21:44)
 

Всё, решил проблему. Т.к. count($scan) равен 5, то и выводились элементы с номерами 2345, а элемента 5 не существует))

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования