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

Учебное пособие 1077

.pdf
Скачиваний:
4
Добавлен:
30.04.2022
Размер:
750.04 Кб
Скачать

ный выше код (начиная с заголовка цикла for) следующим альтернативным вариантом:

for ($j = 0; $j < $rows; $j++)

{

$row = mysql_fetch_row($result); echo 'Author: '.$row[0].'<br>'; echo 'Title: '.$row[1].'<br>';

echo 'Genre: '.$row[2].'<br>'; echo 'Year: '.$row[3].'<br>';

echo 'ISBN: '.$row[4].'<br><br>';

}

В данном случае используется функция mysql_fetch_row(), которая извлекает одну строку данных из $result. Данная строка присваивается переменной $row.

После извлечения данных останется только обратиться по очереди к каждому элементу массива $row, начиная с нулевого.

Отключение

По окончании работы с базой данных от нее следует отключиться. Это делается с помощью функции mysql_close():

mysql_close($db_server);

Здесь функции нужно передать тот идентификатор, который был возвращен функцией mysql_connect() и сохранен в пе-

ременной $db_server.

Все подключения к базам данных автоматически закрываются при выходе из PHP. Но в более длинных программах, где могут осуществляться подключения к базам данных и отключения от них, настоятельно рекомендуется по завершении доступа закрывать каждое подключение к базе данных.

49

Практический пример

Рассмотрим пример, которые позволяет не только выводить данные из базы MySQL, но вводить и удалять записи из таблицы.

<?php

require_once 'login.php';

$db_server = mysql_connect($db_hostname, $db_username, $db_password);

if (!$db_server) exit ("Невозможно подключиться к

MySQL: ".mysql_error());

mysql_select_db($db_database)

or exit("невозможно выбрать базу данных

".mysql_error());

if (isset($_POST['author']) && isset($_POST['title']) && isset($_POST['genre']) && isset($_POST['year']) && isset($_POST['isbn']))

{

$author = get_post('author'); $title = get_post('title'); $genre = get_post('genre'); $year = get_post('year'); $isbn = get_post('isbn');

$query = "INSERT INTO books VALUES". "('$author', '$title', '$genre', '$year', '$isbn')";

if (!mysql_query($query, $db_server))

echo "Сбой при вставке данных: $query <br>".

mysql_error()."<br><br>";

}

50

else

 

 

 

if (isset($_POST['delete'])

&&

 

isset($_POST['isbn_del']))

{

 

 

 

 

$isbn = get_post('isbn_del');

 

$query = "DELETE FROM books WHERE

 

isbn='$isbn'";

 

if (!mysql_query($query, $db_server))

 

echo "Сбой при удалении данных:

 

 

$query <br>".

 

mysql_error()."<br><br>";

}

 

 

 

echo <<<_END

 

 

<form action="index.php"

method="post">

<pre>

 

 

 

Author <input

type="text"

name="author">

Title

<input type="text"

name="title">

Genre

<input type="text"

name="genre">

Year

<input type="text"

name="year">

ISBN

<input type="text"

name="isbn">

<input type="submit" value="Добавить запись">

</pre>

</form> _END;

$query = "SELECT * FROM books"; $result = mysql_query($query);

if (!$result) exit ("Сбой при доступе к базе данных: ".mysql_error());

$rows = mysql_num_rows($result);

for ($j = 0; $j < $rows; $j++)

{

51

$row = mysql_fetch_row($result); echo <<<_END

<pre>

Author: $row[0]

Title: $row[1] Genre: $row[2]

Year: $row[3] ISBN: $row[4]

</pre>

<form action="index.php" method="post">

<input type = "hidden" name="delete" value="yes"> <input type = "hidden" name="isbn_del"

value="$row[4]">

<input type = "submit" value="Удалить запись">

</form>

_END;

}

mysql_close($db_server);

function get_post($var)

{

return mysql_real_escape_string($_POST[$var]);

}

?>

В самом начале программы происходит подключение к самой базе данных. После этого происходит проверка, ввел ли пользователь данные для добавления новой записи. Если да, то происходит добавление новой записи в базу с помощью запроса:

$query = "INSERT INTO books VALUES".

"('$author', '$title', '$genre', '$year', '$isbn')"; 52

Если пользователь не ввел данные, то проверяется не нажимал ли он кнопку «Удалить запись». Если да, то из скрытого поля ввода «isbn_del» считывается значение ключевого поля удаляемой записи. После этого выполняется запрос:

$query = "DELETE FROM books WHERE isbn='$isbn'";

Если пользователь не совершал никаких действий перед вызовом программы, то происходит вывод содержимого таблицы books на экран. Каждая выведенная на экран запись снабжается кнопкой «Удалить запись», позволяющей стереть эту запись из таблицы базы данных.

В конце происходит отключение программы от базы дан-

ных.

Также в программу добавлена пользовательская функция get_post(). Внутри нее происходит вызов функции mysql_real_escape_string(), которая экранирует специальные символы в строках для использования в выражениях SQL. После такой обработки результат можно безопасно использовать в SQL-запросе в функции mysql_query().

Результат работы программы представлен на рис. 7.

53

Рис. 7. Результат работы программы на PHP, работающей с базой данных MySQL

2.3. Задание на лабораторную работу № 14

Создать базу данных со структурой, соответствующей своему варианту. Осуществить следующие действия с БД:

создать своего пользователя и дать ему полный доступ к своей базе данных;

создать таблицу базы данных со структурой, соответ-

ствующей варианту задания;

54

прописать в таблице ключевое поле;

добавить к полям индексы;

внести в таблицу 3-4 записи.

Написать программу на PHP, которая осуществляет следующие действия:

подключение к базе данных;

вывод содержимого таблицы базы данных на экран;

добавление к таблице базы данных новой записи;

удаление записи из базы данных.

Также можно добавить сценарий JavaScript, который проверяет корректность ввода данных для новой записи (например, все ли поля заполнены).

Варианты задания приведены в табл. 7.

 

 

Таблица 7

 

Варианты задания

№ вар.

База данных

Поля таблицы

1

Автобусы

– номер автобуса (ключ);

 

 

– ФИО водителя;

 

 

– № маршрута;

 

 

– пункт назначения.

 

 

 

2

Авиабилеты

– номер рейса (ключ);

 

 

– пункт назначения;

 

 

– № рейса;

 

 

– желаемая дата вылета.

3

Телефонный

– номер телефона (ключ);

 

справочник

– ФИО абонента;

 

 

– адрес абонента (улица);

 

 

– адрес абонента (№ дома и квар-

 

 

тиры).

 

 

 

4

Врачи

– табельный номер врача (ключ);

 

 

– ФИО врача;

 

 

– специализация;

 

 

– номер кабинета.

 

 

55

 

 

Продолжение табл. 7

5

Гарнитуры

– название гарнитура (ключ);

 

 

– количество предметов;

 

 

– цена;

 

 

– наличие на складе.

6

Больные

– № больного (ключ);

 

 

– ФИО больного;

 

 

– диагноз;

 

 

– номер палаты.

7

Продажи авто-

– № автомобиля (ключ);

 

мобилей

– марка автомобиля;

 

 

– дата продажи;

 

 

– ФИО менеджера.

8

Музыкальные

– № альбома (ключ);

 

альбомы

– название альбома;

 

 

– группа;

 

 

– жанр.

9

Туры

– название тура (ключ);

 

 

– продолжительность тура;

 

 

– стоимость путевки;

 

 

– количество проданных путевок.

10

Лаборатории

– номер лаборатории (ключ);

 

 

– количество компьютеров;

 

 

– ФИО ответственного лаборанта;

 

 

– телефон ответственного лаборан-

 

 

та.

11

Книги

– номер УДК (ключ);

 

 

– ФИО автора;

 

 

– название;

 

 

– год издания.

12

Бензоколонка

– номер партии (ключ);

 

 

– марка бензина;

 

 

– цена за литр;

 

 

– количество литров в наличии.

 

 

56

 

 

Окончание табл. 7

13

Грузоперевозки

– номер грузовика (ключ);

 

 

– ФИО водителя;

 

 

– вес груза;

 

 

– маршрут.

14

Гостиница

– номер комнаты (ключ);

 

 

– вид номера;

 

 

– количество мест;

 

 

– стоимость проживания.

15

Продажа ком-

– название игры (ключ);

 

пьютерных игр

– издатель;

 

 

– количество проданных физиче-

 

 

ских копий;

 

 

– количество проданных цифровых

 

 

копий.

16

Ремонт вычис-

– номер заказа (ключ);

 

лительной тех-

– ФИО заказчика;

 

ники

– вид работы;

 

 

– стоимость ремонта.

17

Пользователи

– логин пользователя (ключ);

 

компьютерной

– дата регистрации;

 

сети

– тип пользователя;

 

 

– дата последней авторизации.

18

Склад

– название прибора (ключ);

 

 

– тип прибора;

 

 

– цена;

 

 

– количество на складе.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1.Сергеев, М. Ю. Web-дизайн: создание Web-сайтов с помощью HTML и CSS [Текст]: учеб. пособие / М.Ю. Сергеев.

Воронеж: ГОУВПО «ВГТУ», 2012. – 219 с.

2.Справочник по HTML и CSS [Электронный ресурс]:

Режим доступа: World Wide Web. URL: http://htmlbook.ru/.

57

3. Никсон, Р. Создаем динамические веб-сайты с помощью PHP, MySQL и JavaScript [Текст] / Р. Никсон. – СПб.: Питер, 2011. – 496 с.

4. Маклафлин, Б. PHP и MySQL. Исчерпывающее руководство [Текст] / Б. Маклафлин. – СПб.: Питер, 2016. – 544 с.

СОДЕРЖАНИЕ

 

Введение

1

1. Лабораторная работа № 13. Работа с файлами и веб-

 

формами в PHP

1

1.1. Общие методические указания по выполнению

 

лабораторной работы

1

1.2. Теоретические сведения

1

1.3. Задание на лабораторную работу № 13

21

2. Лабораторная работа № 14. Создание базы данных в

 

MySQL. Работа с базой данных MySQL в PHP

25

2.1. Общие методические указания по выполнению

 

лабораторной работы

25

2.2. Теоретические сведения

25

2.3. Задание на лабораторную работу № 14

54

Библиографический список

57

58