Статьи

Сканирование папок с помощью PHP

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

В таких случаях лучшее решение — заставить PHP сканировать вашу папку «портфолио» и динамически создавать код для вас. Если вы хотите обновить свою страницу новым снимком, все, что вам нужно сделать, это перетащить изображение и соответствующий эскиз в соответствующие папки — и PHP сделает все остальное. Давайте построим это сейчас!




Портфолио Страница

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

  • Используйте PHP для сканирования нашей папки портфолио. Затем он будет пролистывать каждый файл, то есть изображение, и затем отображать его на странице.
  • Немного стилизовать наш контент с помощью CSS
  • Когда пользователи нажимают на миниатюру, мы будем использовать jQuery для загрузки большой версии изображения на главной панели.
  • Если у пользователя отключен JavaScript, он будет просто перенаправлен на новую страницу, которая содержит полноразмерное изображение

Добавить новое изображение в наше портфолио просто. Сделайте снимок вашего веб-сайта, брошюры, открытки и т. Д. И увеличьте его до 500 x 350 пикселей. Поместите это изображение в папку «images / featured».

Затем создайте миниатюру размером 50px x 50px. Поместите это изображение в папку «images / tn».

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»>
<html xmlns=»http://www.w3.org/1999/xhtml»>
<head>
    <title>Scanning Directories with PHP</title>
    <script src=»js/jquery-1.2.6.pack.js» type=»text/javascript»></script>
    <script src=»js/scripts.js» type=»text/javascript»></script>
    <link href=»default.css» rel=»stylesheet» type=»text/css» />
</head>
<body>
    <div id=»container»>
    <h1>Some Portfolio</h1>
        <div id=»featured»>
            <?php
                $featured_dir = ‘images/featured/’;
                $scan = scandir($featured_dir);
                echo ‘<img src=»‘. $featured_dir . $scan[2] . ‘» alt=»image» />’;
            ?>
        </div>
         
        <ul id=»options»>
        <?php
            $dir = ‘images/tn/’;
            $scan = scandir($dir);
 
            for ($i=0; $i<count($scan); $i++) {
             if ($scan[$i] != ‘.’ && $scan[$i] != ‘..’) {
             echo ‘
             <li>
              <a href=»‘ . $featured_dir . $scan[$i] . ‘»>
               <img src=»‘. $dir . $scan[$i] . ‘» alt=»‘. $scan[$i] . ‘» />
              </a>
             </li>’;
             }
            }
        ?>
        </ul>
    </div>
</body>
</html>

Посмотрите это здесь.

IE6 проблема

К счастью, нам нужно исправить только одну вещь. Если вы посмотрите на изображение выше, то увидите, что неупорядоченный список #options не содержит элементов с плавающим списком. В то время как современные браузеры корректно очищают элементы благодаря нашему «переполнению: скрыто»; стиль, IE6 нужно еще одно правило. Добавьте это к вашей таблице стилей.

1
2
3
4
ul#options {
…misc styles…
height: 1%;
}

Я мог бы установить высоту на что угодно, и это все равно будет работать. Подумайте об этом, как Драго, ударив IE6 по лицу и сказав: «Проснись!». Этот стиль заставляет IE6 расширяться настолько, насколько это необходимо для очистки его дочерних элементов.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$(function() {
    $.preloadImage = function(path) {
        $(«#featured img»).attr(«src», path);
    }
 
    $(‘ul#options li img’).click(function() {
        $(‘ul li img’).removeClass(‘selected’);
        $(this).addClass(‘selected’);
 
        var imageName = $(this).attr(‘alt’);
 
       $.preloadImage(‘images/featured/’ + imageName);
 
        var chopped = imageName.split(‘.’);
        $(‘#featured h2’).remove();
        $(‘#featured’)
         .prepend(‘<h2 class=»description»>’ + chopped[0] + ‘</h2>’).children(‘h2’).fadeIn(500).fadeTo(200, .6);
    });
 
    $(‘ul#options li a’).click(function() {
        return false;
    });
});

Существуют способы динамического создания миниатюр наших изображений. Попробуйте найти способ заставить PHP сканировать нашу «избранную» папку, а затем динамически создать версию эскиза и сохранить ее в папке «tn».