WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Архив » Программирование на php на примере галереи, в 3-х вариантах

Программирование на php на примере галереи, в 3-х вариантах


Дата публикации: 17-03-2013

Предлагаю вашему вниманию пример программирования на языке php с использованием баз данных mysql (в одном из вариантов программы) на примере создания галереи фотографий, картинок и т.п. Картинки в предпросмотре должны быть определенной ширины (чтобы не расползалась страница).
Галерея имеет следующие свойства:

    предпросмотр;
    навигация "вперед-назад";
    навигация по номерам страниц галереи;
    наличие описаний к картинкам;
    администрирование описаний к картинкам;
    варианты 2 и 3 имеют возможность изменять порядок вывода картинок;
    вариант 3 сделан с использованием базы mysql
    варианты 1 и 3 легко преобразуемы в галерею с возможностью дополнения галереи посетителями;
    если вы обнаружили еще какие-то свойства галереи, буду рад выслушать ваше мнение по адресу totoeval@mtu-net.ru

Вариант 1
Программа ищет файлы картинок в указанном ей каталоге с маленькими картинками (предпросмотр). Затем она ищет описания для выводимых картинок в текстовом файле. Определяет кол-во картинок и создает навигацию по галерее. Определяет размеры картинок и выводит их с описаниями и с яваскриптом на каждой картинке, который открывает большой вариант картинки в новом окне с размерами на 40 пикселей больше размера картинки с возможностью скроллинга, если таковой окажется необходим для просмотра картинки полностью (при малом размере экрана).

