Изменение информации в базе данных MySql из веб страницы

Продолжаем серию уроков по работе с базами данных MySql. В этом уроке мы научимся редактировать информацию в базе данных MySql прямо из веб страницы.
дополнительные материалы к урокам
Такие возможности могут Вам понадобиться, когда Вы предоставляете пользователю Вашего ресурса заполнять свой профиль, а также редактировать его. Также эти знания пригодятся, если Вы пишите администраторский раздел для сайта и хотите иметь возможность редактирования записей не заходя в базу данных.

В прошлых уроках мы создали базу данных MySql, заполнили ее, создали код для вывода информации из базы, а также для внесения новых записей в базу прямо из веб страницы.

В данном уроке я продолжу использовать уже имеющуюся структуру файлов. Все файлы данного урока есть в исходниках к этому уроку.

Итак, давайте начнем!

Редактируем запись в базе данных MySql из веб страницы.

Что нам нужно сделать?

1. Создаем кнопку, которая будет запрашивать все записи из базы.

2. Создать файл, в котором списком будут выводиться все имеющиеся в базе данных записи (для того, чтобы выбрать ту, которую хотим редактировать).

3. При выборе определенной записи в работу включается файл-обработчик, который забирает из базы данных всю информацию по нужной нам записи.

4. Выбранная информация вставляется в поля формы для редактирования, которую мы создадим.

5. После редактирования, при помощи определенного SQL-запроса информация отправляется на обновление в базу данных MySql.

1. Первое, что мы сделаем – это создадим файл “select_change.php” и разместим его в том же каталоге, что и все наши основные файлы (то есть в основном каталоге).

Пока мы не начали с ним работать давайте откроем файлы: “search_user.html”, “info_form.html”, “select_user.php”, “all_users.php” и добавим ссылку на этот файл для того, чтобы он был доступен из всех файлов нашего приложения (это для удобства, чтобы каждый раз не прописывать его адрес в адресной строке, когда мы будем тестировать наши веб страницы).

Добавляем следующую строку в каждый из файлов перед закрывающим тегом body.

<a href="select_change.php">Редактировать запись базы данных</a>

 

2. Теперь откроем сам файл “select_change.php”. Мы будем выводить только имя и фамилию из базы для выбора пользователя, информацию о котором мы хотим редактировать.

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

Выводить данные мы будем как радиокнопки. Это мы делаем для того, чтобы можно было выбрать пользователя (притом только одного).

Из базы мы будем запрашивать только 3 параметра: это id, first_name, last_name. Последние два будут выводиться на экран для того чтобы мы могли определиться какую информацию из базы данных будем редактировать. Параметр же id будет невидим (он будет значением атрибута value), но он необходим для того, чтобы программа могла идентифицировать в базе данных выбранный элемент (фамилии и имена могут повторяться, а id всегда индивидуален).

Обратите также внимание на способ вывода информации в этом файле. Вы можете увидеть такие символы как %s.

Принцип здесь такой: в двойных кавычках в функции “printf” выводится html код, вместо определенной переменной (например, такой как “$row[‘first_name’]”) мы ставим якоря — %s. А после того как закрылись двойные кавычки, мы перечисляем эти переменные, соответствующие поставленным якорям. Это удобно, когда работаешь с функцией “printf”, однако следует следить за порядком якорей и перечисляемых переменных, так как они будут подставлены именно в том порядке, в котором Вы их перечисляете.

Все это заключено в тег формы, в которой action=»edit.php». Файл edit.php мы создадим в следующем шаге.

Итак, код нашего файла “select_change.php” будет выглядеть следующим образом:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel="stylesheet" href="style.css" type="text/css">
<title>Выбор пользователя для редактирования.</title>
</head>
<body>
<form action="edit.php" method="post">
<fieldset>
<?php
require 'scripts/connect.php';
$select_sql = "SELECT id, first_name, last_name FROM users";
$result = mysql_query($select_sql);
$row = mysql_fetch_array($result);
do
{
printf("<input type='radio' name='user' value='%s'>%s %s<br/><br/>", $row['id'], $row['first_name'],  $row['last_name']);	
}
while($row = mysql_fetch_array($result))
?>
</fieldset>
<fieldset>
<input type="submit" value="Выбрать элемент">
</fieldset>
</form>
<a href="info_form.html">Добавить пользователя</a><br/><br/>
<a href="search_user.html">Вернуться к поиску</a><br/><br/>
</body>
</html>

 

А если загрузить страницу в браузере, то можно увидеть примерно следующее:

Вывод списка имен из базы данных

3. Создайте файл “edit.php” и поместите его там же в основном каталоге.

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

