![]() |
Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Проектирование БД, построение динамически генерируемых страниц сайта на основе информации, содержащейся в БД
База данных для сайта Автосалон Лексус г. Павлодар будет состоять из двух таблиц. Первая из них будет хранить всю информацию о страницах сайта, вторая – о пользователях, которым разрешен доступ в администраторскую часть[1]. Создавать таблицы будем при помощи панели PHPMyAdmin 2.6.1. Для этого: 1) Вводим в адресной строке браузера следующий адрес: http: //localhost/Tools/phpMyAdmin/; 2) Создаем новую базу данных с названием Interteach (Рис 3.3)
Рис. 3.3 Создание новой базы данных
3) Должно появится сообщение «БД interteach была создана». Далее, на вкладке SQL (Рис 3.4):
Рис. 3.4 Выполнение запроса создания таблиц
и делаем следующий запрос (листинг 8):
Листинг 8. SQL запрос для создания таблиц CREATE TABLE `settings` ( `id` int(2) NOT NULL auto_increment, `title` varchar(255) NOT NULL, `text` text NOT NULL, `parent` int(2) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=12;
INSERT INTO `settings` VALUES (2, 'Образование за рубежом', 'Страница " Образование за рубежом" в данный момент находится на стадии разработки. Просим принять свои извинения за причиненные неудобства', 0); INSERT INTO `settings` VALUES (3, 'Языковые курсы', 'Страница " Языковые курсы" в данный момент находится на стадии разработки. Просим принять свои извинения за причиненные неудобства.', 0); INSERT INTO `settings` VALUES (4, 'Каникулярные программы', 'Страница " Каникулярные программы" в данный момент находится на стадии разработки. Просим принять свои извинения за причиненные неудобства.', 0); INSERT INTO `settings` VALUES (5, 'Обменные программы', '< p> Страница " Обменные программы" в данный момент находится на стадии разработки. Просим принять свои извинения за причиненные неудобства.< /p> ', 0); INSERT INTO `settings` VALUES (6, 'Молодежные программы', '< p> Страница " Молодежные программы" в данный момент времени находится на стадии разработки. Просим принять свои извинения за причиненные неудобства.< /p> ', 0); INSERT INTO `settings` VALUES (7, 'Стажировки', '< p> Страница " Стажировки" в данный момент времени находится на стадии разработки. Просим принять свои извинения за причиненные неудобства.< /p> ', 0); INSERT INTO `settings` VALUES (8, 'Трудоустройство', '< p> Страница " Трудоустройство" в данный момент времени находится на стадии разработки. Просим принять свои извинения за причиненные неудобства.< /p> ', 0); INSERT INTO `settings` VALUES (1, 'Главная', '< p> < span class=" style-main" > Агентство «InterTeach» < /span> предлагает свои услуги по языковой подготовке специалистов вашей фирмы < strong> в городе Экибастузе: < /strong> \r\n< ul> \r\n< li> курсы английского и казахского языков в группах и индивидуально, с выездом на место или с предоставлением аудиторий; < /li> \r\n< li> занятия проводят преподаватели высшей категории, имеющие сертификаты, опыт преподавания для работников различных сфер; < /li> \r\n< li> обучение проводится с использованием специальной учебной литературы ведущих мировых издательств, аудио и видеоматериалов, словарей; < /li> \r\n< li> для ваших работников будет представлен курс англ./ каз. языков с учетом специфики деятельности вашего предприятия (коммуникации); < /li> \r\n< li> для развития навыков разговорной речи < span class=" style-main" > встреча с носителями языка< /span> 2 раза в неделю. < /li> \r\n< /ul> \r\n< /p> < p> Для получения дополнительной информации заполните форму справа.< /p> \r\n', 0);
CREATE TABLE `userlist` ( `id` int(3) NOT NULL auto_increment, `user` varchar(50) NOT NULL, `pass` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2;
INSERT INTO `userlist` VALUES (1, 'eiti1994', 'kafedrais');
4) Идем во вкладку Структура и, если все прошло успешно, видим следующее (Рис 3.5) Рис. 3.5 Структура БД
5) Переходим на главную страницу PHPMyADMIN и идем в раздел «Привелегии». Здесь мы должны создать нового пользователя для нашей базы данных (Рис 3.6) Рис. 3.6 Добавление нового пользователя
6) Теперь приступим к созданию динамически генерируемых страниц. Их будет две – index.php и view.php. Сраница index.php будет отвечать за вывод главной страницы, view.php – за вывод всех остальных. Таким образом наш сайт будет состоять из 2 страниц. 7) Создадим в папке blocks еще один файл php и дадим ему имя bd.php. Этот файл будет отвечать за подключение к нашей уже созданной базе данных Interteach. Помещаем в него следующий код (листинг 9): Листинг 9. Соединение с базой данных <? php $db = mysql_connect (" localhost", " admin", " 819g12hiez" ); mysql_select_db (" interteach", $db);? >
Функция mysql_connect устанавливает соединение с сервером server MySQL и возвращает дескриптор соединения с базой данных, по которому все другие функции, принимающие этот дескриптор в качестве аргумента, будут однозначно определять выбранную базу данных. Вторым и третьим аргументами этой функции являются имя пользователя username и его пароль password соответственно. Использование функции mysql_select_db эквивалентно вызову команды USE в SQL-запросе, т. е. функция mysql_select_db выбирает базу данных для дальнейшей работы, и все последующие SQL-запросы применяются к выбранной базе данных. Функция принимает в качестве аргументов название выбираемой базы данных и дескриптор соединения
8) Открываем в программе Dreamweaver страничку index.php. Сейчас она выглядит как на листинге. С учетом того, что у нас появилась база данных, модифицируем ее следующим образом (листинг 10): Листинг 10. Динамически генерируемая страница <? php include (" blocks/bd.php" ); /*Соединяемся с базой данных*/ $result = mysql_query (" SELECT title, text FROM settings WHERE id='1'", $db);
if (! result){ echo " < p> Запрос на выборку данных из базы не прошел. Напишите об этом администратору.< br> < strong> Код ошибки: < /strong> < /p> "; exit(mysql_error()); } if (mysql_num_rows($result)> 0){ $myrow = mysql_fetch_array ($result); } else{ echo " < p> Информация по запросу не может быть извлечена. В таблице нет записей< /p> "; exit(); } ? > <! DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01 Transitional//EN" " http: //www.w3.org/TR/html4/loose.dtd" > < html> < head> < title> Агентство Interteach - <? php echo $myrow ['title']; ? > < /title> < meta http-equiv=" Content-Type" content=" text/html; charset=windows-1251" > < link rel=" stylesheet" type=" text/css" href=" cssverticalmenu.css" /> < script type=" text/javascript" src=" cssverticalmenu.js" > < /script> < link rel=" stylesheet" type=" text/css" href=" style.css" /> < /head> < body> < div id=" container" > <! --Подключаем шапку сайта--> <? php include (" blocks/header.php" );? > < div id=" wrapper" > < div id=" content" > < h2> Добро пожаловать! < /h2> < div id=" topicwhite" > <? php echo $myrow ['text']; ? > < /div> < /div> < /div> <! --Подключаем форму--> <? php include (" blocks/form.php" );? > <! --Подключаем блок рекламы--> <? php include (" blocks/reklama.php" );? > <! --Подключаем " подвал" сайта--> <? php include (" blocks/footer.php" );? > < /div> < /body> < /html>
Функция mysql_query применяется для отправки серверу SQL-запросов. Функция mysql_fetch_array возвращает значения полей в виде ассоциативного массива, в качестве аргумента принимает дескриптор запроса возвращаемый функцией mysql_query. 9) Перед тем, как приступить к реализации страницы view.php, подправим файл navigation.php, учитывая что все необходимые данные хранятся в базе данных (листинг 11) Листинг 11. Вывод рубрик в цикле <? php include (" blocks/bd.php" ); /*Соединяемся с базой данных*/ $result2 = mysql_query (" SELECT * FROM settings WHERE parent='0' ORDER BY id", $db); $myrow2 = mysql_fetch_array ($result2); ? > < div id=" navigation" > < ul id=" verticalmenu" class=" glossymenu" > <? php do { printf (" < li> < a href='view.php? id=%s'> %s< /a> ", $myrow2['id'], $myrow2['title']); $d=$myrow2['id']; $result3 = mysql_query (" SELECT * FROM settings WHERE parent=\" $d\" ", $db); $myrow3 = mysql_fetch_array ($result3); $c=mysql_num_rows($result3); if ($c! ='0') { echo " < ul> "; do { printf (" < li> < a href='view.php? id=%s'> %s< /a> < /li> ", $myrow3['id'], $myrow3['title']); } while ($myrow3 = mysql_fetch_array ($result3)); echo " < /ul> < /li> "; } else {echo " < /li> "; } } while ($myrow2 = mysql_fetch_array ($result2)); ? > < /ul> < /div>
10) Таким образом, переменная id передается на страницу view.php через глобальную переменную $_GET['id']. Тогда страница view.php будет сформирована следующим образом (листинг 12):
Листинг 12. Старница view.php <? php include (" blocks/bd.php" ); /*Соединяемся с базой данных*/ if (isset($_GET['id'])) {$id=$_GET['id']; } $result = mysql_query (" SELECT title, text FROM settings WHERE id='$id'", $db); $myrow = mysql_fetch_array ($result); ? > <! DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01 Transitional//EN" " http: //www.w3.org/TR/html4/loose.dtd" > < html> < head> < title> Агентство Interteach - <? php echo $myrow ['title']; ? > < /title> < meta http-equiv=" Content-Type" content=" text/html; charset=windows-1251" > < link rel=" stylesheet" type=" text/css" href=" cssverticalmenu.css" /> < script type=" text/javascript" src=" cssverticalmenu.js" > < /script> < link rel=" stylesheet" type=" text/css" href=" style.css" /> < /head> < body> < div id=" container" > <! --Подключаем шапку сайта--> <? php include (" blocks/header.php" );? > < div id=" wrapper" > < div id=" content" > < h2> <? php echo $myrow ['title']; ? > < /h2> < div id=" topicwhite" > <? php echo $myrow ['text']; ? > < /div> < /div> < /div> <! --Подключаем форму--> <? php include (" blocks/form.php" );? > <! --Подключаем блок рекламы--> <? php include (" blocks/reklama.php" );? > <! --Подключаем " подвал" сайта--> <? php include (" blocks/footer.php" );? > < /div> < /body> < /html>
|
Последнее изменение этой страницы: 2017-03-14; Просмотров: 762; Нарушение авторского права страницы