Вот собственно и код варианта:

      
        <html>      
        <head>      
        <TITLE>Photo-galery</TITLE>      
        <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-1251">      
        <LINK REL=STYLESHEET TYPE="text/css" href="../../style.css">      
              
        </head>      
        <body leftmargin=0 topmargin=0 marginwidth="0" marginheight="0">      
              
        <table width=650 cellspacing=0 cellpadding=5 border=0 cols=2><tr><td>      
        <div align="center">      
        <br>      
        <p align="center" class="zag-main">Картинная галерея.</p>      
        <?      
        // Пишем переменные, которые зависят от Вас      
        //      
        $scrpic=10; // максимальное кол-во фоток на       
        странице$big='../pic/big_regats/'; // путь к большим картинкам      
        $small='../pic/small_regats/'; // путь к малым картинкам      
        $ini=$DOCUMENT_ROOT.'/avrora/pic/read/read_regats.ini'; // путь к файлу       
        с текстами к картинкам      
        //      
        //В данном случае, файл строится так: строка с названием картинки (без       
        расширения файла)      
        //затем строка с подписью к картинке      
        //затем название следующей картинки и так далее.      
        //      
        //Например:      
        //1      
        //Моя первая фотография      
        //rt      
        //моя фотография rt.jpg      
        //.... и так до последней картинки. Если подписи к картинке нет, то надо       
        оставлять пустую строку.      
        //      
        //      
        $kav="'"; // одинарные кавычки пригодятся нам потом в таком виде      
        // для отображения в браузере в яваскрипте. Там необходимо иметь оба вида       
        кавычек,      
        // а для php надо еще поставить выводимое выражение в кавычки.      
        $podp='увеличить'; // надпись под картинкой,      
        // побуждающая клиента нажать на картинку для увеличения      
        //      
        $style_zag2='zag2-main'; // стили текста на странице      
        $style_osn='osn-main'; // стили текста на странице      
        $style_link='link'; // стили текста на странице      
        //      
        //      
        //сама программа      
        $text=file($ini); // читаем файл с подписями к картинкам в массив $text      
        $dir=$small; // указываем путь к каталогу малых фотографий      
        $handle=opendir($dir); // читаем заголовок каталога      
        $si=0; // счетчик файлов в папке      
        while ($file = readdir($handle)) { // читаем файл, пока не закончатся      
        if ($file!="..") { // исключаем из списка файлов "." и ".." (корень и       
        верхний каталог).      
        $pic[$si]=$file; // присваиваем текущему элементу массива с именами файлов       
        имя текущего файла      
        $si++; // плюсуем к счетчику файлов в папке 1      
        }      
        } // следующий файл      
        $maxpic=count($pic)-1; // сколько файлов в папке с малыми картинками      
              
        if ($begin=="") { // если на страницу зашли впервые, то $begin присваеваем       
        1      
        $begin=1;      
        }      
        $end=$begin+$scrpic-1; // $end - номер последней картинки на странице      
        if ($end>$maxpic) { // если последний номер на странице больше кол-во       
        картинок в папке,      
        // то он равен последнему      
        $end=$maxpic;      
        }      
        $beginrew=$begin-$scrpic; // при переходе назад, начинаем показывать картинки       
        с номера,      
        //равному "первый номер текущей страницы минус кол-во картинок на странице"      
        $beginfw=$begin+$scrpic; // при переходе вперед, начинаем показывать картинки       
        с номера,      
        //равному "первый номер текущей страницы плюс кол-во картинок на странице"      
        $hrefrew='<a href='.$PHP_SELF.'?begin='.$beginrew.' class='.$style_zag2.'>назад</a>';      
        // создаем ссылку "назад"      
        $hreffw='<a href='.$PHP_SELF.'?begin='.$beginfw.' class='.$style_zag2.'>вперед</a>';      
        // создаем ссылку "вперед"      
        $navig=$hrefrew.' || '.$hreffw; // ставим между ссылками "назад-вперед"       
        символ "||"      
        if ($beginrew<=0) { // если мы на первой странице, то ссылка назад       
        не нужна      
        // $hrefrew='<a href='.$PHP_SELF.'?begin='.$beginrew.' class='.$style_zag2.'>назад</a>';      
        $navig=$hreffw;      
        }      
        if ($beginfw>$maxpic) { // если мы на последней странице, то ссылка       
        вперед не нужна      
        // $hreffw='<a href='.$PHP_SELF.'?begin='.$beginfw.' class='.$style_zag2.'>вперед</a>';      
        $navig=$hrefrew;      
        }      
        // вывод на экран номеров страниц галереи      
        $scrmax=ceil($maxpic/$scrpic); // вычисляем, сколько страниц с картинками      
        for ($scr=1; $scr<=$scrmax; $scr++) { // начиная с первого номера до       
        кол-ва страниц галереи      
        $beginsrc=($scr-1)*$scrpic+1; // вычисляем номер картинки,      
        // с которого будут выводиться картинки на странице      
        if ($beginsrc==$begin) { // если страница текущая,      
        // то ее номер выводим в виде простого текста, а не ссылки      
        echo '  <span class='.$style_zag2.'>'.$scr.'</span>  ';      
        }      
        else { // если страница не текущая, то выводим ссылку на нее и передаем       
        параметры:      
        // номер картинки, с которой начать выводить на этой странице      
        echo ' <a href='.$PHP_SELF.'?begin='.$beginsrc.' class='.$style_zag2.'> '.$scr.' </a> ';      
        }      
        }      
        echo '<p align=center class='.$style_zag2.'>'.$navig.'</p>';      
        // вывод на экран навигации "вперед-назад"      
              
        for ($i=$begin; $i<=$end; $i++) { // начиная с первой картинки на странице,      
        // перебираем картинки вплоть до последней на странице      
        for ($j=0; $j<sizeof($text); $j++) { // читаем файл ини и собираем       
        описания      
        $name_file=explode(".",$pic[$i]); //выделяем в названии файла его имя       
        (без расширения)      
        if (trim($text[$j])==$name_file[0]) { // ищем название картинки,      
        // предварительно обрезав пробелы вокруг названия картинки в файле      
        // (если текущее название картинки $pic[$i] совпадает с проверяемым $text[$j])      
        $descript=trim($text[$j+1]);      
        // если картинка найдена, то в $descript пишем описание к картинке      
        }      
        else { // если название картинки не совпадает с искомым, то плюем на него      
        }      
        }      
        $photo=$big.$pic[$i];       
        // присваиваем $photo имя малого файла+путь к папке с большими картинками      
        $size=getimagesize($photo); // читаем информацию о картинке      
        $width=$size[0]+40; // получаем ширину картинки и + 40 (свободное поле       
        вокруг картинки)      
        $height=$size[1]+40; // получаем высоту картинки и + 40 (свободное поле       
        вокруг картинки)      
        $sxp=$size[2]; // получаем тип (расширение файла картинки)      
        $smphoto=$small.$pic[$i];       
        // присваиваем $smphoto имя малого файла+путь к папке с малыми картинками      
        $smsize=getimagesize($smphoto); // читаем информацию о картинке      
        $smwidth=$smsize[0]; // получаем ширину картинки      
        $smheight=$smsize[1]; // получаем высоту картинки      
        $smexp=$smsize[2]; // получаем тип (расширение файла картинки)      
$winstat='toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width='.$width.',height='.$height;
        // статус открываемого окна с большой картинкой      
              
        // выводим таблицу галереи.      
        // если номер картинки четный, то картинка слева, а описание справа и       
        наоборот      
        // делаем это для неужасного внешнего вида галереи      
        // Вы можете разположить картинки как Вам заблагорассудится.      
        // итак:      
        ?><table width=420 cellspacing=0 cellpadding=5 border=0 cols=2><tr><?       
              
        // выводим одинаковую часть кода таблицы дл ячейки картинки      
        //Далее выводим картинки в ячейках таблиц с описаниями. Делаем все с "предпросмотром"      
        //"предпросмотр предпочтителен, потому что не надо сразу грузить большие       
        файлы,      
        //а клиент если захочет, сам загрузит то, что его заинтересовало в новых       
        окнах.      
        //      
        if ($i/2==ceil($i/2)) { // если номер картинки на странице четный      
        echo '<td width=210 rowspan=2>      
        <p align=right class='.$style_osn.'>'.$descript.'</p>      
        </td><td hight='.($smheight+2).'>      
        <table width=202 cellspacing=1 cellpadding=0 border=0 bgcolor="#000000"       
        border=0><tr><td>      
        <a href='.$photo.' target="'.$i.'" onclick="window.open('.$kav.$photo.$kav.',       
        '.$kav.$i.$kav.', '.$kav.$winstat.$kav.');">      
        <img src='.$smphoto.' width='.$smwidth.' height='.$smheight.' border=0       
        alt="увеличить">      
        </a>      
        </td></tr></table>      
        </td></tr>      
        <tr><td valign=top>      
        <center>      
        <a href='.$photo.' target="'.$i.'" onclick="window.open('.$kav.$photo.$kav.',       
        '.$kav.$i.$kav.', '.$kav.$winstat.$kav.');" CLASS='.$style_link.'>'.$podp.'      
        </a>      
        </center>      
        </td></tr></table>';      
        }      
        else { // если номер картинки нечетный      
        echo '<td align=left><table width=202 cellspacing=1 cellpadding=0       
        border=0 bgcolor="#000000"><tr>      
        <td hight='.($smheight+2).'>      
        <a href='.$photo.' target="'.$i.'" onclick="window.open('.$kav.$photo.$kav.',       
        '.$kav.$i.$kav.', '.$kav.$winstat.$kav.');">      
        <IMG SRC='.$smphoto.' width='.$smwidth.' height='.$smheight.' border=0       
        alt="увеличить">      
        </a>      
        </td></tr></table>      
        </td>      
        <td width=210 rowspan=2>      
        <p align=left class='.$style_osn.'>'.$descript.'</p>      
        </td></tr>      
        <tr><td valign=top>      
        <center>      
        <a href='.$photo.' target="'.$i.'" onclick="window.open('.$kav.$photo.$kav.',       
        '.$kav.$i.$kav.', '.$kav.$winstat.$kav.');" CLASS='.$style_link.'>'.$podp.'      
        </a>      
        </center>      
        </td></tr></table>';      
        }      
        }      
        // вывод на экран "вперед-назад"      
        echo '<p align=center class='.$style_zag2.'>'.$navig.'</p>';      
        // вывод на экран номеров страниц      
        echo '<div align=center>';      
        for ($scr=1; $scr<=$scrmax; $scr++) {      
        $beginsrc=($scr-1)*$scrpic+1;      
        if ($beginsrc==$begin) {      
        echo '  <span class='.$style_zag2.'>'.$scr.'</span>  ';      
        }      
        else {      
        echo ' <a href='.$PHP_SELF.'?begin='.$beginsrc.' class='.$style_zag2.'> '.$scr.' </a> ';      
        }      
        }      
              
        ?>      
              
        </div>      
        </td></tr></table>      
        </body>      
        </html>      
       


Программа администрирования текстов описаний:
Была применена в моей статье Импортирование информации с чужого сайта на свой сайт в свой дизайн. Я считаю этот способ самым проостым для начинающего программиста. Более сложный способ обновления я собираюсь сделать в будущих статьях.
Конечно, можно делать более серьезные интерфейсы, но в этом варианте, который конечно не рассчитан на ламера, можно быстро править сразу все позиции.
Вот собственно код:

      
        <html>      
        <head>      
        <title>admin weather</title>      
        </head>      
        <body>      
        <?php      
        $adr=$DOCUMENT_ROOT."/avrora/pic/read/read_regats.ini"; // адрес файла,       
        в котором и будут записываться названия файлов с описаниями      
        $password='pass'; // простенькая система авторизации      
        $eror='Password eror!';      
        $old=file($adr); // читаем то, что сейчас есть в файле      
        if ($submit) { // проверяем на нажатость кнопки      
        if ($pass==$password) {      
        $fp=fopen($adr,"w");      
        fwrite ($fp, $ini); // записываем в файл измененные данные      
        fclose($fp);      
        $old=file($adr);      
        }      
        else {      
        echo $eror;      
        }      
        }      
        ?>      
              
        <form method=post action="<?php echo $PHP_SELF?>"> // информация,       
        введенная в форму, обрабатывается этим же файлом      
        password:<input type=text name=pass><br>      
        inicialisation:<textarea name="ini" rows=15 cols=60>      
        <?      
        for ($i=0; $i<sizeof($old); $i++) {      
        echo $old[$i], ""; // выводим на экран текущий вариант файла      
        }      
        ?>      
        </textarea>      
        <br>      
        <input type=submit name="submit" value="Enter">      
        </form>      
              
        </body>      
        </html>      
       



В этом варианте, файл создаем так, как написано в комментарии к программе:
1
Моя первая фотография
rt
моя фотография rt.jpg


, где 1 и rt - имена файлов, а строки под ними соответственно описания к ним.


Вариант 2
Отличие этого варианта отпредыдущего в том, что программа читает файл инициализации галереи. В каждой строке такая конструкция (так надо заполнять файл для этого варианта!):
1.jpg|Моя первая фотография
rt.jpg|моя фотография rt.jpg
где символ "|" - это разделитель между описанием и именем файла картинки.

Как видно, в этом варианте надо писать в файле имя файла картинки с расширением. Если это вам это очень мешает, то можете переделать так, чтобы было в файле только имя, а расширение определялось бы автоматически, основываясь на первом примере.
Алгоритм такого варианта будет:
определить имя картинки, считать имена файлов в папке с файлами, обрезая у имен файлов расширения, находим нужный, сравнивая каждый раз с тем, что взяли из файла. Именно совпавший и будет искомым.

Далее программа, создав массив из имен и описаний картинок, определяет, на какой странице галереи клиент находится и выводит ему соответственно ту или иную страницу.
Сам движок галереи остается тем же, как вы наверное заметили.
Изменяются некоторые его части.
Вот сам код:

      
<html>      
<head>      
<TITLE>Photo-galery</TITLE>      
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-1251">      
<LINK REL=STYLESHEET TYPE="text/css" href="../../style.css">      
       
       
</head>      
       
<body leftmargin=0 topmargin=0  marginwidth="0" marginheight="0">      
<table width=650 cellspacing=0 cellpadding=5 border=0 cols=2><tr><td>      
<div align="center">      
       
<br>      
       
<p align="center" class="zag-main">Картинная галерея.</p>      
       
<?      
// Пишем переменные, которые зависят от Вас      
//      
$scrpic=10; // максимальное кол-во фоток на       
странице$big='../pic/big_regats/'; // путь к большим картинкам      
$small='../pic/small_regats/'; // путь к малым картинкам      
$ini=$DOCUMENT_ROOT.'/avrora/pic/read/read_regats1.ini'; // путь к файлу с текстами к картинкам      
//      
//В данном случае, файл строится так: строка с названием картинки (без расширения файла)      
//затем строка с подписью к картинке      
//затем название следующей картинки и так далее.      
//      
//Например:      
//1|Моя первая фотография      
//rt|моя фотография rt.jpg      
//.... и так до последней картинки. Если подписи к картинке нет, то надо оставлять пустую строку.      
//      
//      
$kav="'"; // одинарные кавычки пригодятся нам потом в таком виде      
// для отображения в браузере в яваскрипте. Там необходимо иметь оба вида кавычек,      
// а для php надо еще поставить выводимое выражение в кавычки.      
$podp='увеличить'; // надпись под картинкой,      
// побуждающая клиента нажать на картинку для увеличения      
//      
$style_zag2='zag2-main'; // стили текста на странице      
$style_osn='osn-main'; // стили текста на странице      
$style_link='link'; // стили текста на странице      
//      
//      
//сама программа      
       
