Уроки PHP и MySQL
Скачать материалы к учебному курсу:
Скачать Notepad++ Portable
Скачать Denwer3 (версия p5.3.13_m5.5.25_pma3.5.1)
Скачать папку CD_php для изучения курса «Уроки PHP и MySQL» (692 Кб)
Уроки PHP и MySQL. Урок 5. Формы и базы данных в web
Урок посвящен языку PHP и базе данных MySQL. Рассматривается взаимодействие PHP и MySQL, способы занесения данных из формы в базу данных и вывод данных из базы на web-страницу.
В данном уроке PHP и MySQL Вам предстоит решить следующие задачи:
1. Создать базу данных, содержащую две таблицы: справочник пород кошек, таблицу сведений о потерявшихся животных.
2. Создать web-страницу, на которых будут размещена форма для подачи объявлений о потерявшихся кошках. Данные из этих объявлений заносятся в соответствующую таблицу сведений о потерявшихся животных.
3. Создать web-страницу, позволяющую просматривать информацию из базы данных. Данные в таблицы базы данных будут вноситься из объявлений, размещенных посетителями на сайте.
Задание № 1. Создание базы данных
Наши уроки PHP и MySQL начнем с создания базы данных.
Сначала необходимо создать таблицу-справочник пород и таблицу сведений о потерявшихся животных. Структура таблиц следующая:
Справочник пород
Таблица 1
Название поля | Имя поля | Тип поля | Описание |
идентификационный номер породы | id | Числовой | |
название породы | name_por | Символьный | |
характеристика породы | describe_por | Символьный | В поле хранится имя файла, который содержит описание породы и фотографию. |
Сведения о потерявшихся кошках
Таблица 2
Название поля | Имя поля | Тип поля | Описание |
идентификационный номер кошки | id | Числовой | |
порода | por | Символьный | |
дата нахождения кошки: день месяц год |
day month year |
Символьный Символьный Символьный |
|
место нахождения кошки | place | Символьный | |
пол кошки | pol | Символьный | |
возраст кошки | age | Символьный | Если возможно указать примерный возраст |
описание кошки | outline | Символьный | Окрас, состояние здоровья и т. д. |
координаты нашедшего | contact | Символьный | Любая контактная информация: телефон, e-mail, адрес |
дополнительная информация | dop_info | Символьный | Например, кошка больна, есть клеймо, кормящая и пр. |
В наших уроках PHP и MySQL рассмотрим два способа создания таблицы базы данных.
1. С помощью клиента MySQL.
2. Средствами PHP.
Способ 1. Создание базы данных с помощью клиента MySQL
Задание 1
С помощью клиентской программы MySQL - «phpMyAdmin» создадим таблицу Справочник пород (таблица 1).
1. Запустите Denwer ярлыком Start Denwer.
2. Запустите браузер и перейдите по ссылке http://localhost/. На открывшейся странице в разделе Утилиты запустите: phpMyAdmin - администрирование СУБД MySQL. Запустится программа phpMyAdmin (рис. 1).
Рис. 1
3. Создайте новую базу данных. Для этого впишите в поле Создать базу данных имя базы catsdb, кодировку установите utf8_general_ci и нажмите кнопку Создать (рис. 2).
Рис. 2
4. Если все было выполнено верно, то будет выведено сообщение об удачном создании базы.
5. Перейдите в базу данных catsdb, нажав соответствующую строку в левой панели (рис. 3).
Рис. 3
6. Добавьте в базу данных таблицу Справочник пород, назовите ее: spravpor (структура таблицы и назначение полей приведены в таблице 1 Справочник пород). Для этого:
a. Внесите данные в поле Имя (имя таблицы - spravpor) и Количество столбцов (3), после чего нажмите кнопку ОК (рис. 4).
Рис. 4
b. В открывшемся окне заполните данные по структуре таблицы (рис. 5).
Рис. 5
c. После заполнения всех полей нажмите Сохранить. Перейдите в таблицу spravpor, нажав соответствующую строку в левой панели (рис. 6).
Рис. 6
d. Откроется сама таблица (рис. 7).
Рис. 7
Способ 2. Создание базы данных средствами PHP
В данном уроке PHP и MySQL создадим таблицу с помощью сценария PHP, но при этом база данных должна уже быть создана! В листинге 1 приведена программа создания таблицы под именем species средствами PHP. Структура таблицы species аналогична структуре таблицы spravpor.
Задание 2
1. Проанализируйте приведенные в листинге 1 PHP-сценарий и комментарии к нему в файле species.php.
2. Реализуйте код из листинга 1. Для этого:
- скопируйте его в Notepad++
- преобразуйте кодировку файла в utf-8 командой Кодировка – Преобразовать в UTF-8
- сохраните в папку localhost/www под именем species.php
- запустите файл, набрав в адресной строке localhost/species.php
- появится сообщение, что таблица успешно создана (рис. 8).
Рис. 8
3. После выполнения сценария убедитесь, что таблица species создана в базе данных catsdb (рис. 9, 10).
Рис. 9
Рис. 10
Листинг 1. Создание таблицы с помощью сценария PHP (файл species.php)
<?php /*Определяем параметры соединения. В случае удаленного доступа к серверу баз данных адрес хоста (переменная $host), имя базы данных (переменная $db) и ваше пользовательское имя (переменная $user) уточните у преподавателя. В случае использования локального сервера переменная $host имеет значение 127.0.0.1 или "localhost". */ $host="localhost"; $user="root"; $pass=""; $db="catsdb"; //Соединяемся с сервером mysql_connect ($host, $user, $pass); //Выбираем БД mysql_select_db ($db); //Формируем запрос на создание таблицы, по структуре аналогичной справочнику пород $query="CREATE TABLE species (id INT(4) NOT NULL auto_increment primary key, name_por VARCHAR(20) NOT NULL, describe_por VARCHAR(100) NOT NULL)"; //Выполняем запрос $result=mysql_query ($query); if ($result == true) print ("Таблица базы данных успешно создана"); //Печать сообщения else print ("Запрос не выполнен"); //Закрываем соединение mysql_close(); ?>
Комментарии к листингу 1:
1. Здесь адрес сервера MySQL — localhost (такой адрес указывается в случае если работа с базой данных ведется на локальном компьютере или компьютере где располагаются файлы с php-сценариями).
2. Программа на языке PHP обычно вставляется в HTML-текст. Поэтому предусмотрены специальные теги для отделения PHP-текста от HTML <?php и ?>.
3. Если PHP-сценарий представляет собой самостоятельный модуль (как в листинге 1), он также должен начинаться с конструкции <?php и заканчиваться конструкцией ?>.
4. Любой файл, содержащий PHP-сценарий, имеет расширение php, независимо от того, встроен сценарий в HTML-текст или полностью написан на PHP.
5. Многострочные комментарии должны начинаться с символов /* и завершаться символами*/. Однострочные комментарии предваряются символами //. Закрывать их не нужно.
6. В языке PHP имя переменной начинается со знака доллара ($), за которым следует собственно имя переменной. В именах переменных различаются верхний и нижний регистры. Имя переменной должно начинаться с буквы или символа подчеркивания, за которыми могут следовать буквы, цифры или знаки подчеркивания. Буквы должны быть из диапазона A—Z.
7. В конце каждого оператора php обязательно ставится точка с запятой.
8. Функции для работы с MySQL имеют префикс mysql_ (см. приложение 2).
Задание 3
В нашем уроке PHP и MySQL, используя программу из листинга 1 в качестве образца, напишите сценарий PHP для создания таблицы сведений о потерявшихся кошках (см. таблицу 2). Таблицу назовите catspotery, а файл сценария catspotery.php. Результат на рис. 11, 12
Рис. 11
Рис. 12
Добавление записи в базу данных
Мы подготовили таблицы базы данных. Сейчас на web-странице разместим форму подачи объявлений для тех, кто потерял кошку. Задача — обеспечить занесение информации из форм в соответствующие таблицы базы данных.
Примерный вид формы представлен на рис. 13.
Рис. 13
Задание 4
При выполнениии данного урока PHP и MySQL создайте web-страницу с формой, как на рис. 13. Сохраните под именем forma_cats.html. В качестве файл-обработчика укажите poter_dobavl.php. Не забывайте о корреляции полей формы и полей соответствующей таблицы в базе данных и кодировка файла должна быть в utf-8 (Кодировка – Преобразовать в UTF-8).
Данные, введенные посетителем, заносятся в соответствующую таблицу базы данных. Имя PHP-сценария, отвечающего за эту операцию, указывается в атрибуте action тега <form>. В листинге 2 приведен код PHP-сценария, осуществляющего подключение к серверу MySQL, выбор базы данных, запрос к базе данных. В данном случае это запрос INSERT, который вставляет данные из формы в базу данных.
Задание 5
1. Используя программу из листинга 2 в качестве образца, напишите PHP-сценарии, осуществляющие вставку записей в таблицы сведений о пропавших кошках.
2. Проверьте работоспособность формы. В базу данных (рис. 14) должна сохраняться информация, введенная в форму (рис. 13).
3. Наполните базу 5-ю записями.
Листинг 2. Занесение данных формы в базу данных (файл poter_dobavl.php)
<?php //Создание коротких переменных $por=$_POST['por']; $day=$_POST['day']; $month=$_POST['month']; $year=$_POST['year']; $place=$_POST['place']; $pol=$_POST['pol']; $age=$_POST['age']; $outline=$_POST['outline']; $contact=$_POST['contact']; $dop_info=$_POST['dop_info']; $hostname="localhost"; $username="root"; $dbname="catsdb"; $pass=""; $usertable="catspotery"; mysql_connect ($hostname, $username, $pass); mysql_select_db ($dbname); $query="insert into $usertable (por, day, month, year, place, pol, age, outline, contact, dop_info) values ('$por', '$day', '$month', '$year', '$place', '$pol', '$age', '$outline', '$contact', '$dop_info')"; $result=mysql_query ($query); if ($result == true) print ("Данные занесены"); //Печать сообщения else print ("Данные не занесены"); mysql_close(); ?>
Рис. 14
Извлечение записей из базы данных
В нашем уроке PHP и MySQL Вы реализовали технологию заполнения базы данных.
Теперь необходимо реализовать задачу вывода информации из базы данных. Т.е. необходимо представить на сайте информацию из базы данных в следующем виде:
Рис. 15
Код сценария, представленный в листинге 3, выводит информацию из базы данных на web-страницу, в соответствии с рисунком 15.
Листинг 3. Вывод информации из базы данных на Web-страницу. Передача параметров (файл vivod_poter.php)
<?php /*Определяем переменные для хранения адреса хоста, названия базы данных, таблицы базы данных, имени и пароля пользователя */ $hostname="localhost"; $username="root"; $usertable="catspotery"; $dbname="catsdb"; $password=""; //Соединяемся с базой данных mysql_connect($hostname, $username, $password); mysql_select_db($dbname); //Формируем текст запроса $query="select id, por, day, month, year, place, pol, age, outline, contact, dop_info from $usertable"; //Выполняем запрос с сохранением идентификатора результата $result=mysql_query($query); //Печатаем шапку таблицы print ("<p align=center><font face=verdana><b>Найденные</b> <table border=1 align=center width=90% cellpadding=5> <tr bgcolor=#ffffcc> <td>Порода</td> <td>Дата находки</td> <td>Район</td> <td>Пол</td> <td>Возраст</td> <td>Приметы</td> <td>Контакты</td> <td>Дополнительная информация</td> </tr>"); //Печатаем содержимое таблицы while ($a=mysql_fetch_array($result)) { $id=$a['id']; $poroda=$a['por']; $dat_day=$a['day']; $dat_month=$a['month']; $dat_year=$a['year']; $place_find=$a['place']; $pol_por=$a['pol']; $age_por=$a['age']; $outline_por=$a['outline']; $contact_por=$a['contact']; $dop_info=$a['dop_info']; print ("<tr> <td>$poroda</td> <td>$dat_day $dat_month $dat_year</td> <td>$place_find</td> <td>$pol_por</td> <td>$age_por</td> <td>$outline_por</td> <td>$contact_por</td> <td>$dop_info</td> </tr>"); } print ("</table>"); //Закрываем соединение mysql_close(); ?>
Задание 6
Изучите код сценария из листинга 3 и реализуйте его. Проверьте работоспособность сценария.
Задание 7
Реализуйте возможность работы со справочником пород spravpor. Для этого:
1. Добавьте к созданной таблице поле foto, в котором будет храниться ссылка на фотографию породы.
2. Используя запросы SQL (рис. 16), заполните базу 3-мя записями про породы кошек (длинношерстные, полудлинношерстные, короткошерстные) (рис. 17). Все необходимые материалы находятся в папке cats.
3. Реализуйте web-страницу, на которую выводятся данные из справочника пород. У каждой породы должна быть фотография.
4. Если скрипт обрезает описание породы, увеличьте длину поля describe_por, чтобы можно было вводить длинные описания.
5. Примерный результат на рисунке 18.
Рис. 16
Рис. 17
Рис. 18