ПРАКТИЧЕСКОЕ ЗАНЯТИЕ
Ход работы
Задание 1. Создать базу данных учет абитуриентов учебного заведения abiturient вphpMyAdmin.
БД содержит таблицу abit с полями: id (номер абитуриента), FIO (фамилия и инициалы), data (дата рождения), year (год окончания школы), ball (средний балл по аттестату), shift (шифр выбранной специальности).
Выполнение задания:
Примечание. Если на вашем ПК установлен сервер MySQL, то перед работой с phpMyAdmin остановите сервер MySQL с помощью команды net stop mysql.
Запустите Денвер через Run.exe. Проверьте, что локальный web-сервер запущен. Для этого в браузере в адресной строке введите localhost. Убедитесь, что Денвер заработал. Не выходя из браузера, пролистайте страницу до таблицы:
В этой таблице, нажав на ссылку https://localhost/Tools/phpMyAdmin, переходите в phpMyAdmin.
В поле под текстом Create new database введите название базы данных abiturient, выберите кодировку utf8_unicode_ci.
Нажмите кнопку Create – создать БД.
Перейдите к следующему шагу – созданию таблицы. В появившемся окне:
укажите имя таблицы (abit), количество столбцов в ней (6) и нажмите кнопку Go – таблица создана.
Затем указываете поля таблицы abit, их типы. Поля и их свойства приведены ниже:
Укажите тип таблицы MyISAM и кодировку для таблицы cp1251_general_ci. Нажмите кнопку Save.
Выбираете вкладку Insert и добавляете следующие данные в таблицу:
Замечание:
Можно заполнять по одной записи или по две. Для сохранения записи нажимаете кнопку Go.
Поле id не заполняем, т.к. оно наращивается автоматически.
Cтроки можно редактировать, нажав на кнопку .
Созданная вами база данных abiturient хранится в папке user/local/mysql-5.1/data.
Задание 2. Создайте файл connect.php, в котором будет содержаться только соединение с базой данных abiturient. Файл connect.php сохраняете в каталоге home/localhost/www/Ваша_папка.
|
<?php
//Устанавливаем доступы к базе данных:
//имя хоста, на локальном компьютере это localhost
$host = 'localhost';
//имя пользователя, по умолчанию это root
$user = 'root';
//пароль пустой
$password = '';
//имя базы данных
$db_name = 'abiturient';
//Соединяемся с хостом, используя доступы:
//в случае ошибки соединения выводим эту ошибку командой die(mysql_error())
mysql_connect($host, $user, $password) or die(mysql_error());
//выбираем базу данных abiturient
mysql_select_db($db_name);
//Устанавливаем кодировку
mysql_query("SET NAMES 'cp1251'");
?>
Задание 3. Создайте файл index.php, в котором будут отобраны все данные из базы в виде таблицы. Файл index.php сохраняете в каталоге home/localhost/www/Ваша_папка.
<?php
//выполняем соединение с БД
include 'connect.php';
//задаем имя таблицы в переменной $table
$table = 'abit';
//составляем запрос на отбор всех записей из таблицы abit
$query = "SELECT * FROM ". $table;
//результат запроса записываем в переменную
$result= mysql_query($query);
//выполняем запрос
//Печатаем тег начала таблицы
echo '<table align="center" border="1">';
//Создаем шапку таблицы
//Начинаем первую строку
echo '<tr>';
//Создаем первую ячейку первого столбца
echo '<th>Номер</th>';
//Создаем первую ячейку второго столбца
echo '<th>ФИО</th>';
//Создаем первую ячейку третьего столбца
echo '<th>Дата рождения</th>';
//Создаем первую ячейку четвертого столбца
echo '<th>Год окончания школы</th>';
//Создаем первую ячейку пятого столбца
echo '<th>Средний балл аттестата</th>';
//Создаем первую ячейку шестого столбца
echo '<th>Шифр специальности</th>';
|
//Завершаем первую строку
echo '</tr>';
// Делаем обход массива и вывод данных из таблицы abit
while($row = mysql_fetch_assoc($result))
{
//печатаем очередную строку таблицы с данными
echo '<tr align="center">';
//печатаем id абитуриента
echo '<td>'.$row['id'].'</td>';
//печатаем фамилию и инициалы
echo '<td>'.$row['FIO'].'</td>';
//печатаем дату рождения
echo '<td>'.$row['data'].'</td>';
//печатаем год окончания школы
echo '<td>'.$row['year'].'</td>';
//печатаем стредний балл аттестата
echo '<td>'.$row['ball'].'</td>';
//печатаем шифр специальности
echo '<td>'.$row['shifr'].'</td>';
//заканчиваем строку таблицы
echo '</tr>';
}
//закрываем тег создания таблицы
echo '</table>';
?>
Проверяем выполнение кода, в адресной строке браузера вводим localhost/Ваша_папка/index.php или просто localhost/Ваша_папка.
Задание 4. В файл index.php внесем изменения:
1) в шапке таблицы возле названия полей ФИО, средний балл добавьте по флажку. Если флажок будет отмечен, то будет происходить сортировка по возрастанию в соответствующем поле;
2) в шапке таблицы возле названия поля Шифр специальности добавьте список с перечнем всех специальностей.
Если будет выбран пункт Все, то будет происходить отбор всех данных из таблицы БД. Если выбрана конкретная специальность, то отобразятся записи, соответствующие этой специальности.
3) ниже таблицы добавьте кнопку Выполнить, которая будет выполнять сортировку или отбор записей по специальностям.
Выполнение задания:
В index.php сначала идет подключение к БД
<?php
//выполняем соединение с БД
include 'connect.php';
//задаем имя таблицы в переменной $table
|
$table = 'abit';
//составляем запрос на отбор всех записей из таблицы abit
$query = "SELECT * FROM ". $table;
ЗДЕСЬ БУДЕТ НОВЫЙ КОД НА ОБРАБОТКУ НАЖАТИЯ КНОПКИ
Далее в коде, где идет печать таблицы добавляем теги формы, флажки, список специальностей с помощью команды echo.
Проверяем, что корректно отобразились флажки, список, кнопка, данных из таблицы.
Перед выполнением запроса, т.е. перед командой $result= mysql_query($query);
Там, где написано:
ЗДЕСЬ БУДЕТ НОВЫЙ КОД НА ОБРАБОТКУ НАЖАТИЯ КНОПКИ
пишем обработку действия кнопки:
Проверьте каждый флажок и список на работоспособность.
Не забудьте, что сначала выбираем флажок (или элемент списка), а затем нужно нажать кнопку Выполнить).
Задание 5. Создайте файл index1.php
Выполните отбор всех записей из таблицы abit базы данных.
Ниже таблицы создайте три кнопки:
1. Кнопка Отбор – выполняет отбор абитуриентов, окончивших школу в текущем году
2. Кнопка Добавление – выполняет добавление одной записи с данными об абитуриенте: ФИО – Иванов И.И., год рождения – 2003-11-11, год окончания школы – 2019, средний балл = 5.00, специальность – ПКС.
3. Кнопка Удаление – выполняет удаление записи, у которой id совпадает с тем, что введет пользователь в поле рядом с кнопкой.
Выполнение задания:
Сначала выполните соединение с базой данных. Код соединения с БД находится в файле connect.php, поэтому остается только подключить файл connect.php в index1.php.
<?php
//выполняем соединение с БД
include 'connect.php';
//задаем имя таблицы в переменной $table
$table = 'abit';
//составляем запрос на отбор всех записей из таблицы abit
$query = "SELECT * FROM ". $table;
//ЗДЕСЬ БУДЕТ КОД НА ОБРАБОТКУ НАЖАТИЯ КНОПОК
//выполняем запрос и результат запроса записываем в переменную
$result= mysql_query($query);
//Печатаем тег начала таблицы
echo '<table align="center" border="1">';
//Создаем шапку таблицы
//Начинаем первую строку
echo '<tr>';
//Создаем первую ячейку первого столбца
echo '<th>Номер</th>';
//Создаем первую ячейку второго столбца
echo '<th>ФИО</th>';
//Создаем первую ячейку третьего столбца
echo '<th>Дата рождения</th>';
//Создаем первую ячейку четвертого столбца
echo '<th>Год окончания школы</th>';
//Создаем первую ячейку пятого столбца
echo '<th>Средний балл аттестата</th>';
//Создаем первую ячейку шестого столбца
echo '<th>Шифр специальности</th>';
//Завершаем первую строку
echo '</tr>';
// Делаем обход массива и вывод данных из таблицы abit
while($row = mysql_fetch_assoc($result))
{
//печатаем очередную строку таблицы с данными
echo '<tr align="center">';
//печатаем id абитуриента
echo '<td>'.$row['id'].'</td>';
//печатаем фамилию и инициалы
echo '<td>'.$row['FIO'].'</td>';
//печатаем дату рождения
echo '<td>'.$row['data'].'</td>';
//печатаем год окончания школы
echo '<td>'.$row['year'].'</td>';
//печатаем стредний балл аттестата
echo '<td>'.$row['ball'].'</td>';
//печатаем шифр специальности
echo '<td>'.$row['shifr'].'</td>';
//закрываем тег создания таблицы
echo '</tr>';
}
//закрываем тег создания таблицы
echo '</table>';
//Далее печатаем теги отображения формы, а в ней кнопок и текстового поля.
//начинаем форму
echo '<form method="post">';
//выводим кнопку Отбор и рядом текст, поясняющий действие
echo '<input type="submit" name="B1" value="Отбор" /> по текущему году окончания школы<hr>';
//выводим кнопку Добавление и рядом текст, поясняющий действие
echo '<input type="submit" name="B2" value="Добавление" />
абитуриента Иванова И.И. 2003-11-11 года рождения, 2019 - год окончания школы, ср. балл = 5.00, выбрана специальность ПКС<hr>';
//выводим текстовое поле, в которое можно ввести номер абитуриента для его удаления из таблицы в БД
echo '<input type="text" name="T6" placeholder="Введите id" value="'.$_POST["T6"].'"/>';
//выводим кнопку Удаление
echo '<input type="submit" name="B3" value="Удаление" /><hr>';
//заканчиваем форму
echo '</form>';
?>
Проверим код, набрав в адресной строке браузера localhost/ВашаПапка/index1.php.
Далее добавим код обработки кнопок:
Вместо текста // ЗДЕСЬ БУДЕТ КОД НА ОБРАБОТКУ НАЖАТИЯ КНОПОК пишем код:
Обновите в браузере страницу index1.php и проверьте кнопки на работоспособность.
Замечание:
1) в запросе на отбор по текущему году используется функция NOW() – текущая дата в формате гггг-мм-дд; YEAR() – отбор года из даты. Т.е. YEAR(NOW()) возвращает только год текущей даты (гггг).
2) Запрос
$query="SELECT * FROM ".$table." WHERE year=YEAR(NOW())";
Можно записать и более просто:
$query="SELECT * FROM ".$table." WHERE year=2020";