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

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

 

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

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

тема: Ответ 002 на задачу N 10
 
 автор: SoftTime   (28.02.2006 в 15:36)   письмо автору
 
 

Ответ 002 на задачу N 10.
С условиями задачи можно ознакомится по ссылке.

<html>
<body>
<?php
    
//Лично я не очень люблю встраивать переменные прямо в строку,
    //т.к. это очень сильно понижает читаемость кода.
    
    
$table_cols "4"//Число столбцов
    
$images_ext "jpg|jpeg|gif|png|bmp"//Список разрешённый расширений, отделённых друг от друга "|"
    
$cat "img/"//Имя папки с картинками, со слешем после названия. 
    //Если изображения лежат в той же папке что и данный скрипт, оставте строку пустой

    //Проверяем верно ли указан каталог
    
if (is_dir("./".$cat))
    {
#1
        
if (file_exists("./".$cat."descript.ion"))
            
//Получаем массив строк
            
$images_array file("./".$cat."descript.ion");
        
//Если файла с описанием нет, то ни один цикл не выполнится
        
        //Обрабатываем массив строк в цикле
        
$images_count count($images_array);
        for (
$k=0$k<$images_count$k++)
        {
#2    
            //Разделяем нужную строку на составляющие, для получения имени файла и описание
            
$record explode(" "$images_array[$k]);
            
//Убираем лишние пробелы от имени файла
            
$file_name trim($record[0]);
            
//Если файл существуем, то выполняем необходимые действия
            
if (file_exists("./".$cat.$file_name)) 
            {
#3
                //Проверяем расширение файла
                
if (preg_match("/(.*)\.(".$images_ext.")/i"$file_name))
                {
#4
                    //Стираем строку с описанием
                    
$desc_str "";
                    
//Добавляем новое имя файла в массив
                    
$img_array[] = $file_name;
                    
                    
//Склеиваем описание, т.к. оно могло разбиться при вызове explode
                    
$record_count count($record);
                    for (
$g=1$g<$record_count$g++)
                        
$desc_str .= $record[$g]." ";
                    
//Добавляем описание в массив
                    
$desc_array[] = $desc_str;
                }
#4
            
}#3
        
}#2
        
        #ВЫВОДИМ РЕЗУЛЬТАТ
        
print "<table border>\n";
        
$img_count count($img_array);
        
//В цикле рисуем строки
        
for ($i=0$i<$img_count$i+=$table_cols)
        {
            print 
"<tr>";
            
//В цикле рисуем ячейки
            
for ($j=0$j<$table_cols$j++) if (!empty($img_array[$i+$j])) print "<td style='padding: 10px;'><img src='".trim($cat.$img_array[$i+$j])."'><br>".trim($desc_array[$i+$j])."</td>";
            print 
"</tr>\n";
        }
        print 
"</table>\n";
    }
#1
?>
</body>
</html>

Извиняюсь за то, что высылаю скрипт второй раз. Но в прошлой версии было замечено ряд недочётов.

http://www.softtime.ru/info/task.php?id_article=80

   
 
 автор: cheops   (05.03.2006 в 23:40)   письмо автору
 
   для: SoftTime   (28.02.2006 в 15:36)
 

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

   
 
 автор: Саня   (06.03.2006 в 19:42)   письмо автору
 
   для: SoftTime   (28.02.2006 в 15:36)
 

descript.ion:

1.jpg Соль и пеппер
2.jpg Рыба
4.jpg Яйцо в воде
7.jpg Иммунная клетка
8.jpg Несуществующий файл


Вывел почему-то 4 файла, описания которых есть в файле, а остальные пропустил.
...в каждой ячейке которой будет изображение и подпись к нему (если она есть).

   
 
 автор: Sergey89   (06.03.2006 в 20:19)   письмо автору
 
   для: Саня   (06.03.2006 в 19:42)
 

Прочитай условие, нужно вывести только файлы из перечислинных и если он вобще существует!

   
 
 автор: Drago   (06.03.2006 в 20:36)   письмо автору
 
   для: Sergey89   (06.03.2006 в 20:19)
 

Вот полное условие. Где здесь такое написано?

Имеется подкаталог, содержащий некоторое количество графических файлов (jpg/gif/bmp). В этом же подкаталоге есть файл descript.ion, содержащий описание некоторых файлов в виде:

111.jpg описание этой фото 
222.gif а это просто картинка 
333.bmp а этого файла нет, но описание есть 

Необходимо создать скрипт index.php, который будет находиться в этом же подкаталоге и будет выводить таблицу, в каждой ячейке которой будет изображение и подпись к нему (если она есть).

Я понял так, что нужно выводить все картинки. Если есть подпись, то выводить и ее. Если имеется подпись к несуществующему файлу, то нужно пытвться вывести его тоже, вместе с подписью.

   
 
 автор: Sergey89   (06.03.2006 в 21:26)   письмо автору
 
   для: Drago   (06.03.2006 в 20:36)
 

Я думаю просто забыли написать ;) но неявно об этом напоминается.

   
 
 автор: Drago   (07.03.2006 в 10:01)   письмо автору
 
   для: Sergey89   (06.03.2006 в 21:26)
 

А помоему, явно указывается об обратном.
Написано ведь

...в каждой ячейке которой будет изображение и подпись к нему (если она есть).

А не

...в каждой ячейке которой будет изображение, если есть подпись к нему.


Как говорится, прочувствуй разницу. ;)

А вообще, было б лучше, если бы сам автор высказался.

   
 
 автор: Sergey89   (07.03.2006 в 12:52)   письмо автору
 
   для: Drago   (07.03.2006 в 10:01)
 

Я окончательно запуталс я =) Знаю лишь то, что мой скрипт выводит только сущетсвующие файлы и если они есть в файле описания.

   
Rambler's Top100
вверх

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