Взаимодействие PHP и MySQL

Работа с базой данных MySQl с помощью PHP яляется очень распространенной задачей. Рассмотрим более подробно ее решение.
Создадим новую базу данных example и пользователя example (пароль example) с полными правами на эту БД. Для удобства можно использовать phpmyadmin. В базе данных example создадим таблицу user

с полями login (varchar, размер 10, первичный ключ) и username (varchar, размер 10). В этой таблице создадим две записи: user1 name1 и user2 name2.
Создадим приложение, которое будет позволять выводить содержимое таблицы user, добавлять и удалять записи.

Главная страница index.php будет содержать ссылки на дополнительные страницы, позволяющие работать с БД. Содержание файла index.php:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Main page</title>
</head>
<body>
<p><a href="viewdata">Список пользователей</a></p>
<p><a href="insdataform">Добавление пользователя</a></p>
<p><a href="deldataform">Удаление пользователя</a></p>
</body>
</html>

При работе с БД в первую очередь необходимо установить с ней соединение. Так как эту процедуру придется выполнять несколько раз,
то имеет смысл создать отдельный файл dbconnect.php, реализующий эту задачу.


<?php
    // Подключение к СУБД mysql в качестве пользователя example с паролем example
    $connect = mysql_connect("localhost", "example", "example" );
    if(!$connect)
    {
      echo 'Невозможно подключиться к базе данных.';
      exit;
    }
    // Выбор соответствующей базы данных
    $selectdb = mysql_select_db("example" );
    if(!$selectdb)
    {
      echo 'Невозможно выбрать базу данных.';
      exit;
    }
?>

Для реализации вывода списка пользователей создадим файл viewdata.php


<?php
#соединение с БД
require "dbconnect.php";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>User list</title>
</head>
<body>
<p>Список пользователей</p>
<?php
#выполнение SQL запроса к БД
$result=mysql_query("select * from example.user") or die("неверный запрос");
#обработка результата
while ($arr=mysql_fetch_row($result))
    {
		echo "<p>Login:  $arr[0]   Username:   $arr[1] </p>";
	}
?>
<p><a href="index.php">На главную</a></p>
</body>
</html>


В данном примере сначала устанавливается соединение с БД, затем создается запрос к БД и происходит обработка результата выполнения этого запроса.
Для обработки результата используется функция mysql_fetch_row, которая возвращает строку результата в виде массива.
Количество элементов массива равно количеству полей соответствующего SQL запроса.
Для вывода всех строк запроса испольуется цикл while.

Далее реализуем добавление новых пользователей. Для этого создадим два файла: insdataform.php и insdataformaction.php. Файл insdataform.php содержит описание формы:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Insert data form</title>
</head>
<body>
<p>Добавление пользователя</p>
<form name="insdataform" method="post" action="insdataformaction.php">
<p><input type="text" name="login" value="Логин"></p>
<p><input type="text" name="username" value="Имя пользователя"></p>
<p><input type="submit" name="Submit" value="Добавить"></p>
</form>
</body>
</html>

Файл insdataformaction.php содержит программу, реализующую обработку переданных из формы данных


<?php
#соединение с БД
require "dbconnect.php";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Insert data form action</title>
</head>
<body>

<?php
$login = $_POST['login'];
$username=$_POST['username'];
#вставка данных в таблицу user
$query="insert into user values('$login','$username')";
if(mysql_query($query))
    {
		echo "Запись добавлена";
	}
else
    {
		echo "Ошибка запроса";
	}
?>

<p><a href="index.php">На главную</a></p>
</body>
</html>


Для реализации удаления пользователей создадим два файла: deldataform.php и deldataformaction.php. Аналогично предыдущему примеру, файл deldataform.php содержит описание формы:


<?php
#соединение с БД
require "dbconnect.php";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Delete data form</title>
</head>
<body>
<p>Удаление пользователя</p>

<form name="deldataform" method="post" action="deldataformaction.php">
<select name="login">
<?php
#выполнение запроса к БД (выбираем все записи из таблицы user)
$result=mysql_query("select * from example.user") or die("неверный запрос");
#обработка результата (формируем список выбора, содержащий логины)
while ($arr=mysql_fetch_row($result))
    {
		echo "<option value='$arr[0]'>$arr[0]</option>\n";
	}
?>
</select>
<p><input type="submit" name="Submit" value="Удалить"></p>
</form>

</body>
</html>


Файл deldataformaction.php содержит программу, реализующую обработку переданных из формы данных


<?php
#соединение с БД
require "dbconnect.php";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Delete data form action</title>
</head>
<body>
<?php
$login = $_POST['login'];
#удаление пользователя с логином $login из таблицы user
$query="delete from user where login='$login'";
if(mysql_query($query))
    {
		echo "Пользователь ".$login." удален.";
	}
else
    {
		echo "Ошибка запроса";
	}
?>

<p><a href="index.php">На главную</a></p>
</body>
</html>



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

Главная страница
Рисунок 1.
Список пользователей
Рисунок 2.
Добавление пользователей
Рисунок 3.
Рисунок 4.
Рисунок 5.
Обновленный список пользователей
Рисунок 6.
Удаление пользователей
Рисунок 7.
Рисунок 8.
Рисунок 9.
Обновленный список пользователей
Рисунок 10.

  • avatar
  • 0

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.