В этом посте хочу рассказать, как передать в Базу Данных, введенные данные в форму
. И так мы создаем простую форму, где у нас будет два поля: имя пользователя и его электронная почта:
Эта форма может применятся для регистрации нового пользователя, для рассылки новостей, для сбора статистики, да для чего угодно... В общем в эту форму пользователь забивает свои данные: имя и почту, нажимает на кнопку и дальше данные переходят в php скрипт:
$name = $_POST["name"]; $email = $_POST["email"]; $result = mysqli_query("INSERT INTO user (name, email) VALUES ("$name", "$email")"); if ($result) { echo "Данные успешно сохранены!"; } else { echo "Произошла ошибка, пожалуйста повторите попытку."; }
Что же в этом скрипте происходит? Сейчас разберемся!
Введенные в форму данные, методом POST переходят в php скрипт (который написан выше), и при помощи глобального массива $_POST данные формируются в переменные $name и $email:
$name = $_POST["name"]; $email = $_POST["email"];
После того, как переменные готовы для занесения в базу, составляем запрос. Но прежде Ваши скрипты должны быть уже подключены к БД, как подключиться к БД, я писал в этой теме: . Сам запрос выглядит так:
$result = mysqli_query("INSERT INTO user (name, email) VALUES ("$name", "$email")");
В этом коде мы обозначили, что в ячейки name и email , которые находятся в таблице user , будут добавлены следующие переменные: $name и $email .
Далее, если все прошло успешно, мы получим сообщение из условия:
Данные успешно сохранены!
Если же возникли какие то проблемы и данные не были занесены, мы получим сообщение об ошибке:
Произошла ошибка, пожалуйста повторите попытку.
Вот и все!
*** *** *** *** ***
При желании можно добавить больше полей для ввода информации, например нам необходимо добавить поле для ввода города пользователя. У нас уже есть готовый скрипт (написан выше), теперь просто добавим поле Ваш город
, переменную назовем: $city . И так в форму ввода данных, после:
Ваш E-mail:
добавляем:
Ваш город:
В php скрипте, после:
$email = $_POST["email"];
добавляем:
$city = $_POST["city"];
Ну и конечно в запросе добавляем тоже, вот так:
$result = mysqli_query("INSERT INTO user (name, email, city) VALUES ("$name", "$email", "$city")");
Вот, что должно получится в итоге:
Форма ввода:
Скрипт:
$name = $_POST["name"]; $email = $_POST["email"]; $city = $_POST["city"]; $result = mysqli_query("INSERT INTO user (name, email, city) VALUES ("$name", "$email", "$city")"); if ($result == true) { echo "Данные успешно сохранены!"; } else { echo "Произошла ошибка, пожалуйста повторите попытку."; }
Как видите ни чего сложного! При необходимости можно добавить ещё поле, и ещё, и ещё...
Комментарии, перенесенные из блога
СЕРГЕЙ
14.09.2016 в 01:25
День добрый!
Интересует такой вопрос: каким образом проще всего организовать хранение данных и настроек программы без использования бд? Не хочется привязываться к MySQL или Access ..
ADMIN
14.09.2016 в 22:14
Здравствуйте!
Properties.Settings
App.Config
XML файл
сериализация
Попробуйте выбрать что-нибудь из этого из списка.
НИКОЛАЙ
16.09.2016 в 02:28
Здравствуйте, как удалить выделенную строку в dataGridVIew из dataGridVIew и phpMyAdmin.
PhpMyAdmin? Это лишь оболочка для работы с базой данных, можете пояснить?
НИКОЛАЙ
18.09.2016 в 02:24
нужно что бы выделенная строка удалялась из DataGridView и из базы данных.
ADMIN
19.09.2016 в 07:00
Как удалить строку в базе данных Mysql — добавил статью.
НИКОЛАЙ
20.09.2016 в 09:20
Спасибо огромное.
ДИМА
20.09.2016 в 10:24
Здравствуйте, а можно данный способ реализовать не через DataGridView, а через ComboBox? Если да, то как? Спасибо.
ADMIN
22.09.2016 в 03:21
Привет. Пример:
ГЕННАДИЙ
22.09.2016 в 18:25
почему мне в базу данных вноситься такой текст System.Windows.Forms.TextBox, Text: ге
К стате вот это (ге) к конце это написано гена хоть в настройках таблицы указан текст.слово гена должно было уместиться дальше я вывожу эту таблицу в свою программку и получается что он выводит мне весь этот ненужный текст
ADMIN
24.09.2016 в 04:17
Скорее всего неверно написан SQL запрос, например:
В textBox1 вводим имя: Гена.
Sql запрос: «Insert into имя таблицы values(textBox1, ..)»; Результат: System.Windows.Forms.TextBox
А нужно передавать: «Insert into имя таблицы values(textBox1.Text, ..)»;
Результат: Гена
ГЕННАДИЙ
24.09.2016 в 18:41
Да так оно и есть. СПасибо
СЕРГЕЙ
25.09.2016 в 11:51
Здравствуйте. А как реализовать добавление в БД через textBox?
ADMIN
26.09.2016 в 20:53
Всё тоже самое в принципе. Например, возьмём самый последний пример, в нём нужно:
//создаем параметры и добавляем их в коллекцию cmd.Parameters.AddWithValue("@Name", textBox1.Text); cmd.Parameters.AddWithValue("@LastName", textBox2.Text);
теперь параметры: Name и LastName получают значения введенные в textbox-ы и передают их в БД
ЛИНАРА
27.09.2016 в 17:45
Здравствуйте, как выделенную строку в dataGridVIew и phpMyAdmin?
ADMIN
29.09.2016 в 02:06
Я не знаю, как можно выделенную строку в phpMyAdmin. А в dataGridView, например это можно сделать с помощью события SelectionChanged.
PSH
30.09.2016 в 03:48
2Линара:
Если так хотите редактировать строки, возьмите инструмент а-ля HediSQL, настройте и изменяйте строки.
2admin
Доброго дня! Спасибо за материлы — всё очень круто изложено)
Вопрос: добавляю данные вот таким запросом (он тестовый):
String sql = "INSERT INTO users (`FIO`, `Tour`, `Count`, `Cost`, `Date`, `Passport`, `Birth`) VALUES ("Колян", "Москва", "1+1", 1100, "2011-11-11", "1111 1111", "9.11.1900");";
Данные вносятся всё ок, но вот в БД (mysql) вместо кириллицы оказываются «????».
Visual studio говорит, что System.String — последовательность Юникода.
Также пробовал:
ALTER DATABASE `test` COLLATE "koi8r_general_ci"; ALTER TABLE `users` COLLATE="koi8r_general_ci"; ALTER DATABASE `test` COLLATE "utf8_unicode_ci"; ALTER TABLE `users` COLLATE="utf8_unicode_ci";
Но не помогает..
В чем может быть дело? Разные кодирвки VS и БД? Или что?
Могли бы направить что почитать/поменять.
Спасибо
ADMIN
01.10.2016 в 09:49
Привет.
В БД (и в таблице) сопоставление utf_general_ci
Такое сопоставление разве есть? Возможно, utf8_general_ci?
Обычно создают БД Mysql выбирая сравнение utf8_general_ci, поэтому проблем с кириллицей не возникает, если конечно с клиента не приходят кракозябры на сервер.
COLLATION используется для сравнения, а в данном же случаи важна кодировка (charset). Поэтому для начала необходимо убедиться, что она выставлена на сервере верно, например в utf8, а не latin1.
При подключении через.net коннектор (по умолчанию) используется latin1, поэтому иногда требуется явно указать в строке подключения кодировку utf8:
MySqlConnection mycon; mycon = new MySqlConnection("server=127.0.0.1;uid=vasya;pwd=123;database=test;Charset=utf8;"); //MySqlConnectionStringBuilder: mysqlCSB.CharacterSet = "utf8";
PSH
01.10.2016 в 11:34
Вы правы, описался, utf8_general_ci!
Да помогло, ;Charset=utf8;
Спасибо огрмное!
СЕРГИЙ
02.10.2016 в 11:02
Спасибо за рабочий пример, нужный. Вопрос
Я создал текстовое поле в которое хотел бы вводить айпи-адрес базы данных, но не знаю как подставить эти данные вот сюда
String conStr = "server=@textBox2;user=test;" +
"database=test;password=test;";
Подскажите пожалуйста как вставлять данные из текстовых полей в windows form в эту конструкцию….
ADMIN
03.10.2016 в 11:50
"[email protected];user=...
Вообще лучше вместо такой строки использовать свойства, как в данной статье, либо метод String.Format()
OLGA2203
15.05.2017 в 20:14
String Connect = “Server=127.0.0.1;Port=3306;Database=base;Data Source=localhost;user=root;”; MySqlConnection con = new MySqlConnection(Connect); con.Open(); //Устанавливаем соединение с базой данных. MySqlCommand cmd = new MySqlCommand(); cmd.CommandText = @”INSERT INTO tovar(ID,Category,Name,TradeMark,Price,Photo,Size,Color,Material,Count) VALUES (@pr, @Category, @Name, @TradeMark, @Price, @Photo, @Size, @Color, @Material, @Count)”; cmd.Parameters.AddWithValue(“@pr”,counter); cmd.Parameters.AddWithValue(“@Category”, comboBox1.SelectedItem.ToString()); cmd.Parameters.AddWithValue(“@Name”, textBox1.Text); cmd.Parameters.AddWithValue(“@TradeMark”, textBox2.Text); cmd.Parameters.AddWithValue(“@Price”, Convert.ToInt32(textBox4.Text)); cmd.Parameters.AddWithValue(“@Photo”, textBox3.Text); cmd.Parameters.AddWithValue(“@Size”, textBox6.Text); cmd.Parameters.AddWithValue(“@Color”, textBox5.Text); cmd.Parameters.AddWithValue(“@Material”, textBox8.Text); cmd.Parameters.AddWithValue(“@Count”, Convert.ToInt32(textBox7.Text)); cmd.Connection = con; cmd.ExecuteNonQuery(); MessageBox.Show(“Добавление прошло успешно”, “Добавление прошло успешно”, MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
Выдается ошибка “Column ‘ID’ cannot be null”, убираю добавление в столбец ID – то же самое про следующий столбец пишет и т.д.
Если вношу какие-нибудь константные значения в скобках в VALUES, строка в базу добавляется.
Подскажите, пожалуйста, в чем проблема? Мне нужно записывать в базу данных именно вводимые через форму данные и значения
От автора: эх, из песни слов не выкинешь! Но их можно удалить, обновить или вставить другие. Главное, чтобы слова были внесены в базу данных. Сегодня мы расскажем, как происходит запись данных в MySQL и как это сделать правильно, чтобы песня звучала!
Добавление записей c помощью phpMyAdmin
В оболочке phpMyAdmin для администрирования СУБД MySQL реализован «облегченный» функционал добавления новый записей в таблицы базы данных. Из-за своей простоты он идеально подходит как для зеленых «чайников», так и для «ленивых» профессионалов.
Чтобы занести новую информацию в таблицу, следует зайти в программу под правами администратора. Затем в списках слева выбрать нужную базу и таблицу. После чего в верхнем меню перейти через пункт «Вставить».
После этого, чтобы внетсти запись в БД MySQL, заполняем в следующем окне для всех столбцов поля «Значение» и нажимаем внизу «Ок».
На приведенном выше скриншоте видно, что модифицируемая таблица «Animals» состоит из двух столбцов (полей): id и name. Во втором разделе указан тип каждого из столбцов. Нам нужно внести значение только для поля name, поскольку столбец id является первичным ключом, и для него при создании таблицы задан автоинкремент. Это значит, что значение поля id будет генерироваться MySQL автоматически, прибавляя к предыдущему целому числовому значению 1.
Чтобы узнать, какое поле записей данных в MySQL является первичным ключом (primary key), в phpMyAdmin перейдите меню (при выбранной таблице слева в списке) на вкладку верхнего меню «Структура». Здесь приводится описание всех полей таблицы, их тип и дополнительные характеристики.
Вставка данных с помощью SQL-запросов
Но phpMyAdmin – это всего лишь оболочка, а настоящие администраторы «общаются» с сервером MySQL с помощью языка структурированных запросов. То есть «разговаривают» с ним на языке SQL. Так как мы стремимся стать настоящими профессионалами, то немного «окунемся» в изучение команд SQL в рамках рассматриваемой темы. Вот запрос, введя который в поле «SQL», вы создадите такую же базу данных:
CREATE TABLE Animal (id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id));
CREATE TABLE Animal (id MEDIUMINT NOT NULL AUTO_INCREMENT , name CHAR (30 ) NOT NULL , PRIMARY KEY (id ) ) ; |
После создания таблицы и запись данных в базу MySQL (через вкладку «Вставить») программа сообщит вам, что в animals добавлена строка со значением идентификатора 1. А немного ниже в окне редактора будет выведен код запроса, который за нас сформировала оболочка и отослала серверу БД.
Код запроса:
INSERT INTO `my_db1`.`animal` (`id`, `name`) VALUES (NULL, "Cat");
INSERT INTO ` my_db1 ` . ` animal ` (` id ` , ` name ` ) VALUES (NULL , "Cat" ) ; |
Давайте более подробно изучим его. В SQL для вставки новой строки в таблицу используется оператор INSERT. Он сообщает серверу, что в таблицу базы данных (my_db1 . animal) нужно в поля id и name вставить указанные значения (VALUES (NULL, ‘Cat’).
Обратите внимания, что столбцу id мы указываем не числовое значение, а NULL, поскольку для этого поля мы «включили» автозаполнение (автоинкремент).
Как вставить запись с помощью PHP
Все рассмотренное нами является лишь «прелюдией» к основному действу, в котором выходит на сцену «его высочество» серверный язык программирования PHP. Именно благодаря ему MySQL как СУБД получила такое распространение в Сети.
На связке этих двух интернет-технологий построена большая часть всемирной паутины. Куда ни гляньте, везде вы найдете их: в современных CMS, «самописных» движках и на сервере.
Не удивительно, что для записи данных в MySQL PHP предоставляет столько встроенных функций. Но мы остановимся на самых главных из ним. Вот код, который добавляет новое «животное» в таблицу animals. Если сильно постараться, то таким образом можно собрать целый зверинец:)
$con_str=mysql_connect("localhost", "root", "", "db1"); if(mysql_connect("localhost","root")){ echo "Hello!!"; } mysql_select_db("db1",$con_str); $query_str="INSERT INTO `db1`.`animal` (`id`, `name`) VALUES (NULL, "dog")"; mysql_query($query_str); mysql_close();
$ con_str = mysql_connect ("localhost" , "root" , "" , "db1" ) ; if (mysql_connect ("localhost" , "root" ) ) { echo "Hello!!" ; mysql_select_db ("db1" , $ con_str ) ; $ query_str = "INSERT INTO `db1`.`animal` (`id`, `name`) VALUES (NULL, "dog")" ; mysql_query ($ query_str ) ; mysql_close () ; |
Этот код нужно вставить в файл PHP и разместить его на стороне сервера.
С помощью функции mysql_connect() мы коннектимся к серверу баз данных MySQL. В качестве аргументов функция принимает хост, имя пользователя СУБД, пароль и название базы, к которой нужно подключиться. У нас указан пустой пароль, поскольку мы используем сервер, установленный на локальной (клиентской) машине.
Для демонстрации всех описанных примеров записи в базу MySQL с помощью PHP мы применяли «джентельменский набор» от Денвера. В него входит локальный сервер Apache, сервер MySQL, phpMyAdmin и еще несколько полезных средств создания и тестирования программного кода.
Затем в логическом блоке if мы проверили наличие соединения к серверу БД. После чего в функции mysql_select_db() мы обозначили базу, к которой будем коннектиться. С помощью функции mysql_query() запустили на выполнение SQL-запрос, записанный в переменную $query_str. И в конце закрыли установленное соединение (функция mysql_close()). Теперь, если мы заглянем в свой зверинец (таблицу animal), то обнаружим там нового «питомца».
Для его записи в MySQL PHP «любезно» предоставил весь необходимый набор функций. Главное, на чем «обжигаются» новички при использовании SQL в программном коде – это неправильное написание запросов, нарушение синтаксиса и чередования знаков для экранирования (кавычек).
Чтобы избежать появления на своей голове лишних «седых» волос, лучше проверять правильность написания запроса с помощью phpMyAdmin. Для этого разместите код SQL в редакторе программы и запустите его на выполнение. Если что-то не так, то приложение начнет «ругаться», выведет сообщение красного цвета и укажет месторасположение ошибки.
Как видите, с помощью MySQL можно и свой зверинец «собрать», и правильно изменить слова любой «песни». И для записи в базу MySQL PHP подходит идеально, поэтому мы советуем вам завести «тесную» дружбу с этим «великим» языком программирования!
Урок будет основан на форме обратной связи , необходимой практически на любом сайте.======================================== ?>
Шаг первый: Создание базы данных в MySQL
Открываем phpMyAdmin (входит в базовый пакет Denwer `а), и создаем базу с названием "test_base ", кодировку выбираем "cp1251_general_ci ".
======================================== ?>
Шаг второй: Создание таблицы в MySQL с помощью SQL-запроса
Создать таблицу можно, конечно, и с помощью стандартных средств phpMyAdmin , но так наглядно будет видна структура создаваемой таблицы.
Создаем таблицу с названием "test_table " и с шестью полями с названиями:
"name " - здесь будут храниться имена пользователей;
"email " - здесь будут храниться адреса электронных ящиков пользователей;
"theme " - здесь будет храниться тема сообщения;
"message " - здесь будут храниться сообщения;
"data " - здесь будет храниться дата отправки сообщения;
"id " - идентификационный номер записи (строки), ключевое поле.SQL-запрос:
create table test_table(
id int(11) not null auto_increment,
name varchar(255) not null,
email varchar(255) not null,
theme varchar(255) not null,
message text not null,
data date not null,
primary key (id)
);======================================== ?>
Шаг третий: Создание формы
index.html:
Форма с сохранением в MySQL
Пример формы с сохранением данных в MySQL