$text=file($ini); // читаем файл с подписями к картинкам в массив $text      
       
for ($i=0; $si<sizeof($text); $i++) { // читаем файл ини и сохраняем имена картинок.      
      $si=$i+1;      
      $string=explode("|",$text[$i]);      
      $pic[$si]=$string[0]; // присваиваем текущему элементу массива с именами файлов имя текущего файла      
      $description[$si]=$string[1];      
}      
       
       
$maxpic=count($pic); // сколько файлов в папке с малыми картинками      
       
       
if ($begin=="") { // если на страницу зашли впервые, то $begin присваеваем 1      
            
$begin=1;      
}$end=$begin+$scrpic-1; // $end - номер последней картинки на странице      
if ($end>$maxpic) { // если последний номер на странице больше кол-во картинок в папке,      
// то он равен последнему      
      $end=$maxpic;      
}      
       
$beginrew=$begin-$scrpic; // при переходе назад, начинаем показывать картинки с номера,      
//равному "первый номер текущей страницы минус кол-во картинок на странице"      
$beginfw=$begin+$scrpic; // при переходе вперед, начинаем показывать картинки с номера,      
//равному "первый номер текущей страницы плюс кол-во картинок на странице"      
       
$hrefrew='<a href='.$PHP_SELF.'?begin='.$beginrew.' class='.$style_zag2.'>назад</a>';      
// создаем ссылку "назад"      
$hreffw='<a href='.$PHP_SELF.'?begin='.$beginfw.' class='.$style_zag2.'>вперед</a>';      
// создаем ссылку "вперед"      
$navig=$hrefrew.' || '.$hreffw; // ставим между ссылками "назад-вперед" символ "||"      
if ($beginrew<=0) { // если мы на первой странице, то ссылка назад не нужна      
       
//      $hrefrew='<a href='.$PHP_SELF.'?begin='.$beginrew.' class='.$style_zag2.'>назад</a>';      
       
      $navig=$hreffw;      
}      
if ($beginfw>$maxpic) { // если мы на последней странице, то ссылка вперед не нужна      
       
//      $hreffw='<a href='.$PHP_SELF.'?begin='.$beginfw.' class='.$style_zag2.'>вперед</a>';      
       
      $navig=$hrefrew;      
}      
       
// вывод на экран номеров страниц галереи      
       
$scrmax=ceil($maxpic/$scrpic); // вычисляем, сколько страниц с картинками      
       
for ($scr=1; $scr<=$scrmax; $scr++) { // начиная с первого номера до кол-ва страниц галереи      
      $beginsrc=($scr-1)*$scrpic+1; // вычисляем номер картинки,      
      // с которого будут выводиться картинки на странице      
      if ($beginsrc==$begin) { // если страница текущая,      
      // то ее номер выводим в виде простого текста, а не ссылки      
            echo '  <span class='.$style_zag2.'>'.$scr.'</span>  ';      
      }      
      else { // если страница не текущая, то выводим ссылку на нее и передаем параметры:      
      // номер картинки, с которой начать выводить на этой странице      
            echo ' <a href='.$PHP_SELF.'?begin='.$beginsrc.' class='.$style_zag2.'> '.$scr.' </a> ';      
      }      
}      
       
