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

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

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

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

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

Если Вы пропустили прошлые выпуски по базам данных MySql, то вот ссылки на них:

1. Создание базы данных MySQL

2. Вносим пользовательские данные в базу данных MySql

3. Вывод информации из базы данных 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.

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

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 урока этой серии) у Вас есть приложение, с помощью которого Вы можете добавлять новые записи в базу данных, выводить их в списке, либо искать и выводить по нужным имени и фамилии, а также редактировать уже имеющиеся записи.

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

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

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

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

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

Создание базы данных MySQL

Вносим пользовательские данные в базу данных MySql

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

Понравилась статья? Поделись с друзьями!


Не нашли того, что искали? Воспользуйтесь расширенным поиском!

Будьте в курсе новых публикаций на Блоге!

rss podpiska

Введите Ваш E-mail:


Комментарии к этой статье:

Комментарий добавил(а): Ольга
Дата: 2014-04-03

Очень понравился урок, очень понятно все написано. Спасибо

Комментарий добавил(а): Валерий
Дата: 2014-05-05

Анна, спасибо за урок, все доходчиво!

Комментарий добавил(а): Артем(Kurtojkeee)
Дата: 2014-05-14

Впечетляющие уроки, спасибо

Комментарий добавил(а): Андрей
Дата: 2014-05-23

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:homemysite.ruwwwedit.php on line 5 вот такая ошибка лезит, помогите а ?

Комментарий добавил(а): Александра
Дата: 2014-08-27

Все просто и понятно. Ваши уроки мне очень помогли. Спасибо большое.

Комментарий добавил(а): Александр
Дата: 2014-10-10

Отличная работа! Но как можно задать поиск по нескольким значениям?

Комментарий добавил(а): Татьяна
Дата: 2015-02-26

Большое спасибо за уроки. Среди Ваших рекомендаций все получилось на ура!

Комментарий добавил(а): Граф
Дата: 2015-08-14

Пишу программу для автосервиса .. нужное для себя нашёл .. и без особого труда подогнал под свои скрипты ... Автору респект и уважуха !!! Палец вверх

Комментарий добавил(а): Олег
Дата: 2015-08-20

"Александр.Но как можно задать поиск по нескольким значениям?" SELECT * FROM table WHERE id="" AND imya = "КАТЯ" AND familiya = "РОЖКОВА"; После WHERE мы пишем условия, если их много, то между ними AND или || в зависимости от того, что нужно.

Комментарий добавил(а): Татьяна
Дата: 2015-10-19

Если Андрею еще актуально (Май 2014))), то запись $select_sql = "SELECT * FROM users WHERE id= $id"; надо заменить на $select_sql = "SELECT id, first_name, last_name FROM users"; то есть вместо звездочки подставить значения. Промучилась всю ночь)))

Комментарий добавил(а): Татьяна
Дата: 2015-10-19

Упс... С такой записью выбирается только первая строка в таблице

Комментарий добавил(а): Анатолий
Дата: 2016-04-14

Можно всё это написать в одном файле (edit.php). Файл updete.php лишний

Комментарий добавил(а): Алена
Дата: 2016-05-08

Пишет "Запись успешно обновлена", но ничего в базе не обновляет...

Комментарий добавил(а): Sirinello
Дата: 2016-06-24

Плюсую как обычно этим урокам. Отлично подано.

Комментарий добавил(а): Эдуард
Дата: 2016-08-07

Спасибо. Всё отлично объясняете.

Комментарий добавил(а): Alim
Дата: 2016-10-05

Анна добрый день! Ваши статьи супер!!!! Вы не могли бы сделать форму редактирования с вэб сайта?

Комментарий добавил(а): aizek
Дата: 2016-10-24

По замене текста я использовал вот этот вариант может кому пригодится - https://www.youtube.com/watch?v=U3hMBViOnHU

Комментарий добавил(а): Ильдар
Дата: 2016-11-19

Пишет "Запись успешно обновлена", но ничего в базе не обновляет... Та же самая проблема :(

Добавить Комментарий:


Введите сумму чисел с картинки:

Почему стоит подписаться на обновления блога

Будьте в курсе новых публикаций на Блоге!

rss podpiska

Введите Ваш E-mail: