Вариант 3
В этом варианте используется база данных mysql вместо текстового файла для хранения описаний, имен картинок и порядка их следования.
Здесь тоже в базе хранятся именя файлов с расширениями (при варианте без расширений, будет тратиться время на пиоск картинки по описанному выше алгоритму, а при заливке картинок через вэбинтерфейс проще хранить имена файлов с расширениями).
Алгоритм работы программы такой же, что и в предыдущем примере. Однако, вместо считывания файла, считывается база галереи. Для ускорения можно было бы поместить операцию считывания в цикл вывода картинок на экран и не считывать все строки базы.
Для создания таблицы базы картинок используйте этот скрипт:
<? //инициализация mysql: $mysql_login='login'; $mysql_host='host'; $mysql_pass='password'; $mysql_db='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='login'; $mysql_host='host'; $mysql_pass='password'; $mysql_db='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 numer";$res=mysql_query($zapros); $kol=mysql_num_rows($res); if ($kol==0) { echo "<span class=$style_osn>Нет картинок в галерее.</span>"; } for ($i=0; $i<$kol; $i++) { // читаем базу и сохраняем имена картинок. $pic[$i]=mysql_result($res,$i,"name"); // присваиваем текущему элементу массива $description[$i]=mysql_result($res,$i,"description"); } break; } } ?> <form method=post action="<? echo $PHP_SELF; ?>"> <textarea name="block" rows="40" cols="40"> <? // выводим текущее состояние базы картинок for ($i=0; $i<sizeof($pic); $i++) { echo $pic[$i].$razdel.$description[$i].$kon_str; } ?> </textarea> <input type="text" name="login" size="10"> <input type="text" name="pass" size="10"> <input type="hidden" name="prov" value="edit"><input type="submit" name="enter" value="Enter"> </form> </body> </html>
Форма заполняется как и во втором варианте.
А для получения 3-го варианта в коде программы 2-го варианта строки от строки //сама программа до строки $maxpic=count($pic); // сколько файлов в папке с малыми картинками
которые являются блоком считывания файла в массивы, заменяются на блок:
mysql_connect($mysql_host,$mysql_login,$mysql_pass); // соединение с базой (коннект) mysql_select_db($mysql_db); // выбор базы mysql_query("set CHARACTER SET cp1251_koi8") or die ("-------------не могу записать"); // Если кодировки базы и сайта совпадают - закомментировать эту строку
$zapros="select * from galery_regats order by numer"; $res=mysql_query($zapros); $kol=mysql_num_rows($res); if ($kol==0) { echo "Нет картинок в галерее."; } for ($i=0; $i<$kol; $i++) { // читаем файл ини и сохраняем имена картинок. $si=$i+1; $pic[$si]=mysql_result($res,$i,"name"); // присваиваем текущему элементу массива с именами файлов имя текущего файла $description[$si]=mysql_result($res,$i,"description"); }
Результат работы блока точно такой же, что и во втором варианте - массивы $pic и $description, где храним имена файлов картинок и описания к ним. Но работает такая галерея быстрее. Однако, каждый раз, когда хотите залить новую картинку, надо администрить галерею, даже если не нужно описание. А в первом варианте стоит только лишь закинуть в папки файлы картинок.
Таким образом, получаем 3 рабочих варианта программы галереи.
Тотоев Александр (www.czar.ru) 1 2 3
8 8 8
| |