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

WEB - дизайн / Лабораторні роботи / Лабораторна робота №21

.doc
Скачиваний:
21
Добавлен:
30.05.2020
Размер:
64 Кб
Скачать

Лабораторная работа №18

Работа с базами данных с помощью PHP. СУБД MySQL

Цель работы: формирование умений применение PHP для доступа к базам данных, и формирование умений работы с MySQL.

Работа с базами данных с помощью PHP

Одним из ценных качеств языка PHP это наличие интерфейсов к большому количеству систем управления баз данных. Это Abadas D, dBase, Empress, FilePro, Informix, Interbase, mSQL, MySQL, Oracle, PostGreSQL, Solid, Sybase, Velocis, Unix dbm, и другие. Хотя в примерах будем использовать интерфейс к MySQL. Интерфейсы доступа к данным других СУБД выглядят аналогично.

Примеры исходников на PHP:

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

- Имя - user_name

- телефон - phone

- фотография - img (имя файла, который находится в каталоге foto/)

Обработка форм с помощью PHP-сценария

РНР размещает данные, полученные от пользователя в одном из массивов предопределенных переменных $HTTP_GET_VARS или $HTTP_POST_VARS в зависимости от исполь­зованного метода передачи данных. Для получения данных из этих массивов в PHP-скрипте используют обращения типа $HTTP_POST_VARS[имя_поля_формы], если был использован метод передачи данных POST, или $HTTP_GET_VARS [имя_поля_формы], если был использован метод передачи данных GET.

Рассмотрим пример передачи данных с помощью формы, соз­данной с помощью следующего HTML-кода:

<html>

<title>Передача данных РНР-скрипту</title>

<body>

<form action="http://localhost/php_form_post.php" method=POST>

Введите имя:

<br><input type=text maxlength=150 name=username>

<br>Введите год рождения:

<br><input type=text maxlength=150 name=year>

<br><input type=submit value=Отправить>

</form></body></html>

Внешний вид формы приведен на рис. 1

Рисунок 1 Форма для ввода данных

Разработаем PHP-сценарий, который получает данные из этой формы и выводит их в Web-браузер пользователя. Программный код приведен ниже.

<html>

<title>приветствие</title>

<body>

<?php

echo "Здравствуйте, $HTTP_POST_VARS[username]! Вы родились в

$HTTP_POST_VARS[year] году. <br>";

?>

</body> </html>

Результат работы PHP-сценария, который будет выведен в Web-браузер пользователя, представлен на рис. 2.

Рисунок 2 Результат работы PHP-скрипта

Скрипт обработки загружаемых данных.

Не забудьте, что переменные посланные методом GET, сначала нужно получить из массива $_GET

<?php

$stud=$_GET['student'];

$name=$_GET['username'];

php>

<?php

/* Определяем значения переменным */

$hostname="localhost";

$username="Ваш_логин";

$password="Ваш_пароль";

/* Имя базы данных */

$dbName="Имя_вашей_базы_данных";

/* Имя таблицы */

$usertable="Имя_таблицы";

/* Создать соединение с MySql*/

MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу подсоединиться");

/* Выбор БД */

MYSQL_SELECT_DB($dbName) or die("Не могу выбрать БД");

/* Введение информации в БД */

$query="INSERT INTO $usertable VALUES ('$user_name','$phone','$img')";

$result=MYSQL_QUERY($query);

/* Закрыть соединение */

MYSQL_CLOSE();

print "Запись введена в БД! <br>";

?>

Скрипт обработки поискового запроса.

<?php

$hostname="localhost";

$username="Ваш_логин";

$password="Ваш_пароль";

$dbName="Имя_вашей_базы_данных";

$usertable="Имя_таблицы";

/* Создать соединение с MySql*/

mysql_connect($hostname,$username,$password) or die("No connect");

mysql_select_db("$dbName") or die("No select DB");

/* Выбрать людей, имена которых начинаются на $usr_name */

$query="select * from $usertable where user_name like '$user_name%'";

$result=mysql_query($query);

/* Сколько нашлось таких сотрудников? */

$number=mysql_numrows($result);

/* Распечатка выбранных сотрудников */

$i=0;

if ($number == 0)

{

print "Нет данных о $user_name в БД <br>";

}

elseif ($number > 0)

