|
|
|
| Ответ 005 на задачу N 10.
С условиями задачи можно ознакомится по ссылке.
<?php
/*
Имеется подкаталог, содержащий некоторое количество графических файлов (jpg/gif/bmp). В этом же подкаталоге есть файл descript.ion, содержащий описание некоторых файлов в виде:
111.jpg описание этой фото
222.gif а это просто картинка
333.bmp а этого файла нет, но описание есть
Необходимо создать скрипт index.php, который будет находиться в этом же подкаталоге и будет выводить таблицу, в каждой ячейке которой будет изображение и подпись к нему (если она есть).
Замечание
В файле index.php необходимо предусмотреть переменную, содержащую количество столбцов в таблице.
*/
//Имя файла, содержащего описания картинок
$filename='descript.ion';
//Количество столбцов выводимой таблицы
$col=3;
//Номер выводимого столбца таблицы
$colNumber=0;
//////////////////////////////////////////////////////////////////////////
//Желаемые размеры для вывода картинок:
//Если $height=0 и $width =0, то картинки выводятся их реальным размером
//Если только $height=0, то картинка выводится шириной $width
//Если только $width=0, то картинка выводится высотой $height
//////////////////////////////////////////////////////////////////////////
//Высота выводимых картинок
$height=200;
//Ширина выводимых картинок
$width=0;
//Формируем строку $image_size с размерами картинки для HTML
if($width==0&&$height==0)
{
$image_size='">';
}
elseif($width==0)
{
$image_size=sprintf('" height="%d">',$height);
}
elseif($height==0)
{
$image_size=sprintf('" width="%d" >',$width);
}
else
{
$image_size=sprintf('" width="%d" height="%d">',$width,$height);
}
/////////////////////////////////////////////////////////////////////////////////
//Начинаем рисовать таблицу
echo('<table border="1">');
//Считываем все записи файла с описаниями картинок в массив
$massiv=file($filename);
//Определяем текущий каталог
$mydir=getcwd();
//открываем каталог
$handler=opendir($mydir);
//Обходим все файлы
while (false !== ($file = readdir($handler)))
{
//Получаем информацию о файле
$fileinfo=pathinfo($file);
//Переводим в нижний регистр расширение файла
$extension=strtolower($fileinfo["extension"]);
//Если это файлы рисунков
if($extension=='jpg'||$extension=='gif'||$extension=='bmp')
{
//Если это первый столбец - открываем ряд
if($colNumber==0)
{
echo('<tr>');
}
//Выводим рисунок
echo('<td valign="top"><img src="'.$file.$image_size);
$colNumber++;
//Ищем и выводим описание файла
$opisanie=0;
foreach ($massiv as $line_num => $line)
{
if(strncasecmp($line,strtolower($file),strlen($file))==0)
{
echo('<br>'.substr($line,strlen($file)).'</td>');
//И удаляем запись об этом файле из массива
unset($massiv[$line_num]);
//Указываем, что описание было
$opisanie=1;
}
} //ENDFOREACH Конец просмотра массива описаний
//Если не было описания просто закрываем ячейку таблицы
if($opisanie==0)
{
echo('</td>');
}
//Если это последний столбец - закрываем ряд
if($colNumber==$col)
{
echo('</tr>');
$colNumber=0;
}
} //ENDIF Конец если это файлы рисунков
} //ENDWHILE Конец обхода всех файлов
//Закрываем таблицу
echo('</table>');
?>
|
http://www.softtime.ru/info/task.php?id_article=80 | |
|
|
|
|
|
|
|
для: SoftTime
(01.03.2006 в 22:47)
| | Немного громоздко, но скрипт справляется со своей работой, осуществляет проверку расширений файлов, без проблем с регистром, и что самое главное масштабирует размеры файлов, конечно на скорости загрузки это не отразится и даже может привести к введение в заблуждение редактора фотогалереи, но у меня тут пару фотографий размер которых привышает разрешение монитора и масштабирование очень кстати :))) Однако, скрипт отображает фотографии, которые присутствуют в каталоге, но отсутствуют в файле описания - это наверное не совсем то, чего бы хотел администратор. | |
|
|
|
|
|
|
|
для: SoftTime
(01.03.2006 в 22:47)
| | Нареканий нет. | |
|
|
|