echo '<p align=center class='.$style_zag2.'>'.$navig.'</p>';      
// вывод на экран навигации "вперед-назад"      
       
       
for ($i=$begin; $i<=$end; $i++) { // начиная с первой картинки на странице,      
// перебираем картинки вплоть до последней на странице      
       
      $descript=$description[$i];      
       
      $photo=$big.$pic[$i];       
      // присваиваем $photo имя малого файла+путь к папке с большими картинками      
      $size=getimagesize($photo); // читаем информацию о картинке      
      $width=$size[0]+40; // получаем ширину картинки и + 40 (свободное поле вокруг картинки)      
      $height=$size[1]+40; // получаем высоту картинки и + 40 (свободное поле вокруг картинки)      
      $sxp=$size[2]; // получаем тип (расширение файла картинки)      
       
      $smphoto=$small.$pic[$i];       
      // присваиваем $smphoto имя малого файла+путь к папке с малыми картинками      
      $smsize=getimagesize($smphoto); // читаем информацию о картинке      
      $smwidth=$smsize[0]; // получаем ширину картинки      
      $smheight=$smsize[1]; // получаем высоту картинки      
      $smexp=$smsize[2]; // получаем тип (расширение файла картинки)      
$winstat='toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width='.$width.',height='.$height;
// статус открываемого окна с большой картинкой     
// выводим таблицу галереи.      
// если номер картинки четный, то картинка слева, а описание справа и наоборот      
// делаем это для неужасного внешнего вида галереи      
// Вы можете расположить картинки как Вам заблагорассудится.      
// итак:      
?><table width=420 cellspacing=0 cellpadding=5 border=0 cols=2><tr><?       
      // выводим одинаковую часть кода таблицы дл ячейки картинки      
       
      //Далее выводим картинки в ячейках таблиц с описаниями. Делаем все с "предпросмотром"      
      //"предпросмотр предпочтителен, потому что не надо сразу грузить большие файлы,      
      //а клиент если захочет, сам загрузит то, что его заинтересовало в новых окнах.      
      //      
      if ($i/2==ceil($i/2)) { // если номер картинки на странице четный      
            echo '<td width=210 rowspan=2><p align=right CLASS='.$style_osn.'>'.$descript.'</p      
></td><td hight='.($smheight+2).'>  
<table width=202 cellspacing=1 cellpadding=0 border=0 bgcolor="#000000" border=0><tr><td>  
<A HREF='.$photo.' target="'.$i.'" onclick="window.open('.$kav.$photo.$kav.', '.$kav.$i.$kav.', '.$kav.$winstat.$kav.');">      
<IMG SRC='.$smphoto.' WIDTH='.$smwidth.' HEIGHT='.$smheight.' BORDER=0 alt="увеличить"></A></td></tr></table      
></td></tr><tr><td valign=top><center>
<A HREF='.$photo.' target="'.$i.'" onclick="window.open('.$kav.$photo.$kav.', '.$kav.$i.$kav.', '.$kav.$winstat.$kav.');"
CLASS='.$style_link.'>
'.$podp.'</a></center></td></tr></table>';      
      }      
      else { // если номер картинки нечетный      
            echo '<td align=left><table width=202 cellspacing=1 cellpadding=0 border=0 bgcolor="#000000">   
<tr><td hight='.($smheight+2).'>  
<A HREF='.$photo.' target="'.$i.'" onclick="window.open('.$kav.$photo.$kav.', '.$kav.$i.$kav.', '.$kav.$winstat.$kav.');">   
<IMG SRC='.$smphoto.' WIDTH='.$smwidth.' HEIGHT='.$smheight.' BORDER=0 alt="увеличить">   
</A></td></tr></table>   
</td><td width=210 rowspan=2><p align=left CLASS='.$style_osn.'>'.$descript.'</p      
></td></tr><tr><td valign=top><center>
<A HREF='.$photo.' target="'.$i.'" onclick="window.open('.$kav.$photo.$kav.', '.$kav.$i.$kav.', '.$kav.$winstat.$kav.');"
CLASS='.$style_link.'>'.$podp.'</a></center></td></tr></table>';      
      }      
}      
       
// вывод на экран "вперед-назад"      
echo '<p align=center class='.$style_zag2.'>'.$navig.'</p>';      
       
// вывод на экран номеров страниц      
echo '<div align=center>';      
for ($scr=1; $scr<=$scrmax; $scr++) {      
      $beginsrc=($scr-1)*$scrpic+1;      
      if ($beginsrc==$begin) {      
            echo '  <span class='.$style_zag2.'>'.$scr.'</span>  ';      
      }      
      else {      
echo '<a href='.$PHP_SELF.'?begin='.$beginsrc.' class='.$style_zag2.'> '.$scr.' </a> '; 
      }      
}      
       
       
?>      
</div>      
</td></tr></table>      
       
</body>      
</html>

 

Программа администрирования та же, что и в варианте 1.

