Ваш первый Сайт С использованием РНР-скриптов
ПРОГРАММЫ ДЛЯ ВЫВОДА МИНИ-КОПИЙ ГРАФИЧЕСКИХ ФАЙЛОВ НА СТРАНИЦУ
Теперь создадим страницу для вывода мини-копий закачанных фотографий с надписями. При клике мышью по этой мини-копии в отдельном окне откроется полная фотография.
Программа для создания мини-копии картинки minkartinki.php уже нами составлена (листинг 8.2). Нам еще понадобится программа для чтения файлов с табличными данными. Эту программу мы тоже уже составили (листинг 7.1 файла func.php). Файл func.php, если вы помните, находится у нас в папке для гостевой книги gostevaja. Скопируйте этот файл в папку risynki, с которой мы и работаем в данной главе.
В РНР-редакторе создайте новый файл и сохраните его в папке risynki Под названием kartinkiObych.php. Наберите код (листинг 8.4).
Листинг 8.4 (файл KartinkiObych. php) <html> <head> <title>OoTo</title>
<link rel="stylesheet" type="text/css" href="stil. css"> </head>
<body bgcolor="silver">
<center><I id=lolo>MoH Фотографии</1Х/Сеп1ЕгхЬг>
Строганов А. С. Ваш первый сайт с использованием РНР-скриптов <?Php
Echo "<table align=CENTER border=2xtr>"; $z=0;
$kart=opendir("./foto"); $foto=" foto. txt"; include "minkartinki. php"; include "func. php"; $mass=read($foto);
While (($file=readdir($kart)) !=false) {
If($file !="." && Sfile !=".." && Sfile !="Thumbs. db")
{
If($mass($z] (0]=$file) $zap=$mass[$zj [ 1 ;
If(!file_exists("./fotomin/$file")) {
Resizeimg("foto/$file", "fotomin/$file", 130, 100);
}
$size_r=getimagesize("foto/$file");
Print r ("<td align=,center*><a href='foto/$file' target='_blank, ximg src='fotomin/$file' border=0 alt='$file'x/axbrxl id=lolo5>$file<br>$size_r[01 x $size_r [ 1 ]<br>$zap</I></td>"); $zap=""; $z++;
If (($z/4) = is_integer($z/4)) echo "</tr> <tr> "; }
}
Closedir($kart);
?>
</body> </html>
Код для вас уже должен быть несложным, но мы его все равно разберем, начиная с тега <?php:
<?php - начало РНР-кода;
Echo "<table align=CENTER border=2><tr>"; - создаем таблицу, в ячейках которой и будут выводиться ваши фотографии. Тег <tr>, если помните, создает новую строку в таблице;
$z=0; - вводим переменную $z, которая потом будет счетчиком числа фотографий в папке foto;
$kart=opendir("Jfoto"); - функция opendir открывает директорию, указанную в скобках в качестве аргумента. У нас это директория foto, где хранятся загруженные нами фотографии. Открытой директории присваивается дескриптор $kart, который и используется в дальнейшем;
$foto="foto.txt"; - переменной $foto присваиваем имя текстового файла, где будут храниться надписи к фотографиям;
Include "minkartinki.php"; - вставляем в этот код другой код из файла minkar- tinki.php. Там у нас функция resizeimg для создания мини-копий;
Include "func.php"; - вставляем код из страницы func.php. Там у нас функция Read для чтения табличных данных из файла;
$mass=read($foto); - при помощи созданной нами функции read считываем данные из текстового файла foto.txt. Функция возвратит двумерный массив $mass из строк и ячеек, из которых эти строки состоят;
While (($fde=readdir($kart)) !==false) - цикл с условием, который перебирает все файлы (фотографии) из директории foto (дескриптор $kart). Этот цикл выполнится столько раз, сколько файлов в директории, присваивая переменной $fde очередное название файла с фотографией. Как только условие цикла ($file=readdir($kart)) false станет истинным, т. е. все картинки будут перебраны (переменной $fde ничего уже не будет присвоено, и она примет значение false), цикл прекратится;
If - начало цикла;
If($fde /="." && $file !=".." && $fde !="Thumbs.db") - среди выданных функцией readdir имен файлов будут и ссылки на текущий и родительский (т. е. включающий в себя текущий) каталог, обозначаемые соответственно одной и двумя точками (так уж работает web-cepeep). Поскольку нас будут интересовать только файлы каталога, то данные ссылки из списка файлов следует исключить, добавив проверку состава имени файла. Также следует исключить файл Thumbs.db, который может создаться на сервере автоматически. Итак, если выбранный функцией readdir файл ($fde) не является текущим или родительским каталогом и это не файл Thumbs.db, то выполнится код между фигурными скобками под номером 2; 2{
If($mass[$z][0]==$fde) $zap=$mass[$z][1]; - проверяется условие. Если помните, данные в текстовом файле foto.txt представлены в виде таблицы с двумя столбцами. В первом столбце - имя графического файла с фотографией, во втором - надпись под этой фотографией. Второй индекс в двумерном массиве $mass указывает на номер столбца (у нас их два - с индексами соответственно 0 и 1). Нулевой индекс указывает на первый столбец с именами файлов. Первый индекс массива $mass[$z] указывает на строку, нумерация которой тоже начинается с нуля. При каждом выполнении цикла проверяется каждая строка (переменная Sz каждый раз увеличивается на единицу). Смысл проверки условия следующий: если название очередного файла Sfile, совпадает с названием файла из первого столбца проверяемой строки таблицы, то переменной $zap присваивается содержимое второго столбца этой же проверяемой строки, т. е. надпись под фотографией для фото с именем Sfile;
If (!file_exists("./fotomin/$flle")) - снова проверяется условие, существует ли уже мини-копия фотографии с именем Sfile. Мини-копии у нас будут храниться в заранее созданной папке fotomin. Если мини-копии еще нет, то выполнится команда между фигурными скобками под номером 3;
Resizeimg("foto/$file", "fotomin/Sfile", 130, 100); - при помощи созданной нами функции resizeimg (эта функция в файле minkartinki.php, а файл мы уже вставили в этот код при помощи оператора include) создаем мини-копию из фотографии с именем Sfile, размером 130 х 100, и сохраняем ее в папке fotomin под таким же именем;
V
Ssize_r=getimagesize("foto/Sfile"); - функция getimagesize создает массив Ssize r с данными о файле (фотографии) Sfile в папке foto (см. разд. 8.1-8.3). В элементе массива Ssize_r[0] будет содержаться ширина полной фотографии в пикселах, а в элементе $size_r[l] - высота полной фотографии;
Print Г ("<td align='center'><a href=foto/$file' target='_blank'><img src-fotomin/Sfile' border=0 alt='$file'X/a><br><I id=lolo5>$file<br> Ssize rfO] x Ssize rfl] <br>$zap</I></td>"); - в этой длинной строке при помощи оператора print r выводим мини-копию фотографии в браузер. Копия будет выводится в ячейку (тег <td>) таблицы, созданной в самом начале этого кода. Мини-копия фотографии в папке fotomin является еще и графической ссылкой на полную фотографию в папке foto (тег <а>). Далее выводятся курсивом название файла Sfile, его ширина и длина и надпись под фотографией (она у нас в переменной Szap). Идентификатор 1о1о5 указывает на тип и размер шрифта для вывода названия файла, его размера и надписи под фото. Этот идентификатор задан у меня в таблице стилей stil.css, а сама таблица стилей была задана в начале этого кода в строке <link rel="stylesheet" type = "text/ess" href="stil.css">. Кстати, файл стилей stil.css должен обязательно быть в папке risynki. Как создавать файл стилей, рассказано в гл. 4;
$zap=""; - очищаем содержимое переменной Szap. При следующем выполнении цикла while этой переменной будет присвоена следующая надпись для следующей фотографии;
Sz++; - при каждом выполнении цикла будем увеличивать счетчик файлов Sz На единицу;
If (($z/4) == is_integer($z/4)) echo "</tr> <tr> "; - как только число загруженных фотографий станет кратно четырем, завершаем строку таблицы с фотографиями и начинаем новую. Например, пятая фотография будет выведена уже во втором ряду. Если вы хотите, чтобы в одном ряду выводилось, например, 5 фотографий, измените в этой строке число 3 на 5;
2} - окончание блока команд для условия, выполняющегося, когда выбранный функцией readdir файл не является текущим или родительским каталогом и это не файл Thumbs.db;
1} - окончание блока команд для цикла while, который перебирает все файлы (фотографии) из директории foto;
Closedir($kart); - закрываем директорию foto с дескриптором $kart; ?> - конец РНР-кода.
Итак, программа разобрана. А теперь при помощи формы для загрузки файлов (программа zagryzkaObych.php листинга 8.3, рис. 8.3) загрузите в папку foto семь любых фотографий, предварительно переименовав их на img001.jpg, img002.jpg и т. д. У меня, например, это 7 космических фото. Надписи к ним (в текстовом поле формы в программе zagiyzkaObych.php) Я написал просто: первое фото, второе фото и т. д. Теперь запустите последнюю разобранную программу kartinkiObych.php. Результат работы данной программы на рис. 8.4.
Рис. 8.4 |
Как видите, мини-копии фотографий выводятся по 4 штуки в ряд. Кликните мышью по какой-нибудь мини-копии - в отдельном окне откроется полная фотография.
Теперь допустим, что вам надо удалить какую-либо фотографию. Зайдите в папку foto и удалите оттуда, например, фото с названием img005.jpg. Перезапустите заново программу kartinkiObych.php. Вы увидите, что пятая картинка img005.jpg будет удалена, но начиная с картинки img006.jpg изчезнут надписи внизу (изчезнут надписи «шестое фото» и «седьмое фото»). А произошло это потому, что мы не удалили в текстовом файле foto.txt строку, принадлежащую картинке с названием img005.jpg. Если вы внимательно разобрали программу kartinkiObych.php листинга 8.4, то поймете, что надпись под какую-либо картинку будет выводиться в браузер, если она действительно принадлежит именно этой картинке. Мы удалили картинку, но программа все равно будет искать название файла с этой картинкой в папке foto и в текстовом файле foto.txt строго по порядку. Картинок у нас стало на одну меньше, но число записей в файле foto.txt не изменилось. Начиная с картинки Img006.jpg возникнет несоответствие картинок и надписей к ним, поэтому они (надписи) и перестанут выводиться в браузер. Под картинкой будет только выведено название файла и размеры полной картинки. Откройте теперь текстовый файл foto.txt и полностью удалите там строку, начинающуюся с названия удаленного файла img005.jpg. У нас это пятая по счету строка. Удалите так, чтобы между строками 4 (Img004.jpg) и 6 (img006.Jpg) не было бы даже пустой строки. Сохраните изменения в файле и вновь перезапустите программу kartinkiObych.php. Теперь все в порядке, каждая надпись соответствует своей картинке. Если же вы потом захотите вновь разместить удаленное фото на странице kartinkiObych.php, загрузив его опять при помощи формы (программы zagryzkaObych.php), то вам придется сначала изменить номерное название фото с img005.jpg на название с более большим номером (следующим после номера последней закачанной картинки). В нашем случае (см. рис. 8.4) название удаленного файла img005.jpg, прежде чем его вновь загрузить, нужно будет заменить, например на img008.jpg. Делается это, чтобы не нарушать цифровой порядок закачанных фотографий (чтобы не спутались файлы с фотографиями и надписи к ним).
Вы, конечно, можете задать вопрос, а почему мы вообще делаем надписи, дополнительно создаем для их хранения текстовый файл? Почему бы просто не назвать свои файлы по-русски, например, не img001.jpg. а мое первое фо - mo.jpgl Увы, так делать нельзя. Как я уже отметил выше, на многих серверах (почти на всех) интерпретатор php не распознает файлы с русскими названиями. Поэтому надписи на русском языке мы сохраняем отдельно в текстовом файле.
Итак, мы составили нашу web-страничку для вывода фотографий. Теперь давайте создадим еще одну страничку. Допустим, вы хотите вывести много картинок - 1000 и более. Надписи к ним выводить, допустим, не нужно. Названия файлов переименовывать не будем, если, конечно, они не на русском языке. Закачивать картинки на сервер при помощи нашей формы (программа ZagryzkaObych.php) мы не будем (если картинок очень много, то это будет утомительно), а просто закачаем их в отдельную папку вручную. На первой странице будет выводиться только 12 картинок (точнее, их мини-копий), остальные (тоже по 12) будут выводиться на последующих страницах. Мини - копии картинок тоже будут создаваться программно. На всех страницах, естественно, будут ссылки и к другим страницам. На всех страницах будет находиться форма для загрузки графических файлов, чтобы любой посетитель вашей web-странички с картинками мог добавить свою картинку. Программу для загрузки файлов посетителями мы создадим чуть позже. Она немного будет отличаться от ранне созданной программы zagiyzkaObych.php. Там уже не будет никакой формы (она будет уже на страницах с картинками), и мы введем ограничение, чтобы объем закачиваемой посетителем картинки не превышал бы 3Мб.
Итак, если на каждой странице у нас будет по 12 картинок, а всего картинок будет, предположим, 1000, то число страниц с картинками будет 84. Составлять каждую страницу мы не будем, да и зачем? Мы создадим одну - единственную страницу для вывода картинок. Она будет называться kar - Tinki.php. Введем некую переменную $j и в зависимости от ее значения, на страницу будет выводиться тот или иной блок из 12 картинок. Например, при $j=l выведутся картинки с 1 по 12, при $j=2 выведутся картинки с 13 по 24 и т. д. Значение переменной $j можно указать после названия страницы с картинками. Например, если мы хотим, чтобы переменная $j была равна 2, нужно записать kartinki.php?] =2 (без значка $). Такой способ передачи на страницу переменных был рассмотрен в разд. 5.1.
Итак, в папке risynki вы должны были создать две подпапки: подпапку Kart, куда мы будем загружать полные картинки, и подпапку kartmin, где будут храниться созданные программно мини-копии картинок. В папку kart я, к примеру, скопировал 27 космических картинок. В РНР-редакторе создайте новый файл. Сохраните его в папке risynki под названием kartinki.php. Наберите код:
Листинг 8.5 (файл Kartinki. php) <Html> <Head>
<*Ше>Космические рисунки</Ш1е>
<meta http-equiv=,,conteiit-typeM content="text/html; charset=vindows-1251"> <link rel="stylesheet" tvpe="text/ess" href="stil. css"> </head>
<body bgcolor="silver">
<center><! id=lolo3>KocMH4ecKHe pncyHKH</lx/center><br>
<?php
$z=0;
If (!$_GET['j']) {
$j=i; }
Else {
$j=$_GET['j'l;
}
Echo "<table align=CENTER border=2 bgcolor=black><tr>";
Include "minkartinki. php";
$kart=opendir("./kart");
While (($file=readdir($kart)) !==false) {
If($file !="." && $file!=".." && $file!="Thumbs. db")
{
$z++;
If (!file_exists("./kartmin/$file")) {
Resizeimg("kart/$file", "kartmin/$file", 100, 70); }
$size_r=getimagesize("kart/$file");
If (($z>12*$j-12) && ($z<=12*$j)) {
Print_r ("<td align=center id=lolo2><a href="kart/$file" target=_blankximg src="kartmin/$file" border=0 alt="$file"x/axbrxl id=lolo6>$file<br>$size_r[3]</Ix/td>");
If (($z/4) = is_integer($z/4)) echo "</tr>"; }
}
}
EchoM</tdx/trx/table>"; echo "<centerxp>";
For($i=l; $i<=$z/12+l; $i++) {
$k=(12*$i-ll)."...".($i*12);
If($i=$j) {
Echo "<b id=lolo4>$k</b>M; }
Else {
Echo "<а href-kartinki. php? j=$i'><b id=lolo4>$k</bx/a>";
}
}
Echo "</px/center>M; ?>
<brxbr>
<div>Moжeтe закачать на сайт свою картинку!</div>
<form enctype^multipart/form-data' action=zagryzka. php method=POST>
<input type=FILE narae=zakxbr><br>
<input type=SUBM! T name=otpr Уа1ие='Отправить'>
</form>
</body>
</html>
Пока не запускайте эту программу, поскольку она еще работать не будет. Давайте разберем строчки кода, начиная с тега <?php: < ?php
$z=0; - вводим счетчик картинок. В переменной $z будет храниться порядковый номер картинки;
If (!$_GET['j']) - при загрузке данной страницы мы должны сначала определиться со значением переменной $j. Ведь от нее зависит, какие картинки будут выводиться. Смысл условия следующий: если переменная $j не получена (или мы ее не указали), то мы присваиваем ей значение единица, т. е. делаем
По умолчанию $j=l; {
$j=l; }
Else - иначе, если мы задали значение j в строке браузера, например, kar- tinki.php?j=2, то присваиваем переменной $j указанное значение (это значение будет храниться в элементе суперглобального массива $_GET['j'J); {
$j=$_GET['j']; }
Echo "<table align=CENTER border=2 bgcolor=black><tr>"; - выводим начало таблицы, в ячейках которой и будут вставлены мини-копии картинок. Толщина линий таблицы равна 2 пиксела (Border=2), фоновый цвет таблицы задан черный (bgcolor=black), хотя можете задать и свой. Открываем первую строку таблицы, при помощи тега <tr>. Все, пока строительство таблицы прерываем;
Include "minkartinki.php"; - вставляем код из файла minkartinki.php. В том коде есть написанная нами функция resizeimg для создания мини-копий картинок;
$kart=opendir("./kart"); - открываем директрию с полными картинками;
While (($fde=readdir($kart)) !==false) - цикл с условием, который будет выполняться до тех пор, пока функция readdir не переберет все файлы в директории kart. Этот цикл выполнится столько раз, сколько файлов в директории, присваивая переменной $file очередное название файла с картинкой;
1{— начало цикла;
f(Sfile •= "•" && Sfile /=".." && Sfile !="Thumbs.db") - если выбранный функцией readdir файл {Sfile) не является текущим или родительским каталогом и это не файл Thumbs.db, то выполнится код между фигурными скобками под номером 2; 21
$z+ +; - при каждом выполнении цикла будем увеличивать счетчик файлов $z На единицу. Это и будет как бы порядковый номер картинки, выбранный функцией readdir;
If (!file_exists("./kartmin/Sfile")) - если мини-копии выбранной функцией readdir картинки еще не существует в папке kartmin, то выполнится команда между фигурными скобками под номером 3 для создания данной мини-копии; 3(
Resizeimg("kart/$file", "kartmin/Sfile", 100, 70); - при помощи созданной нами функции resizeimg (эта функция в файле minkartinki.php, а файл мы уже вставили в этот код при помощи оператора include) создаем мини-копию из картинки с именем Sfile, размером 100X70, и сохраняем ее в папке kartmin под таким же именем;
3}
Ssize_r=getimagesize("kart/Sfile"); - функция getimagesize создает массив Ssize_r с данными о файле (картинке) Sfile в папке kart (см. разд. 8.1-8.3). В элементе массива Ssize_r[0] будет содержаться ширина полной картинки в пикселах, а в элементе Ssize_r[l] - высота полной картинки. Здесь же мы воспользуемся другим элементом массива - Ssize_r[3], в котором содержится строка с указанием ширины и высоты изображения;
If (($z> 12*$j-12) && (Sz< = 12*$j)) - условие, указывающее на интервал номеров выводимых картинок на страницу. Например, при $j=l условие будет истинно, если номера картинок ($z) будут соответствовать интервалу от 1 до 12;
Print_Г ("<tdalign=center id=lolo2><a href="kart/$fde" target=_blank><img src="kartmin/$fde" border=0 alt="$fde"></a><br>
<1 id=lolo6> $fde<br>$size_r[3] </I></td> "); - если условие if истинно, то 12 мини-копий картинок при помощи функции printjr будут выводиться в окно браузера на страницу. Подобная строка уже разобрана в прошлом листинге;
If (($z/4) == is_integer($z/4)) echo "</tr>"; - как только число загруженных картинок на странице станет кратно четырем, завершаем строку таблицы с картинками и начинаем новую. Например, пятая картинка-будет выведена уже во втором ряду;
4} - окончание цикла вывода картинок на страницу;
2} - окончание действия условия if проверяющего, не является ли выбранный функцией readdir файл ($fde) текущим или родительским каталогом или файлом Thumbs.db
1} - окончание цикла while перебора всех файлов в директории kart;
Echo"</td></tr></table>"; - заканчиваем (закрываем) таблицу с картинками на странице;
Echo "<center><p>"; - после таблицы с 12 картинками мы должны разместить ссылки на другие таблицы с другими 12 картинками. Ссылки выводим в центре, в отдельном блоке <р>;
For($i=l; $i<=$z/12+l; $i++) - при помощи цикла for выводим ссылки на остальные страницы с картинками, причем, эти ссылки будут в виде интервала чисел - порядковых номеров картинок. Страниц с картинками у нас будет много, но все они как бы будут объединены в одну. Будет меняться только параметр $j, и в зависимости от этого параметра на страницу будет выводиться та или иная порция из 12 картинок. К этому моменту в переменной $z У нас будет храниться общее число всех картинок в папке kart. Число $z/12+l Означает, сколько всего должно быть страниц с картинками. Отсюда счетчик
$i означает у нас как бы номер страницы с картинками; *{
$k=(l2*$i-lГ). "...".($i*12); - формируем интервалы чисел, означающие номера картинок на странице. Например, при $i=l выведется интервал /.../2, а при $i=2 выведется интервал 13...24 и т. д.;
If ($i==$j) - проверяется условие, которое я сейчас попытаюсь объяснить. Итак, на странице, например kartinki.php?j=I, будут ссылки на другие таблицы с картинками (на страницы с другим параметром $j). Нам нужно сделать так, чтобы не срабатывала ссылка на ту страницу, на которой находится. посетитель. Например, если посетитель находится на второй странице (в этом случае $i=$j=2), то зачем ему ссылка на вторую страницу? Выведется только
Числовой интервал картинок (выполнится команда между фигурными скобками под номером 6). Параметр id=lolo4 задает стиль шрифта из таблицы стилей stil.css; Б{
Echo "<b id=lolo4>$k</b> "; 6} Else
7{
Echo "<a href='kartinki.php?j=$i'><b id=lolo4>$k</b></a>"; - выводим ссылки на страницы с другими параметрами $j, на которых посетитель еще не находится;
7}
5} - окончание цикла вывода ссылок;
Echo "</р> </center> "; - закрываем блок ссылок;
?> - конец РНР-кода;
<Ъг><Ъг>
<div>Moжeme закачать на сайт свою картинку!</div>
<form enctype='multipart/form-data' action=zagryzka.php method=POST> - делаем форму для закачки картинок на страницу посетителями сайта. После нажатия кнопки «Отправить» запустится сценарий загрузки графического файла на сервер zagryzka.php. Его мы создадим в следующем листинге;
<input type=FILE name=zak><br><br> - создаем поле с именем name=zak Для ввода загружаемого на сервер файла;
<input type=SUBMT name=otpr value='Omnpaeumb'> - кнопка для отправки данных;
</form> - закрываем форму.
Теперь напишем код для загрузки файлов на сервер zagryzka.php. Этот код идентичен коду сценария zagryzkaObych.php (листинг 8.3) с той лишь разницей, что в коде zagryzka.php не строится форма (она уже есть на странице kartinki.php), мини-картинки создаются другого размера и вводится ограничение на объем закачиваемого файла. В РНР-редакторе создайте новый файл и сохраните его в папке risynki под названием zagryzka.php. Наберите код:
Листинг 8.6 (файл zagryzka. php) <?php
If ($_POST[,otpr, J=true)
{
$zak=$_POST['zak, l; $file=$_FILES['zak'] ['name'];
$size=$_FI LE S i 'zak' ] |' size' ];
If($size> 1024*1024*2) {
Echo "Размер файла не должен превышать 2 МБ! Повторите попытку.<br>";
Exit(); }
$ext=array(".jpg",".gifypng",".JPG",".GIF",".PNG");
If(in_array(strrchr($file, "."), $ext)) {
If(copy($_FILES["zak"]["tmp_name"], "kart/".Sfile)) {
Echo "Файл ".$file." объемом: ".Ssize." байт успешно закачан!<Ьг>";
Echo "<a href=# onClick-history. backO'xbutton>BepHyTbCH</buttonx/a>";
}
Else {
Echo "Ошибка при закачке файла! Повторите попытку.<br>";
ExitO; }
}
Else {
Echo "Расширение закачиваемых файлов должно быть jpg, png или gif! Повторите попытку.<Ьг>";
Exit();
}
} ?>
Сохраните код. Этот код разбирать не буду, поскольку похожий код разобран выше (листинг 8.3). Объясню лишь пару строк:
If($size > 1024*1024*2') - условие, вводящее ограничение на объем закачиваемого файла (до 2 Мб). Если посетители начнут закачивать файлы, например, в 20 Мб, то они быстро заполнят все дисковое пространство, выделенное вам на сервере;
Echo "<а href=# onClick= 'history.backQ '><Ьи№п>Вернуться</ЬиПоп></а> "; - После закачки файла нам надо вернуться со страницы zagryzka.php на первую страницу с картинами kcirtinki.php, т. е. назад. Для этого и существует ссылка <а href=# onClick= 'history.backQ '>, которая возвращает посетителя на прошлую страницу. Ссылка сделана в виде кнопки «Вернуться».
Запустите теперь код страницы с мини-картинками kartinki.php (листинг 8.5). У меня, например, в папке kart уже имеется 48 космических картинок и результат работы данной программы изображен на рис. 8.5.
Рис. 8.5 |
При нажатии кнопкой мыши на любую мини-копию в отдельном окне должна появиться полная картинка. Теперь щелкните мышью на числовом интервале 13...24. Вы должны попасть на эту же страницу с мини-картинками kartinki.php (рис. 8.6), но с параметром у=2. Посмотрите вверху на строку браузера. Вы увидите, что после названия страницы стоит параметр у: Kartinki.php ?j=2.
Все мини копии-картинок созданы программно и вы должны их увидеть в подпапке kartmin, которая, в свою очередь, была раньше создана вами в папке risynki.
Вернемся теперь к странице kartinki.php (рис. 8.5). Выберите при помощи кнопки «Обзор» какой-нибудь графический файл на вашем компьютере (файл должен быть с расширением jpg, gif или png) и нажмите кнопку «Отправить». В случае успешной закачки файла, вы, попав на страницу zagryzka.php, увидите в браузере надпись, примерно как на рис. 8.7.
Нажав на кнопку «Вернуться», вы снова вернетесь на страницу kartinki.php (по умолчанию мы сделали параметр j=l). Обновите страницу. Вы увидите вашу закачанную картинку (ее мини-копию) на какой-либо из страниц (она, например, может оказаться последней).
Глава 8. Размещение на сайте фотографий, картинок
Рис. 8.6 |
Рис. 8.7 |
К&тмщстш ри^уит-' - -4 ' v';;* й/; 0
Теперь вы можете создавать на сайте свой фотоальбом или картинную галерею. Вам только остается загружать фотографии или картинки в отдельно созданную папку. Все остальное php сделает за вас! Что касается оформления и дизайна ваших страниц, то при помощи html-тегов и таблицы стилей вы это сможете сделать самостоятельно на свой вкус.