Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Язык структурированных запросов и основы web-программирования. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
<form action="hello.php" method="get"> <!-- или method="post" -->
y
Имя <input type="text" name="name">
Возраст <input type="text" name="age">
<input type="submit">
</form>
Файл hello.php
<!DOCTYPE HTML>
<html>
<head><meta charset = "utf-8"><title>PHP</title></head>
<body>
<?php echo "Вас зовут ", $_REQUEST["name"], " и Вам ", $_REQUEST["age"], " лет."?>
</body>
</html>
Результаты работы php-скрипта – созданный html-документ и его исходный код – приведены на рис. 2.18. По исходному коду нельзя по­нять, что документ был сформирован динамически. Косвенным при­знаком является расширение имени запрошенного файла – *.php.
<!DOCTYPE HTML>
<html>
<head><meta charset = "utf-8">
<title>PHP</title></head>
<body>
Вас зовут Мария и Вам 20 лет.
</bod
></html>
Рис. 2.18. Html-документ, созданный php-скриптом, и его исходный код
Вне зависимости от метода передачи данных от клиента серверу данные, полученные из запроса, помещаются в массив $_REQUEST, где ключи элементов массива – это значения атрибутов name соответ­ствующих полей формы, заполняемых на стороне клиента.
Таким образом, в отличие от работы с CGI-интерфейсом, при напи­сании php-скрипта нет необходимости учитывать различия в методах GET и POST и не требуется выполнять разбор присланных данных – это делается средствами языка PHP.
Следует отметить, что можно получить тот же результат, перенеся
html-разметку в код php-скрипта.
61
Файл hello.php
<?php
echo "<!DOCTYPE HTML><html><head><meta charset = \"utf-8\"></head><body>";
echo "Вас зовут ", $_REQUEST["name"], " и Вам ", $_REQUEST["age"], " лет.";
echo "</body></html>"
?>
Кроме традиционных возможностей язык PHP предоставляет много средств для решения разнообразных задач при создании web-при­ложений.
PHP способен генерировать не только html-документы: доступно формирование изображений, файлов PDF, любых текстовых данных, таких как XML-файлы.
PHP обеспечивает работу с другими сервисами через протоколы POP3, HTTP и др.
PHP имеет много возможностей для обработки текста, включая регулярные выражения.
К вышеприведенному перечню следует добавить взаимодействие PHP с большим количеством различных систем управления базами данных (СУБД): MySQL, PostgreSQL, Oracle, Microsoft SQL Server, mSQL и многими другими.
Рассмотрим работу с часто используемой в web-программировании СУБД MySQL.
Код PHP состоит из ядра и присоединенных к нему необязательных расширений, которые увеличивают круг задач, выполняемых ядром. Начиная с версии PHP5 pасширение MySQLi (MySQL Improved) поз­воляет получить доступ к функциональности, которую предоставляет СУБД MySQL.
Наравне с процедурным интерфейсом расширение MySQLi предо­ставляет и объектно-ориентированный интерфейс, который будет ис­пользован далее в коде.
Первоначально следует установить соединение с базой данных (БД). Установка соединения выполняется путем создания нового объекта класса mysqli с соответствующим набором параметров (хост, логин, пароль, имя БД). В случае ошибки соединения выводится соответствующее сообщение – описание и код ошибки (методы
62
connect_errno и connect_error). Метод close() закрывает ранее откры­тое соединение с БД.
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_db");
if ($mysqli->connect_error)
die("Error : (". $mysqli->connect_errno . ") ". $mysqli->connect_error);
...
$mysqli->close();
?>
Для выполнения запроса к БД используется метод query() с одним обязательным параметром – запросом на языке SQL.
<?php
$result = $mysqli->query("SELECT * FROM my_db_table");
?>
Рассмотрим код, программно создающий базу данных phonebase с одной таблицей phone. В таблице phone имеется четыре поля: name, email, number и id. Скрипт, создающий БД с единственной таблицей, выглядит следующим образом.
<?php
$mysqli = new mysqli("localhost", "root", "");
if ($mysqli->connect_error)
die("Error : (". $mysqli->connect_errno .") ". $mysqli->connect_error);
$mysqli->query("create database 'phonebase' ");
$mysqli->select_db("phonebase");
$mysqli->query("CREATE TABLE 'phone' ('name' TEXT NOT NULL , 'email'
VARCHAR(20) NOT NULL , 'number' VARCHAR(15) NOT NULL , 'id' INT NOT
NULL AUTO_INCREMENT, PRIMARY KEY ('id'));");
$mysqli->close();
?>
Для ввода данных, предназначенных для записи в БД, на стороне клиента отображается форма с соответствующими полями (рис. 2.19).
63
<form action = http://localhost/mysqli/add.php> Имя <input type = text name = name> E-mail <input type = text name = email> Телефон <input type = text name = number > <input type = submit value = Отправить> </form>
Рис. 2.19. Форма для ввода данных, записываемых в БД
Скрипт позволяет сохранить в таблицу phone присланные данные.
<?php
$mysqli = new mysqli("localhost", "root", "", "phonebase");
if ($mysqli->connect_error)
die("Error : (". $mysqli->connect_errno .") ". $mysqli->connect_error);
$mysqli->query("SET NAMES cp1251");
$mysqli->query("insert into phone (name,email,number,id) values('$_REQUEST[name]','$_REQUEST[email]','$_REQUEST[number]','null');");
$mysqli->close();
?>
Таблица с сохраненными записями приведена на рис. 2.20.
Рис. 2.20. Заполненная данными таблица
64
Для извлечения всех записей из таблицы используется запрос $result = $mysqli->query("select * from phone"), результаты запроса со-
храняются в переменной $result. Для извлечения данных из запроса можно использовать метод fetch_array(), в качестве входного парамет­ра можно указать одну из констант: MYSQLI_BOTH, MYSQLI_ASSOC или MYSQLI_NUM. В зависимости от использованной константы дан­ные запроса будут извлечены в ассоциативный и индексный массивы
(в случае константы MYSQLI_BOTH) или только в один из массивов (в случае констант MYSQLI_ASSOC или MYSQLI_NUM). Альтерна­тивой методу fetch_array() с константами MYSQLI_ASSOC или MYSQLI_NUM в качестве входного параметра служат методы fetch_assoc() и fetch_row().
Ниже приведен код скрипта для извлечения всех записей из таблицы.
<?php
$mysqli = new mysqli("localhost", "root", "", "phonebase");
if ($mysqli->connect_error)
die("Error : (". $mysqli->connect_errno .") ". $mysqli->connect_error);
$result=$mysqli->query("select * from phone");
for($i=0;$i<$result->num_rows;$i++)
{
$arr=$result->fetch_array(MYSQLI_BOTH);
foreach ($arr as $k=>$v)
echo '$arr[',$k,"]=",$v,"<br>";
}
$result->free(); $mysqli->close();
?>
Результаты работы скрипта для случаев вызова метода fetch_array() с константами MYSQLI_BOTH, MYSQLI_ASSOC и MYSQLI_NUM приведены на рис. 2.21.
В заключение приведем код скрипта, формирующий таблицу с ре­зультатами запроса.
<html>
<head><title>MySQL</title></head>
<body>
<table>
<tr><th>Имя</th><th>E-mail</th><th>Номер</th></tr>
65
<?php
$mysqli = new mysqli("localhost", "root", "", "phonebase");
if ($mysqli->connect_error)
die("Error : (". $mysqli->connect_errno .") ". $mysqli->connect_error);
$result = $mysqli->query("select * from phone");
while (list($name,$email,$number,$id) = $result->fetch_array(MYSQLI_NUM))
echo ("<tr><td>$name</td><td>$email</td><td>$number</td></tr>");
$result->free(); $mysqli->close();
?>
</table></body>
</html>
б
а
Рис. 2.21. Результаты работы метода fetch_array() с константами
в
MYSQLI_BOTH (а), MYSQLI_ASSOC (б) и MYSQLI_NUM (в)
66
Результат работы скрипта приведен на рис. 2.22.
Рис. 2.22. Результат работы скрипта
Контрольные вопросы
1. Перечислите основные этапы работы протокола HTTP.
2. Какие части URL используются на определенных этапах рабо-
ты протокола HTTP?
3. Какова структура запроса клиента и ответа web-сервера?
4. В чем заключаются различия между методами передачи дан-
ных GET и POST?
5. В каких случаях применяется URL-кодирование?
6. На какие группы делятся заголовки протокола HTTP?
7. Какие существуют
8. Каким образом можно просмотреть заголовки запроса и ответа
web-сервера?
9. Каково назначение языка HTML?
10. Что такое тег?
11. В чем заключаются основные различия между версиями языка
HTML4.01 и HTML5?
12. Что такое семантические теги?
13. Как проверить правильность разметки на соответствие ее стан-
дарту?
14. Для
мента и его оформление?
чего следует разделять содержательное наполнение доку-
диапазоны кодов состояния ответа?
67
15. Что такое класс стиля?
16. Какими способами можно определить стили для html-
документа?
17. Почему таблицы стилей называются каскадными?
18. Как определить стили документа, отображаемого на различных
устройствах?
19. В чем заключается разница между объектной моделью доку-
мента (DOM) и объектной моделью браузера (BOM)?
20. Каким образом строится дерево DOM?
21. Как будет выглядеть дерево DOM, если html-разметка доку-
мента не соответствует стандарту языка?
22. Сколько типов узлов может присутствовать в дереве DOM?
23. Каким образом можно редактировать дерево DOM?
24. Для чего нужен CGI-интерфейс?
25. Каким образом данные, переданные методом GET, могут быть
получены CGI-скриптом?
26. Каким образом данные, переданные методом POST, могут быть
получены CGI-скриптом?
27. Какие заголовки ответа сервера в обязательном порядке долж-
ны быть сформированы CGI-скриптом?
28. Каким образом CGI-скрипт может передать web-серверу сфор-
мированный документ для отправки его клиенту?
29. Каково назначение серверного скриптового языка PHP?
30. В чем заключается разница между CGI-скриптом и PHP-скриптом?
31. С какими СУБД может работать язык PHP?
32. Какое расширение языка PHP используется для работы с СУБД
MySQL?
33. Каким образом можно выполнить запрос к СУБД MySQL?
Проанализируйте полученный результат.
68
ЗАКЛЮЧЕНИЕ
Бурное развитие современных web-технологий дает разработчикам мощные инструменты, которые позволяют создавать полнофункцио­нальные web-приложения. Базы данных оказывают огромное влияние на World Wide Web. Значительная часть содержимого Web хранится в базах данных, а web-серверы действуют как клиенты баз данных.
В последние годы web-приложения стремительно развиваются, по­степенно вытесняя desktop-решения. Всё чаще компании прибегают к услугам разработчиков web-приложений, для того чтобы эффективно решать бизнес-задачи. Работающие с базами данных специалисты мо­гут быть как пользователями баз данных, так и их разработчиками и администраторами.
Язык структурированных запросов SQL – это стандартный язык, который используется в реляционных системах управления базами данных как в роли языка определения данных для описания структуры базы данных, так и в роли языка управления данными для формирова­ния запросов к базе данных и изменения ее содержимого.
В результате изучения материала, изложенного в учебном пособии, читатель знакомится с возможностями обработки информации с ис­пользованием языка структурированных запросов SQL, а также с базо­выми средствами современных web-технологий, используемых при создании web-приложений: языком разметки гипертекста HTML, кас­кадными таблицами стилей CSS, клиентским скриптовым языком
JavaScript и серверным скриптовым языком PHP.
69
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Уорсли Дж. PostgreSQL. Для профессионалов / Дж. Уорсли, Дж. Дрейк. –
Санкт-Петербург : Питер, 2003. – 496 с.
2. Гарсия-Молина Г. Системы баз данных: Полный курс : пер. с англ. / Гектор Гарсия-Молина, Джеффри Дэвид Ульман, Дженнифер Уидом. – Москва : Вильямс, 2003. – 1088 с.
3. Карпова Т. Базы данных: модели, разработка, реализация / Т. Карпова. – Санкт-
Петербург : Питер, 2001. – 304 с.
4. Малыхина М. П. Базы данных: основы, проектирование, использова­ние / М. П. Малыхина. – Санкт-Петербург : БХВ-Петербург, 2004. – 512 с.
5. Хомоненко А. Д. Базы данных : учебник для высших учебных заведений / А. Д. Хомоненко, В. М. Цыганков, М. Г. Мальцев ; под ред. проф. А. Д. Хо­моненко. – Санкт-Петербург
6. Трошина Г. В. Базы данных : электронный учебно-методический ком­плекс / Г. В. Трошина ; Новосиб. гос. техн. ун-т. – Новосибирск, [2011]. –
URL: http://elibrary.nstu.ru/source?bib_id=vtls000152242 (дата обращения:
22.06.2022).
7. Трошина Г. В. Технологии баз данных : электронный учебно-методи­ческий комплекс / Г. В. Трошина ; Новосиб. гос. техн. ун-т. – Новосибирск, [2011]. – URL: http://elibrary.nstu.ru/source?bib_id=vtls000156349 (дата обраще ния: 22.06.2022).
8. Разработка приложений на С# с использованием СУБД PostgreSQL :
учеб. пособие / [И. А. Васюткина и др.] ; Новосиб. гос. техн. ун-т. – Новоси­бирск : Изд-во НГТУ, 2015. – 141, [1] с. : ил., табл. – URL: http://elibrary.
nstu.ru/source?bib_id=vtls000220068 (дата обращения: 22.06.2022).
9. Радыгин В. Ю. Базы данных: основы, проектирование, разработка
информационных систем, проекты: курс лекций : учеб. пособие / В. Ю. дыгин, Д. Ю. Куприянов. – Москва : НИЯУ МИФИ, 2020. – 244 с. – ISBN 978-
5-7262-2680-4. – URL: https://e.lanbook.com/book/175425 (дата обращения:
22.06.2022).
10. Диго С. М. Базы данных. Проектирование и создание : учеб.-метод. пособие / С. М. Диго. – Москва : ЕАОИ, 2008. – 171 с. – ISBN 978-5-374­00055-9. – URL: https://e.lanbook.com/book/126264 (дата обращения: 04.07.2022).
: КОРОНА-принт, 2002. – 672 с.
-
Ра-
70
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]