Программируем картинную галерею на php
06.04.09
В проект будут входить два файла: index.php и img.dat, также сразу возьмите несколько рисунков, чтобы потом проверить работу нашей галереи. Файл данных img.dat будет иметь такой синтаксис:
1.jpg::Первая фотография
logo.gif::Logo для PHP
Каждая строчка в файле данных отвечает за один рисунок. Сначала пишется имя файла, затем разделитель :: (два двоеточия), после чего идет описание, которое будет находиться под выводимым рисунком. В первой строке мы сначала указываем имя файла — 1.jpg, а затем описание к нему — Первая фотография. Во второй строке идет аналогичная шаблонная запись, только изменено имя файла и установлено соответствующее описание к нему. Как видим, формат рисунка не имеет значения, главное, чтобы он поддерживался вашим браузером.
Теперь напишем сценарий, который будет работать с файлом данных img.dat. Создайте сценарий index.php и напишите в нем такой код:
;lthtml;gt
;lthead;gt
;lttitle;gtГалерея;lt/title;gt
;lt/head;gt
;ltbody;gt
;ltp align=»center»;gt
;lttable width=»600″ border=»1″ cellspacing=»0″ cellpadding=»5″ align=center;gt
;lttr;gt
;lttd valign=»top»;gt
;ltb;gt;ltcenter;gtГалерея;lt/center;gt;lt/b;gt
;lt/td;gt
;lt/tr;gt
;lt?php
if ($QUERY_STRING == «» || ereg(«^img»,$QUERY_STRING)): /*проверка передачи параметрам сценарию*/
?;gt
;lttr;gt
;lttd;gt
;lttable width=»595″ border=»0″ cellspacing=»2″ cellpadding=»4″;gt;lttr;gt;lttd width=»50%» align=»center»;gt
Рисунки:
;lt?php
$data_file = «img.dat»; //имя файла данных
if (file_exists($data_file)): /*проверяем, существует ли указанный файл данных*/
$data_array = file($data_file); /*заносим строки файла в массив $data_array*/
else:
$error[] = «Файл $data_file не существует»; /*если файла не существует, добавляем в массив ошибок соответствующее сообщение*/
endif;
$cnt = count($data_array)-1; //определяем количество выводимых рисунков
if(!isset($img)) $img=0; /*если не указана страница, то показывать будем первую*/
if (isset($data_array)): /*если массив, содержащий строки файла данных, определен*/
foreach($data_array as $i=;gt$string) //перебираем массив в цикле
{
/*удаляем разделитель и отделяем имя от описания рисунка в массивы $name и $comment*/
list($name[],$comment[])= explode(«::»,»$string»);
$j=$i+1; //запоминаем номер рисунка
/*Делаем ссылки для перехода в конец и начало галереи соответственно*/
if ($img ;lt $i && $img ;gt= ($i-5)):
echo «;lta href=»index.php?img=$i» title=»$comment[$i]»;gt$j;lt/a;gt «;
if ($img == ($i-5)): echo «;lta href=»index.php?img=$cnt» title=» в конец «;gt;gt;gt;lt/a;gt «;
endif;
elseif ($img == $i):
echo «;ltb;gt$j;lt/b;gt «;
elseif ($img ;gt $i && $img ;lt= ($i+5)):
if ($img == ($i+5)): echo «;lta href=»index.php?img=0″ title=» в начало «;gt;lt;lt;lt/a;gt «;
endif;
echo «;lta href=»index.php?img=$i» title=»$comment[$i]»;gt$j;lt/a;gt «;
endif;
}
endif;
?;gt
;lt/td;gt
;lttd width=»20%» align=»center»;gtВсего: ;lt?php
echo $cnt+1; /*выводим общее количество рисунков в галереи, добавляем 1, так как отсчет начинался с нуля*/
?;gt
;lt/td;gt
;lt/tr;gt;lt/table;gt
;lt/td;gt
;lt/tr;gt
;lttr;gt
;lttd valign=»top»;gt
;lttable width=»595″ border=»0″ cellspacing=»2″ cellpadding=»4″;gt
;lttr;gt
;lttd align=»center»;gt
;lt?php
//вывод рисунка
if (isset($name)): //если определен массив с именами рисунков
foreach($name as $i=;gt$value) //перебираем весь массив
{
//при нахождении рисунка, который соответствует текущей странице
if ($img == $i)
echo «;ltimg src=»$name[$i]»;gt»; //выводим рисунок
}
endif;
?;gt
;lt/td;gt
;lt/tr;gt
;lt/table;gt
;lt/td;gt
;lt/tr;gt
;lttr;gt
;lttd;gt
;lttable width=»595″ border=»0″ cellspacing=»2″ cellpadding=»4″;gt
;lttr;gt
;lttd align=»center»;gt
;lt?php
//вывод комментария
if (isset($comment)):
//перебираем весь массив комментариев
foreach($comment as $i=;gt$value)
{
if ($img == $i) //если найден комментарий для текущей страницы
echo «$comment[$i]»; /*выводим комментарий из массива, с индексом текущей страницы*/
}
endif;
?;gt
;lt/td;gt
;lt/tr;gt
;lt/table;gt
;lt/td;gt
;lt/tr;gt
;lttr;gt
;lttd;gt
;lttable width=»595″ border=»0″ cellspacing=»2″ cellpadding=»4″;gt
;lttr;gt
;lttd align=»center»;gt
;lt?php
if ($img == 0): //если выводится первая страница
echo «;lt;lt назад;lt/font;gt»; /*делаем «;lt;lt назад» обычным текстом, а не ссылкой*/
else: //иначе
$prev = $img-1; //узнаем номер предыдущей страницы
/*делаем ссылку на предыдущую страницу с текстом «;lt;lt назад»*/
echo «;lta href=»index.php?img=$prev»;gt;lt;lt назад;lt/a;gt «;
endif;
echo » | «; //разделитель для перехода на следующую страницу
if ($img ;lt $cnt): //если текущая страница не последняя
$next = $img+1; //узнаем индекс следующей страницы
//делаем ссылку «вперед ;gt;gt» для перехода на следующую страницу
echo «;lta href=»index.php?img=$next»;gtдалее ;gt;gt;lt/a;gt «;
elseif ($img == $cnt): //если текущая страница является последней
echo «далее ;gt;gt;lt/font;gt»; //выводим «вперед ;gt;gt» как обычный текст
endif;
?;gt
;lt/td;gt
;lt/tr;gt
;lt/table;gt
;lt/td;gt
;lt/tr;gt
;lt?php
endif;
?;gt
;lt/body;gt
;lt/html;gt
Все, галерея полностью готова, теперь давайте проверим ее работу. Скопируйте в каталог со сценарием index.php несколько рисунков и опишите их соответствующим образом в файле данных img.dat, по шаблону:
полное имя файла :: любой текст для описания рисунка
После этого посмотрите на вывод в браузере страницы index.php. Все должно работать на ура. На рис. 1 показан результат работы сценария.
Сергей ПАРИЖСКИЙ
Web-droid редактор
Не пропустите интересное!
Підписывайтесь на наши каналы и читайте анонсы хай-тек новостей, тестов и обзоров в удобном формате!


Обзор микрофона Ugreen CM769: студийный звук недорого



Расскажем про еще одну интересный микрофон для записи подкастов и видеоблогов. Ugreen CM769 – бюджетная модель, посмотрим, как она справляется с записью голоса и звуков.

Смартфон Google Pixel 9a представили ранее из-за утечек. Цена — $500, старт продаж — в апреле Google смартфон
Google решила не дожидаться официального анонса и представил новый Pixel 9a, несмотря на то, что смартфон поступит в продажу только в апреле.
Windows 11 получит экранную клавиатуру с набором текста при помощи контроллера Xbox Windows Xbox контроллер обновление
Обновленная клавиатура Windows 11 поддерживает ряд быстрых команд, знакомых владельцам Xbox.