{

while ($i < $number)

{

/* Присвоение переменным значений полей user_name, phone, img для i-й

строки */

$user_name=mysql_result($result,$i,"user_name");

$phone=mysql_result($result,$i,"phone");

$img=mysql_result($result,$i,"img");

/* Вывод найденных значений */

print "<br><img src='foto/$img' height=130><br>";

print "<u> Имя:</u> <br>";

print "$user_name <br><br>";

print "<u> Телефон: </u><br>";

print "$phone <br><br>";

$i++;

print "<hr>";

}

} ?>

Скрипт для удаления данных.

<?php

$hostname="localhost";

$username="Ваш_логин";

$password="Ваш_пароль";

$dbName="Имя_вашей_базы_данных";

$usertable="Имя_таблицы";

mysql_connect($hostname,$username,$password) or die("No connect");

mysql_select_db("$dbName") or die("No select DB");

/* Удаление записи для поля user_name */

$query="delete from $usertable where user_name='$user_name'";

$result=mysql_query($query);

print "Запись удалена <br>";

?>

Скрипт редактирования данных.

<?php

$hostname="localhost";

$username="Ваш_логин";

$password="Ваш_пароль";

$dbName="Имя_вашей_базы_данных";

$usertable="Имя_таблицы";

mysql_connect($hostname,$username,$password) or die("No connect");

mysql_select_db("$dbName") or die("No select DB");

/* Выбор записи по полю user_name */

$query="select * from $usertable where user_name='$user_name'";

$result=mysql_query($query);

/* Определение существования выбранной записи */

$number=mysql_numrows($result);

if ($number==0)

{

print "Нет такой записи!<br>";

}

else

{

/* Если запись выбрана из базы данных, вывести все ее поля в форму для

редактирования и удалить ее */

$phone=mysql_result($result,0,"phone");

$img=mysql_result($result,0,"img");

print "<img src='foto/$img' height=130><br>";

/* Удаление записи */

$query="delete from $usertable where user_name='$user_name'";

$result=mysql_query($query);

/* Создание формы для редактирования */

print "<form method=post action='form5.php'>";

print "<br><b>Введите Ваше имя:</b>";

print "<br><input name='user_name' value='$user_name' size=30>";

print "<br><br><b>Введите номер вашего телефона:</b>";

print "<br><input name='phone' value='$phone' size=10>";

print "<br><br><b>Введите имя фото лат.буквами:</b>";

print "<br><input name='img' value='$img' size=20>";

print "<br><br><input type='submit' value='Зарегистрировать'>";

print "</form>";

}

?>

Скрипт для загрузки отредактированых данных.

<?php

hostname="localhost";

$username="Ваш_логин";

$password="Ваш_пароль";

$dbName="Имя_вашей_базы_данных";

$usertable="Имя_таблицы";

/* Создать соединение */

MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу подсоединиться");

/* Выбор БД */

MYSQL_SELECT_DB($dbName) or die("Не могу выбрать БД");

/* Введение информации в БД */

$query="INSERT INTO $usertable VALUES ('$user_name','$phone',''$img')";

$result=MYSQL_QUERY($query);

/* Закрыть соединение */

MYSQL_CLOSE();

print "Запись введена в БД! <br>";

?>

Обработка множественного выбора

Форма.

<body>

<form action="reg.php" method="GET">

<div>

Имя: <input type="txt" name="user" />

<br/>

Город: <select name="city_id[]" multiple> <!--имя массива-->

<option value="1">Сумы</option>

<option value="2">Киев</option>

<option value="3">Полтава</option>

<option value="4">Харьков</option>

<option value="5">Одесса</option>

</select>

</div>

<input type="submit" name="Submit" value="Submit" />

</form>

</body>

Обработка.

<?php

$city = $_GET['city_id'];

$limit = count($city); // получить размер массива

for ($i=0; $i<$limit; $i++) // перебираем массив

{

if(mysql_query("INSERT INTO table city_id VALUES ('$city[$i]')"))

{

echo "$i добавлен - $city[$i]<br/>";

} else

{

echo "$i error - $city[$i]<br/>";

}

}

?>

Практическое задание

Приведенные примеры скриптов, применить к страницам своего сайта.

Написать скрипт для обработки формы Вашего сайта, скрипт добавления записей в таблицу БД, скрипт удаления данных.