Here I create a table http://jsbin.com/OJAnaji/13/edit and DEMO: http://jsbin.com/OJAnaji/13 So when users click on some row on table automaticly populate input fields with values from table into modal window. Modal window user open when click on button «Edit row». Now I need to know how I can update mysql table with columns: Name,Gender,Age,Donuts eaten. I create js ajax:
$("#edit").click(function() < //in here we can do the ajax after validating the field isn't empty. if($("#name").val()!="") < $.ajax(< url: "update.php", type: "POST", async: true, data: < Name:$("#name").val(), Gender:$("#gender").val(), Age:$("#age").val(), Donuts_eaten:$("#donuts_eaten").val()>, //your form data to post goes here as a json object dataType: "html", success: function(data) < $('#output').html(data); drawVisualization(); >, >); > else < //notify the user they need to enter data >>);
Add new row
Name
Gender
Age
Donuts eaten
What have you tried? What examples are you following but are still not working and what errors do you get?
//HOW I CAN UPDATE MYSQL DATABASE, WHAT I NEED TO ADD HERE? . How do we possibly know without seeing any of your table structures. You’ll have to do something using the $_POST[] arguments you gave it via the AJAX call (Name, Gender, Age, Donuts_eaten)
2 Answers 2
You should have a column in the table which is an auto-increment column, such as «id» or like the example below uses «index_id». This should be used when creating your form, and sent along with the $_POST array to reference the row you are updating. This is a simple example, which you can use to get you started.
$_POST = stripslashes_deep($_POST); # you will want to better filtering for security. if(isset($_POST['Name']) && $_POST('Name') !='') < $query = "UPDATE stat SET Name ='". $_POST['Name'] . "', Gender ='". $_POST['Gender'] . "', Age ='". $_POST['Age'] . "', Donuts_eaten ='" .$_POST['Donuts_eaten'] . "' WHERE index_id = '". $_POST['index_id'] . "'"; $result = mysql_query($query) or die(mysql_error()); exit(json_encode($_POST)); >function stripslashes_deep($value)
For your MYSQL table you can run this in your MYSQL PhpMyAdmin:
ALTER TABLE `stats` ADD `index_id` INT( 3 ) NOT NULL AUTO_INCREMENT FIRST , ADD PRIMARY KEY ( `index_id` )
В этом уроке мы наглядно проиллюстрируем, насколько просто получить доступ к информации из базы данных с помощью AJAX, мы собираемся создавать запросы MySQL на лету и отображать результаты в виде таблицы HTML.
Пример работы с Ajax, PHP и MySQL
В следующем примере показано, как веб-страница может получать информацию из базы данных с помощью AJAX. Вы можете из выпадающего списка выбрать одного из клиентов и увидите, что, без перезагрузки страницы, необходимая информация будет отображаться ввиде таблицы HTML:
Example
Таблица примера работы с Ajax и MySQL
Пример
// Попытка выполнить запрос на создание таблицы $sql = "CREATE TABLE ajax_demo ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, age int(11) NOT NULL, hometown VARCHAR(30) NOT NULL, job VARCHAR(30) NOT NULL ) "; if(mysqli_query($link, $sql)) < echo "Таблица успешно создана."; >else < echo "ERROR: Не удалось выполнить $sql. " . mysqli_error($link); >// Закрыть соединение mysqli_close($link); ?>
Пример
// Попытка выполнения запроса вставки $sql = "INSERT INTO ajax_demo (firstname, lastname, age, hometown, job) VALUES ('Ivan', 'Ivanov', 30, 'Moskow', 'designer'), ('Stepan', 'Stepanov', 32, 'Kiev', 'manager'), ('Maxim', 'Maxsimov', 33, 'London', 'boss'), ('Irina', 'Sidorova', 35, 'Varshava', 'programmer')"; if(mysqli_query($link, $sql)) < echo "Записи успешно вставлены."; >else < echo "ERROR: Не удалось выполнить $sql. " . mysqli_error($link); >// Закрыть соединение mysqli_close($link); ?>
В результате мы получим следующую таблицу, которую будем исползовать в этом уроке:
Объяснение примера работы с Ajax и MySQL
В приведенном в начале урока примере, когда пользователь выбирает человека в раскрывающемся списке, выполняется функция showUser() . Функция showUser() запускается событием onchange :
Пример
Создадим объект var xmlhttp = new XMLHttpRequest();
Создадим функцию xmlhttp.onreadystatechange, которая будет выполняться, когда будет готов ответ сервера if (this.readyState == 4 && this.status == 200)
Отправим запрос в php-файл getuser.php на сервере
Обратите внимание, что к URL-адресу добавлен параметр (q) (с содержимым раскрывающегося списка)
Файл-обработчик для работы с Ajax и MySQL
Страница на сервере, вызываемая выше приведенным JavaScript, представляет собой PHP-файл «getuser.php».
Исходный код в файле «getuser.php»выполняет запрос к базе данных MySQL и возвращает результат в таблице HTML:
The following example will demonstrate how a web page can fetch information from a database with AJAX:
Example
Example Explained — The MySQL Database
The database table we use in the example above looks like this:
id
FirstName
LastName
Age
Hometown
Job
1
Peter
Griffin
41
Quahog
Brewery
2
Lois
Griffin
40
Newport
Piano Teacher
3
Joseph
Swanson
39
Quahog
Police Officer
4
Glenn
Quagmire
41
Quahog
Pilot
Example Explained
In the example above, when a user selects a person in the dropdown list above, a function called «showUser()» is executed. The function is triggered by the onchange event. Here is the HTML code:
Example
Create an XMLHttpRequest object
Create the function to be executed when the server response is ready
Send the request off to a file on the server
Notice that a parameter (q) is added to the URL (with the content of the dropdown list)
The PHP File
The page on the server called by the JavaScript above is a PHP file called «getuser.php».
The source code in «getuser.php» runs a query against a MySQL database, and returns the result in an HTML table: