как отправить форму в базу данных
Website-create.ru
В этом уроке мы научимся вносить в базу данных MySql, данные введенные пользователем в форму. Вы узнаете, как соединяться с базой данных MySql из кода веб страницы, а также обрабатывать и вносить данные в базу.
В прошлом уроке я рассказала Вам о том, как установить Денвер на Ваш компьютер, как создать свою базу данных, пользователя для нее, как создать таблицу в базе данных и мы заполнили ее одной записью.
В этом уроке мы создадим html документ для ввода пользовательской информации, а также php файл-обработчик этой информации, который будет обрабатывать данные, соединяться с базой данных MySql и вставлять туда новые записи.
Переходя от слов к делу давайте начнем.
Добавляем пользовательские данные в базу MySql с веб страницы
Первый этап: создаем html форму для ввода данных
С самого начала нам нужно подготовиться к работе с php, MySql и к тестированию написанного кода на локальном компьютере. Для этого:
1. Запустите Denwer на своем компьютере.
2. Откройте виртуальный диск, созданный Денвером (например у меня это диск “Z”). Откройте его, дальше: home – localhost – www – там создайте новую папку и дайте ей название (я дам название “db1”).
3. Если Вы работаете в Adobe Dreamweaver, то зайдите в менеджер сайтов, там нажмите на кнопку «New», в качестве пути выберите путь до только что созданной папки, в поле выше можете дать имя сайту, после этого нажмите Save – Done. После всего этого в правой панели Adobe Dreamweaver появится Ваша папка.
1. Сейчас мы создадим обычный html файл (назовем его info_form.html и сохраним в только что созданной папке db1) и пропишем там код формы для ввода информации. В нашей таблице users базы данных new_db есть 4 поля, которые мог бы заполнить пользователь (поле id будет заполняться автоматически). Исходя из этого можно создать код следующего вида:
Здесь в параметре «action» нашей формы прописан файл form.php. Он будет являться файлом обработчиком, который мы создадим далее.
Давайте еще создадим файл style.css для придания стилей нашей форме. Он уже подключен в коде, так что осталось только создать его, поместить в ту же папку, что и html файл и прописать в нем следующий код:
Теперь форма выглядит следующим образом:
Однако, если Вы введете данные и попытаетесь отправить форму, то увидите ошибку, так как никакого файла form.php, лежащего в каталоге scripts не существует.
Создать файл-обработчик – это наша следующая задача.
2. Давайте внутри папки db1 создадим папку с названием «scripts». В ней мы будем сохранять все наши скрипты взаимодействия с базой данных MySql.
После того как папка будет создана, создайте новый php файл и сохраните его в папке scripts под именем form.php.
Но перед тем как заняться непосредственно файлом-обработчиком информации нужно сначала подключиться к нашей базе данных. Я предлагаю создать для этого отдельный файл и вот почему:
Скорее всего в Вашем проекте Вам придется соединяться с базой данных MySql не только из одного файла. Как правило с базой данных взаимодействуют различные файлы проекта.
Очень непрактично в каждом таком файле прописывать один и тот же код подключения к базе. А если таких файлов, например, будет 50 и в один прекрасный день вы смените пароль для пользователя и Вам придётся искать все эти 50 файлов и в каждом делать исправление.
Гораздо удобнее использовать для подключения отдельный файл, который будет подключен к каждому из файлов, где должно быть соединение с базой данных MySql. В таком случае вносить исправления нужно будет только в один файл.
Итак, давайте создадим новый php файл, назовем его connect.php и поместим в папку для скриптов. В нем пропишем код соединения с нашей базой данных MySql, а также код, который будет сообщать об ошибках в случае их возникновения. Обратите внимание, что в качестве параметров Вам необходимо будет прописать Ваше имя пользователя, Ваш пароль и Ваше имя базы данных. В качестве хоста должен быть localhost.
Теперь перейдем в файл form.php и подключим в него файл connect.php с помощью следующего кода:
Если сейчас Вы попробуете отправить форму, то увидите после отправки пустую веб страницу. Это нормально, так как мы просто соединились с базой и пока больше ничего не выводим.
Если Вы увидели сообщение об ошибке, то проверьте правильность всех параметров (имя пользователя, пароль, имя хоста: localhos, имя базы данных), а также будьте уверены, что Ваш Денвер включен.
3. Мы удачно соединились с базой данных MySql, а теперь нам нужно принять введенные в форму данные в наш файл обработчик. В этом нам помогут атрибуты “name”, которые присутствуют в html документе.
Для получения данных мы воспользуемся специальной переменной php, снабжающей нас всей информацией из веб-формы. Эта переменная называется “$_REQUEST”.
Пропишите в файле form.php после подключения файла connect.php следующий код:
4. Данные в файл мы получили и занесли их в переменные. Теперь нужно отправить эти данные в нашу таблицу базы данных MySql. Для этого ниже нужно прописать следующий код:
Здесь сначала мы формируем запрос, говоря, что нам нужно вставить соответствующие переменные в соответствующие поля таблицы “users”. Заносим этот запрос в переменную “$insert_sql”. А потом с помощью специальной функции mysql_query исполняем данный запрос.
Если сейчас Вы заполните и отправите форму, а потом посмотрите в таблицу “users” Вашей базы данных, то увидите новую запись, которая там появилась после отправки.
5. Мы вставили новую запись из веб страницы в таблицу базы данных MySql. Теперь хочется немного коснуться того формата, в котором вставляются наши данные.
Во-первых, нужно позаботиться о той ситуации, когда человек, заполняя форму может поставить ненужные пробелы в начале ввода информации. Их нужно обрезать.
Во-вторых, у нас существует поле для Facebook. Если мы в последующем захотим выводить эту информацию как ссылку, то необходимо позаботиться, чтобы данные в этом поле хранились в правильном формате (то есть «http://www.facebook.com/идентификатор на facebook»). Но пользователь не всегда будет вводить эти данные так как нам нужно. Он может ввести: “www.facebook.com/идентификатор на facebook”, “facebook.com/идентификатор на facebook” или просто “/идентификатор на facebook”.
Этих ситуаций нужно избегать. Для этого давайте подкорректируем наш код. Возможные лишние пробелы мы обрежем при помощи функции trim, а проверять правильность введенного url для facebook будет функция preg_match. Таким образом весь код файла form.php будет выглядеть следующим образом:
О функции preg_match:
Это функция для поиска с регулярными выражениями.
Первый параметр в скобках – это регулярное выражение, второй – строка, где нужно искать.
Функция возвращает только первое совпадение: 0 – если совпадений нет, 1 – если совпадение есть.
Попробуйте теперь намеренно заполнить форму, сделав ненужные пробелы в начале заполнения какого-нибудь из полей и введя адрес для facebook без http:// или вообще введя только идентификатор facebook. Отправьте запрос, а потом перейдите в базу данных и Вы увидите, что несмотря на не совсем корректное заполнение, данные имеют именно тот вид, который нам нужен.
На этом буду заканчивать данный урок. Все файлы этого урока Вы можете скачать в исходниках (только не забудьте исправлять параметры на свои в файле connect.php).
А в следующем уроке мы научимся извлекать информацию из базы данных MySql, выбирать нужные записи и выводить их на экран. Чтобы не пропустить следующий урок подписывайтесь на обновления блога с помощью формы подписки, которую Вы видите ниже.
Оставляйте свои комментарии и делитесь с друзьями с помощью кнопок социальных сетей.
УЧЕБНЫЕ МАТЕРИАЛЫ
Web-верстка, компьютерная графика,
мультимедиа
Уроки PHP и MySQL
Уроки PHP и MySQL. Урок 5. Формы и базы данных в web
Урок посвящен языку PHP и базе данных MySQL. Рассматривается взаимодействие PHP и MySQL, способы занесения данных из формы в базу данных и вывод данных из базы на web-страницу.
В данном уроке PHP и MySQL Вам предстоит решить следующие задачи:
1. Создать базу данных, содержащую две таблицы: справочник пород кошек, таблицу сведений о потерявшихся животных.
2. Создать web-страницу, на которых будут размещена форма для подачи объявлений о потерявшихся кошках. Данные из этих объявлений заносятся в соответствующую таблицу сведений о потерявшихся животных.
3. Создать web-страницу, позволяющую просматривать информацию из базы данных. Данные в таблицы базы данных будут вноситься из объявлений, размещенных посетителями на сайте.
Задание № 1. Создание базы данных
Наши уроки PHP и MySQL начнем с создания базы данных.
Сначала необходимо создать таблицу-справочник пород и таблицу сведений о потерявшихся животных. Структура таблиц следующая:
Название поля | Имя поля | Тип поля | Описание |
идентификационный номер породы | id | Числовой | |
название породы | name_por | Символьный | |
характеристика породы | describe_por | Символьный | В поле хранится имя файла, который содержит описание породы и фотографию. |
Сведения о потерявшихся кошках
Название поля | Имя поля | Тип поля | Описание |
идентификационный номер кошки | id | Числовой | |
порода | por | Символьный | |
дата нахождения кошки: день месяц год | day month year | Символьный Символьный Символьный | |
место нахождения кошки | place | Символьный | |
пол кошки | pol | Символьный | |
возраст кошки | age | Символьный | Если возможно указать примерный возраст |
описание кошки | outline | Символьный | Окрас, состояние здоровья и т. д. |
координаты нашедшего | contact | Символьный | Любая контактная информация: телефон, e-mail, адрес |
дополнительная информация | dop_info | Символьный | Например, кошка больна, есть клеймо, кормящая и пр. |
В наших уроках PHP и MySQL рассмотрим два способа создания таблицы базы данных.
1. С помощью клиента MySQL.
Способ 1. Создание базы данных с помощью клиента MySQL
1. Запустите Denwer ярлыком Start Denwer.
3. Создайте новую базу данных. Для этого впишите в поле Создать базу данных имя базы catsdb, кодировку установите utf8_general_ci и нажмите кнопку Создать (рис. 2).
4. Если все было выполнено верно, то будет выведено сообщение об удачном создании базы.
5. Перейдите в базу данных catsdb, нажав соответствующую строку в левой панели (рис. 3).
6. Добавьте в базу данных таблицу Справочник пород, назовите ее: spravpor (структура таблицы и назначение полей приведены в таблице 1 Справочник пород). Для этого:
b. В открывшемся окне заполните данные по структуре таблицы (рис. 5).
c. После заполнения всех полей нажмите Сохранить. Перейдите в таблицу spravpor, нажав соответствующую строку в левой панели (рис. 6).
d. Откроется сама таблица (рис. 7).
Способ 2. Создание базы данных средствами PHP
В данном уроке PHP и MySQL создадим таблицу с помощью сценария PHP, но при этом база данных должна уже быть создана! В листинге 1 приведена программа создания таблицы под именем species средствами PHP. Структура таблицы species аналогична структуре таблицы spravpor.
1. Проанализируйте приведенные в листинге 1 PHP-сценарий и комментарии к нему в файле species.php.
2. Реализуйте код из листинга 1. Для этого:
3. После выполнения сценария убедитесь, что таблица species создана в базе данных catsdb (рис. 9, 10).
Листинг 1. Создание таблицы с помощью сценария PHP (файл species.php)
Комментарии к листингу 1:
1. Здесь адрес сервера MySQL — localhost (такой адрес указывается в случае если работа с базой данных ведется на локальном компьютере или компьютере где располагаются файлы с php-сценариями).
4. Любой файл, содержащий PHP-сценарий, имеет расширение php, независимо от того, встроен сценарий в HTML-текст или полностью написан на PHP.
5. Многострочные комментарии должны начинаться с символов /* и завершаться символами*/. Однострочные комментарии предваряются символами //. Закрывать их не нужно.
6. В языке PHP имя переменной начинается со знака доллара ($), за которым следует собственно имя переменной. В именах переменных различаются верхний и нижний регистры. Имя переменной должно начинаться с буквы или символа подчеркивания, за которыми могут следовать буквы, цифры или знаки подчеркивания. Буквы должны быть из диапазона A—Z.
7. В конце каждого оператора php обязательно ставится точка с запятой.
8. Функции для работы с MySQL имеют префикс mysql_ (см. приложение 2).
В нашем уроке PHP и MySQL, используя программу из листинга 1 в качестве образца, напишите сценарий PHP для создания таблицы сведений о потерявшихся кошках (см. таблицу 2). Таблицу назовите catspotery, а файл сценария catspotery.php. Результат на рис. 11, 12
Добавление записи в базу данных
Мы подготовили таблицы базы данных. Сейчас на web-странице разместим форму подачи объявлений для тех, кто потерял кошку. Задача — обеспечить занесение информации из форм в соответствующие таблицы базы данных.
Примерный вид формы представлен на рис. 13.
При выполнениии данного урока PHP и MySQL создайте web-страницу с формой, как на рис. 13. Сохраните под именем forma_cats.html. В качестве файл-обработчика укажите poter_dobavl.php. Не забывайте о корреляции полей формы и полей соответствующей таблицы в базе данных и кодировка файла должна быть в utf-8 (Кодировка – Преобразовать в UTF-8).
1. Используя программу из листинга 2 в качестве образца, напишите PHP-сценарии, осуществляющие вставку записей в таблицы сведений о пропавших кошках.
2. Проверьте работоспособность формы. В базу данных (рис. 14) должна сохраняться информация, введенная в форму (рис. 13).
3. Наполните базу 5-ю записями.
Листинг 2. Занесение данных формы в базу данных (файл poter_dobavl.php)
Извлечение записей из базы данных
В нашем уроке PHP и MySQL Вы реализовали технологию заполнения базы данных.
Теперь необходимо реализовать задачу вывода информации из базы данных. Т.е. необходимо представить на сайте информацию из базы данных в следующем виде:
Код сценария, представленный в листинге 3, выводит информацию из базы данных на web-страницу, в соответствии с рисунком 15.
Листинг 3. Вывод информации из базы данных на Web-страницу. Передача параметров (файл vivod_poter.php)
Изучите код сценария из листинга 3 и реализуйте его. Проверьте работоспособность сценария.
Реализуйте возможность работы со справочником пород spravpor. Для этого:
1. Добавьте к созданной таблице поле foto, в котором будет храниться ссылка на фотографию породы.
2. Используя запросы SQL (рис. 16), заполните базу 3-мя записями про породы кошек (длинношерстные, полудлинношерстные, короткошерстные) (рис. 17). Все необходимые материалы находятся в папке cats.
3. Реализуйте web-страницу, на которую выводятся данные из справочника пород. У каждой породы должна быть фотография.
4. Если скрипт обрезает описание породы, увеличьте длину поля describe_por, чтобы можно было вводить длинные описания.
Вставка данных в базу данных MySQL
В этом уроке вы узнаете, как вставлять записи в таблицу MySQL с помощью PHP.
Вставка данных в таблицу базы данных MySQL
После создания таблицы, следующим шагом будет ввод данных в таблицу. Чтобы ввести данные в таблицу, мы должны соблюдать определенные правила:
Давайте сделаем SQL-запрос, используя оператор INSERT INTO с соответствующими значениями, после чего мы передадим его функции PHP mysqli_query() для вставки данных в таблицу.
Следующий пример вставляет новую строку в таблицу persons, указывая значения для полей first_name, last_name и email в трех различных версиях: с использованием синтаксиса объектно-ориентированной процедуры MySQLi, процедурный MySQLi и процедуры PDO.
Пример
Примечание: Если столбец — это AUTO_INCREMENT (например, столбец «id»), то его не нужно указывать в запросе SQL. Этот модификатор сообщает MySQL автоматически присвоить значение этому полю.
Вставка нескольких строк в таблицу
Вы также можете вставить сразу несколько строк в таблицу с помощью одного запроса на вставку. Для этого включите в оператор INSERT INTO несколько списков значений столбцов, где значения столбцов для каждой строки должны быть заключены в круглые скобки и разделены запятыми.
В следующем примере вставим еще несколько строк в таблицу persons:
Пример
Теперь перейдите в phpMyAdmin и проверьте данные таблицы persons внутри базы данных. Вы обнаружите, что значение столбца id присваивается автоматически путем увеличения значения предыдущего идентификатора на 1.
Чтобы облегчить чтение синтаксиса, мы, в отличие от предыдущего примера, разбиваем его на отдельные запросы и добавляем их друг к другу с помощью оператора (.=) :
Пример
Поскольку точка с запятой является частью SQL-запроса, а не оператором PHP, мы добавляем ее в кавычки запроса.
Вставка данных в БД из HTML-формы
В предыдущем разделе мы узнали, как вставлять данные в базу данных из сценария PHP. Теперь посмотрим, как мы можем вставить данные в базу данных, полученную из HTML-формы. Давайте создадим HTML-форму, которую можно использовать для вставки новых записей в таблицу persons.
Создадим простую HTML-форма с тремя текстовыми полями и кнопкой отправки:
Пример
Получение и вставка данных формы
Ниже приведен полный код нашего файла insert.php:
Пример
Примечание: Функция mysqli_real_escape_string() экранирует специальные символы в строке и создает допустимую строку SQL для защиты от атаки, при которой злоумышленник может внедрить или выполнить вредоносный код SQL.
Это простой пример вставки данных формы в таблицу базы данных MySQL. Вы можете расширить этот пример и сделать его более интерактивным, добавив проверки для пользовательского ввода перед вставкой его в таблицы базы данных. Ознакомьтесь с руководством по проверке форм PHP, чтобы узнать больше о валидации и проверке вводимых пользователем данных с помощью PHP.
Работа с формами в PHP
Формы
Формы — это часть языка HTML. Формы нужны для передачи данных от клиента на сервер. Чаще всего формы используются для регистрации пользователей, заполнения анкет, оформления заказа в интернет магазине, и так далее.
Через формы можно отправлять как простую текстовую информацию, так и файлы.
Большую часть времени программирования на PHP вы будете так или иначе работать с формами и данными из них.
HTML описывает то, из каких элементов состоит форма, и как она выглядит. Но без принимающей стороны, то есть сервера, который принимает эти данные и обрабатывает их нужным образом, создавать формы нет никакого смысла.
PHP содержит множество средств для работы с формами. Это позволяет очень просто решать типичные задачи, которые часто возникают в веб-программировании:
Практически любой современный сайт содержит как минимум несколько разных HTML-форм.
Отправка формы
Рассмотрим один типичный пример — форма обратной связи. Для связи пользователей с авторами сайта, как правило, используются формы обратной связи, где человек указывает имя, почту для обратной связи и текст своего сообщения.
Такая форма в HTML может выглядеть следующим образом:
Это очень простая форма, состоящая из трёх полей и одной кнопки отправки.
Почти весь приведённый код описывает внешний вид и содержание формы, но следует обратить внимание на два атрибута тега
Тут есть два важных отличия от первого примера:
PHP автоматически сохраняет все загруженные файлы во временную папку на сервере. Но хранить там файлы нельзя, потому что эта директория периодически очищается, и ссылку на такой файл нельзя дать на сайте. Решение здесь только одно — переместить загруженный файл в другую папку. Перемещение файла всегда выполняют сразу после загрузки.
Перемещение загруженного файла
Код для перемещения файла в новую папку:
Функция move_uploaded_file() выполняет два действия:
Валидация формы
Валидация формы — это проверка содержимого её полей. Задача такой проверки — убедиться, что необходимые поля заполнены, а значения в них соответствуют ожидаемому формату.
Так, например, при регистрации пользователя на сайте, он должен заполнить поля с адресом электронной почты и придумать себе пароль. Оба поля обязательны к заполнению, но значение из поля email также должно быть корректным email-адресом.
Помимо текстовых значений формы, можно проверять формат и размер загружаемых файлов.
Общий подход к валидации
При выполнения валидации любой формы порядок действий будет всегда одним:
Записать в базу данных через форму на сайте
Запишем в базу данных. В прошлый раз мы создали таблицу, разобрались со свойством AUTO INCREMENT. Теперь мы подошли к следующему шагу – запись в базу данных.
К примеру, когда пользователь заходит на сайт заполняет поля при регистрации, либо заполняет поля в профиле, либо какие-то данные по товару и т.д.
В общем где вы видите свободную строчку для заполнения данными, то это все работает по одному принципу!
Принцип работы скрипта для заполнения базы данных.
Создать таблицу в базе данных.
Выбрать таблицу для записи данных с формы.
Закрыть соединение с базой данных.
+ И как же не посмтреть результат записи в базу данных!?
На самом деле если рассматривать данный скрипт, то я не старался его усложнить, а сделал самый простой, как только возможно! Чтобы вы смогли понять, даже с нулевой подготовкой.
А уж дальнейшие усложнения – будут зависеть от вас!
Соединение с базой данных.
Html форма для записи данныйх в БД.
Условия и запись в соответствующие поля в таблице:
//Если переменная Name не пустая
//Вставляем данные, подставляя их в запрос
Для иллюстрации смотрим –на поля в таблице базы данных из прошлой темы:
Html форма для записи данныйх в БД.
Если запись прошла успешно, либо произошла ошибка: