Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Лабораторная работа №10. Тема: «Взаимодействие PHP и MySQL»




 

Цель:

1. Изучить теоретические основы разработки PHP-сценариев с использованием сервера баз данных MySQL

2. Получить практические навыки в области разработки PHP-сценариев для решения пользовательских задач с использованием СУБД MySQL

 

Ход работы:

1. создать БД согласно варианту задания. заполнить таблицу данными

2. создать HTML-документ с формой, служащей для ввода исходных данных и передачи их PHP-скрипту

3. создать PHP-скрипт для получения из БД информации согласно указанным в задании запросам.

4. Организовать в скрипте вывод результата в Web-браузер пользователя.

5. Предусмотреть операторы диагностики и обработки исключительных ситуаций


Функции взаимодействия с MySQL

Mysql_connect

Эта функция устанавливает соединение с сервером server MySQL и возвращает дескриптор соединения с базой данных

<?php

$dblocation = "localhost"; // Имя сервера

$dbuser = "root"; // Имя пользователя

$dbpasswd = ""; // Пароль

$dbcnx = @mysql_connect ( $dblocation, $dbuser, $dbpasswd );

if (! $dbcnx ) // Если дескриптор равен 0 соединение не установлено

{

echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому

корректное отображение страницы невозможно.</P>" );

exit ();

}

?>

Переменные $dblocation, $dbuser и $dbpasswd хранят имя сервера, имя пользователя и пароль, и, как правило, прописываются в отдельном файле (к примеру, config.php), который потом вставляется в каждый PHP-файл, в котором имеется код для работы с MySQL:

<?

$dblocation = "localhost";

$dbname = "forum";

$dbuser = "root";

$dbpasswd = "";

?>

Mysql_close

Эта функция разрывает соединение с сервером MySQL, и возвращает true при успешном выполнении операции и false в противном случае. Функция принимает в качестве аргумента дескриптор соединения с базой данных, возвращаемый функцией mysql_connect.

// устанавливаем соединение с базой данных

$dbcnx = @mysql_connect ( $dblocation, $dbuser, $dbpasswd );

if (! $dbcnx )

{

// Выводим предупреждение

echo ( "<P>В настоящий момент сервер базы данных не доступен, поэтому

корректное отображение страницы невозможно.</P>" );

// Завершаем работу в случае неудачи

exit ();

}

if( mysql_close ( $dbcnx )) // разрываем соединение

{

echo( "Соединение с базой данных прекращено" );

}

else

{

echo( "Не удалось завершить соединение" );

}

Mysql_select_db

функция mysql_select_db выбирает базу данных для дальнейшей работы, и все последующие SQL-запросы применяются к выбранной базе данных. Функция принимает в качестве аргументов название выбираемой базы данных database_name и дескриптор соединения resource. Функция возвращает true при успешном выполнении операции и false в противном случае. К примеру:

<?php

// Код соединения с базой данных

if (! @mysql_select_db ( $dbname, $dbcnx ))

{

echo( "<P>В настоящий момент база данных не доступна, поэтому

корректное отображение страницы невозможно.</P>" );

exit ();

}

?>

Имеет смысл помещать функции для соединения и выбора базы данных в тот же файл (config.php), где объявлены переменные с именами сервера, пользователя и паролем:

<?php

$dblocation = "localhost";

$dbname = "softtime";

$dbuser = "root";

$dbpasswd = "";

$dbcnx = @mysql_connect ( $dblocation,$dbuser,$dbpasswd );

if (! $dbcnx )

{

echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому

корректное отображение страницы невозможно.</P>" );

exit ();

}

if (! @mysql_select_db ( $dbname, $dbcnx ))

{

echo( "<P>В настоящий момент база данных не доступна, поэтому

корректное отображение страницы невозможно.</P>" );

exit ();

}

?>

Mysql_query

Эта функция применяется для отправки серверу SQL-запросов. Функция возвращает дескриптор запроса в случае успеха и false в случае неудачного выполнения запроса. В данном примере показан код, с помощью которого извлекается одна строка из таблицы authors базы данных forum.

<?php

include "config.php";

$ath = mysql_query ( "select * from authors;" );

if( $ath )

{

$author = mysql_fetch_array ( $ath );

echo "<br>имя = ". $author ['name']."<br>";

echo "пароль = ". $author ['passw']."<br>";

echo "e-mail = ". $author ['email']."<br>";

echo "url = ". $author ['url']."<br>";

echo "ICQ = ". $author ['icq']."<br>";

echo "about = ". $author ['about']."<br>";

echo "photo = ". $author ['photo']."<br>";

echo "time = ". $author ['time'];

}

else

{

echo "<p><b>Error: ".mysql_error (). "</b></p>";

exit ();

}

?>

Результат выполнения показан на следующем рисунке:

Mysql_fetch_array

Эта функция возвращает значения полей в виде ассоциативного массива, в качестве аргумента принимает дескриптор запроса возвращаемый функцией mysql_query. Вот как с помощью этой функции можно вывести все строки таблицы authors:

<?php

include "config.php";

$ath = mysql_query ( "select * from authors;" );

if( $ath )

{

// Определяем таблицу и заголовок

echo "<table border=1>";

echo "<tr><td>имя</td><td>пароль</td><td>e-mail</td><td>url</td></tr>";

// Так как запрос возвращает несколько строк, применяем цикл

while( $author = mysql_fetch_array ( $ath ))

{

echo "<tr><td>". $author ['name']."&nbsp;</td><td>". $author ['passw']."

&nbsp </td><td>". $author ['email']."&nbsp;</td><td>".

$author ['url']."&nbsp;</td></tr>";

}

echo "</table>";

}

else

{

echo "<p><b>Error: ".mysql_error (). "</b><p>";

exit ();

}

?>

Результат показан на следующем рисунке:

Mysql_result

С помощью этой функции можно получить доступ к отдельному полю записи. Допустим, нам нужно вывести имя автора, который первым найдется в базе данных. Сделать это можно следующим образом:

<?php

include "config.php";

$ath = mysql_query ( "select name from authors;" );

if( $ath )

{

echo mysql_result ( $ath,0,'name' );

}

else

{

echo "<p><b>Error: ".mysql_error (). "</b><p>";

exit ();

}

?>

Mysql_fetch_object

Эта функция возвращает поля записи данных в виде объекта. Ниже приведен пример, в котором с помощью этой функции из таблицы authors выводятся имя, URL и e-mail авторов.

<?php

include "config.php";

$ath = mysql_query ( "select * from authors;" );

if( $ath )

{

while( $row = mysql_fetch_object ( $ath ))

{

echo "<p>name: ". $row ->name."</p>";

echo "<p>url: ". $row ->url."</p>";

echo "<p>email: ". $row ->email."</p>";

}}

else

{

echo "<p><b>Error: ".mysql_error (). "</b><p>";

exit ();}

?>

Результат выполнения показан на следующем рисунке:

Mysql_fetch_row

В отличие от функции mysql_fetch_object, эта функция возвращает не объект, а массив, в котором содержатся значения полей:

<?php

include "config.php";

$ath = mysql_query ( "select * from authors;" );

if( $ath )

{

while( $row = mysql_fetch_row ( $ath ))

{

echo "<p>name: ". $row [1]."</p>";

echo "<p>url: ". $row [4]."</p>";

echo "<p>email: ". $row [3]."</p>";

}

}

else

{

echo "<p><b>Error: ".mysql_error (). "</b><p>";

exit ();

}

?>

 

Варианты индивидуальных заданий.

1. Базы данных: Автозаправочные станции = {Название АЗС, объем бензина (л), город }.

В РНР – сценариях необходимо реализовать следующие запросы к таблице из этой базы данных:

· Найти суммарный объем бензина на бензоколонках города, название которого ввел пользователь;

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

· Найти бензоколонки, в названии которых количество бензина больше введенного пользователем значения.

2. Базы данных: Детские сады = {Название детского сада, количество детей, количество работников, средняя зарплата }.

Необходимо реализовать в РНР – сценариях следующие запросы к таблице из этой базе данных:

· Найти детские сады, в которых средняя зарплата меньше введенного пользователем значения

· Найти детские сады, в названии которых присутствует строка, введенная пользователем;

· Найти количество работников и количество детей в детском саду, название которого ввел пользователь.

 

3. Базы данных: Программные Продукты (ПП) ={Название ПП, стоимость, Назначение фирмы-разработки }.

В РНР – сценариях необходимо реализовать следующие запросы к таблице из этой базы данных:

· Найти самый дорогой ПП фирмы, название которого ввел пользователь;

· Найти все программные продукты фирмы, название которой ввел пользователь;

· Найти программные продукты, в названии фирмы-разработчика которых присутствует строка, введенная пользователем.

4. Базы данных: Продуктовые магазины (ПМ) ={Название ПМ, город, Год, Объем продаж (тыс. руб)}.

В РНР – сценариях необходимо реализовать следующие запросы к таблице из этой базы данных:

· Найти магазины, у которых объем продаж в 2009 г. превысил указанное пользователем значение;

· Найти магазины города, название города которого ввел пользователь;

· найти суммарный объем продаж в магазинах, в названии которых присутствует строка, введенная пользователем.

5. Базы данных: Компьютеры = ={Номер компьютера, Объем свободного места на жестких дисках, Номера дисплейного класса}.

В РНР – сценариях необходимо реализовать следующие запросы к таблице из этой базы данных:

· найти компьютеры, у которых свободное место на жестких дисках превышает введенное пользователем значение

· найти дисплейные классы, в которых количество компьютеров больше или равно введенному пользователем числу;

· найти компьютеры дисплейного класса, номер которого задал пользователь.

6. Базы данных: Книги = {Название книги, Типография, Количество страниц, Год издания }

В РНР – сценариях необходимо реализовать следующие запросы к таблице из этой базы данных:

· найти названия книг, напечатанных в том году, который ввел пользователь;

· найти типографии, которые выпустили n и более различных книг, где n – это число, введенное пользователем;

· найти книги, имеющие количество страниц от А до В, где А и В – введенные пользователем числа.

 

7. Базы данных: Документы = {Наименование документа, количество страниц, Название кафедры}

В РНР – сценариях необходимо реализовать следующие запросы к таблице из этой базы данных:

· найти общее количество документов кафедры, название которой ввел пользователь

· найти документы, имеющие количество страниц от А до В, введенные пользователем числа.

· Найти кафедры, на которых разработаны документы, в названии которых содержится строка, введенная пользователем.

8. Базы данных: Изделия = {Наименование изделия, Количество входящих в него деталей, Общая трудоемкость изготовления изделия (час), Стоимость}

В РНР – сценариях необходимо реализовать следующие запросы к таблице из этой базы данных:

· Найти изделия, у которых количество деталей больше или равно введенному пользователем числу;

· Найти названия и трудоемкость изготовления изделий, стоимость которых меньше введенного пользователем значения;

· Найти информацию по изделиям, в названии которых присутствует строка, введенная пользователем.

9. Базы данных: Кабинеты = {Номер кабинета, Номер корпуса, Количество компьютеров, Количество парт}

В РНР – сценариях необходимо реализовать следующие запросы к таблице из этой базы данных:

· Найти кабинет, в котором количество парт и количество компьютеров превышают введенные пользователем значения;

· Найти количество компьютеров в корпусе, номер которого ввел пользователь;

· Найти корпус, в котором суммарное количество компьютеров не меньше, чем значение, введенное пользователем.

10. Базы данных: Участники конференции ={ФИО, название, доклада, город, Название секции}

В РНР – сценариях необходимо реализовать следующие запросы к таблице из этой базы данных:

· Найти участников, которые приехали из города, название которого ввел пользователь;

· Найти секции с количеством докладчиков большим или равными числу, введенному пользователем;

· Найти количество участников секции, для которой пользователь ввел название или его часть.

11. Базы данных: Автомобили ={Модель автомобиля, цена, название завода-изготовителя}

В РНР – сценариях необходимо реализовать следующие запросы к таблице из этой базы данных:

· Найти автомобили, цена которых не превышает введенное пользователем значение;

· Найти заводы-изготовители, количество выпускаемых моделей которых не меньше, чем число, введенное пользователем;

· Найти информацию по автомобилям, в названии которых присутствует строка, введенная пользователем.


Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...