Вариант 3
В этом варианте используется база данных mysql вместо текстового файла для хранения описаний, имен картинок и порядка их следования.
Здесь тоже в базе хранятся именя файлов с расширениями (при варианте без расширений, будет тратиться время на пиоск картинки по описанному выше алгоритму, а при заливке картинок через вэбинтерфейс проще хранить имена файлов с расширениями).
Алгоритм работы программы такой же, что и в предыдущем примере. Однако, вместо считывания файла, считывается база галереи. Для ускорения можно было бы поместить операцию считывания в цикл вывода картинок на экран и не считывать все строки базы.
Для создания таблицы базы картинок используйте этот скрипт:

      
        <?
      
        //инициализация mysql:
      
        $mysql_login='my_login';
    
        $mysql_host='host_db';
      
        $mysql_pass='my_password';
      
        $mysql_db='name_db';
      
        //
      
       
      
        mysql_connect($mysql_host,$mysql_login,$mysql_pass);
      
        mysql_select_db($mysql_db);
      
        mysql_query("set CHARACTER SET cp1251_koi8") or die ("!--не могу записать");       
        // эта строка
      
        используется, если сайт в кодировке win, а база в кодировке кои-8.
      
        Если кодировки совпадают, строку надо закомментировать.
      
       
      
        $query="CREATE TABLE galery_regats (numer tinyint(4) NOT NULL, name text       
        NOT NULL, description text NOT NULL)";
      
        $res=mysql_query($query) or die ("!--не могу создать таблицу");
      
       
      
       
      
        header("location: admin.php"); // переход на страницу администрирования
      
       
      
        ?>
      

Программа администрирования:

      
        <html>      
        <head>      
        <title>Admin galery</title>      
        <link rel=stylesheet type="text/css" href="../../style.css">      
        </head>      
        <body bgcolor=#eeeeee>      
        <br>      
              
        <?      
        // логин/пароль      
        $log='total';      
        $pas='total';      
        //инициализация       
        mysql:      
        $mysql_login='my_login';      
        $mysql_host='host_db';      
        $mysql_pass='my_password';
        $mysql_db='name_db';      
        //      
        $style_zag2='zag2-main'; // стили текста на странице      
        $style_osn='osn-main'; // стили текста на       
        странице$style_link='link'; // стили текста на странице      
        $kon_str="\n"; // конец строки      
        $razdel="|"; // разделитель между именем картинки и описанием      
        ?>      
        <p align="center" class="<? echo $style_zag2; ?>">Картинная       
        галерея.</p>      
        <?      
        mysql_connect($mysql_host,$mysql_login,$mysql_pass);      
        mysql_select_db($mysql_db);      
        mysql_query("set CHARACTER SET cp1251_koi8") or die ("!--не могу записать");      
        switch ($prov) { // проверяем состояние переменной $prov      
        case "edit":      
        // если пишем новый вариант базы:      
        if ($login!=$log || $pass!=$pas) { echo "Введите правильно логин/пароль";       
        } // если пароль неверен      
        else {      
        // удаляем текущую базу картинок и создаем пустую таблицу      
        $query="DROP TABLE galery_regats"      
        $res=mysql_query($query) or die ("!--не могу удалить таблицу");      
        $query="CREATE TABLE galery_regats (numer tinyint(4) NOT NULL, name text       
        NOT NULL, description text NOT NULL)";      
        $res=mysql_query($query) or die ("!--не могу создать таблицу");      
        $pics=explode($kon_str,$block); // бьем наш список по символу переноса       
        строки      
        for ($i=0; $i<sizeof($pics); $i++) { // пишем в базу данные      
        $string=explode($razdel,$pics[$i]); // бьем строки по символу разделителя      
        $query="insert into galery_regats (number, name, description) values ('$i',       
        '$string[0]', '$string[1]')";      
        mysql_query($query) or die ("!--не могу записать"); // пишем в таблицу      
        }      
        }      
        break;      
        default:       
        // если мы зашли не по нажатию на ентер:      
        // читаем базу картинок и сохраняем в массивы      
        $zapros="select * from galery_regats order by     &nbs

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Март 2017 (1)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)
Ноябрь 2015 (1)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 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, 40, 41

Друзья сайта

Хотите продать свой сайт?
- Мы быстро и удобно для Вас сможем его купить:
  • Заявка на продажу сайта
  • Раcсматриваем цены на каждый сайт в индивидуальном порядке.

    Случайная цитата

    Thomas C. Gale:

    "В хорошем дизайне добавление вещи стоит дешевле, чем сама эта вещь."

    Опрос

    Ваша ОС?

    Windows XP
    Windows 7
    др. версия Windows
    Linux
    др. ОС