Кроме того, в этой форме можно будет изменить один или несколько параметров (например, имя, фамилию и т.д.).

Во-первых, программа должна понимать, какую запись Вы от нее требуете. А для этого должен быть передан параметр id. Имя для input в прошлом файле мы дали — ”user”, там же у нас хранится в атрибуте value нужный id. А следовательно получить его можно запросив при помощи “$_REQUESR[‘user’]”. И далее занести результат в переменную ”$id”.

Во-вторых, нужно сформировать запрос, который будет выводить из нашей таблицы базы данных всю информацию о записи с указанным идентификатором.

В-третьих, нужно исполнить этот запрос и вывести каждый параметр в предусмотренное для него поле (в атрибутах value).

Вот код всего вышеописанного:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel="stylesheet" type="text/css" href="style.css">
<title>Вносим изменеиния</title>
</head>

<body>
<?php
require 'scripts/connect.php';
$id = $_REQUEST['user'];
$select_sql = "SELECT * FROM users WHERE id= $id";
$result = mysql_query($select_sql);
$row = mysql_fetch_array($result);
printf("<form action='scripts/update.php' method='post' name='forma'>
<fieldset>
<input type='hidden' name='id'  value='%s'><br/>
<label for='first_name'>Имя:</label><br/>
<input type='text' name='first_name' size='30' value='%s'><br/>
<label for='last_name'>Фамилия:</label><br/>
<input type='text' name='last_name' size='30' value='%s'><br/>
<label for='email'>Email:</label><br/>
<input type='text' name='email' size='30' value='%s'><br/>
<label for='facebook'>Facebook</label><br/>
<input name='facebook' type='text'  size='30' value='%s'>
</fieldset>
<br/>
<fieldset>
<input id='submit' type='submit' value='Редактировать запись'><br/>
</fieldset>
</form>",$row['id'], $row['first_name'], $row['last_name'], $row['email'], $row['facebook']);
?>

<a href="info_form.html">Добавить пользователя</a><br/><br/>
<a href="search_user.html">Вернуться к поиску</a><br/><br/>
<a href="select_change.php">Вернуться к выбору записей для редактирования</a><br/><br/>
</body>
</html>

 

Обратите внимание, что у нашей формы action=’scripts/update.php’. Этот файл мы создадим в следующем шаге.

Также обратите внимание на то, что параметр id также передается, но мы его не увидим, так как ему присвоен type=’hidden’. Передать его нужно, но лучше не давать возможности его менять, чтобы не допустить ошибок.

А вот и результат, которого мы пока что достигли:

автоматическое заполнение формы данными из базы

4. Что же, осталось совсем немного!

Нужно создать файл update.php и положить его в папку со скриптами.

Что будет делать данный файл?

Он получит из предыдущего файла все введенные значения и каждое занесет в переменную.

Потом он сформирует запрос к базе данных, в котором попросит обновить запись с учетом переданного идентификатора, подставив в соответствующее поле соответствующую переменную.

После он отправит запрос на исполнение и выведет нам результат в виде текстового сообщение (либо все прошло хорошо, либо произошла ошибка).

Вот код этого файла:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel="stylesheet" type="text/css" href="../style.css">
<title>Untitled Document</title>
</head>

<body>
<?php
require 'connect.php';
$id=$_REQUEST['id'];
$first_name=trim($_REQUEST['first_name']);
$last_name=trim($_REQUEST['last_name']);
$email=trim($_REQUEST['email']);
$facebook=trim($_REQUEST['facebook']);

$update_sql = "UPDATE users SET first_name='$first_name', last_name='$last_name', email='$email', facebook='$facebook' WHERE id='$id'";
mysql_query($update_sql) or die("Ошибка вставки" . mysql_error());
echo '<p>Запись успешно обновлена!</p>';
?>
<a href="../info_form.html">Добавить пользователя</a><br/><br/>
<a href="../search_user.html">Вернуться к поиску</a><br/><br/>
<a href="../select_change.php">Вернуться к выбору записей для редактирования</a><br/><br/>
</body>
</html>

 

А вот и результат работы этого скрипта:
Изменение имени
Отправка изменений в базу данных
Вывод измененных результатов

Итак, на данный момент (если Вы прошли все 4 урока этой серии) у Вас есть приложение, с помощью которого Вы можете добавлять новые записи в базу данных, выводить их в списке, либо искать и выводить по нужным имени и фамилии, а также редактировать уже имеющиеся записи.

Согласитесь, не мало. И все это не заходя в саму базу. Все происходит из веб страниц.

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

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

Также жду Ваших отзывов и комментариев.

Удачи Вам, и до встречи в следующем уроке!

Leave a Reply