Отправка строки из html страницы в БД через php

298
08 марта 2017, 21:01

функция действует по onclick-у. проверял через alert

помогите с php кодом которые эти данные будет принимать и отправлять в БД

function SaveMenu() {
  var tab = document.getElementById("AddNewTable");
  var elems = tab.getElementsByTagName('*');
  var Stroka = '';
  for (var i = 0; i < elems.length; i++) {
    strID = elems[i].id;
    if (strID.substr(0, 5) == 'EdIzm') {
      Stroka = Stroka + strID.substr(5) + "|";
      Stroka = Stroka + elems[i].value + "|";
      Stroka = Stroka + document.getElementById("EdCost" + strID.substr(5)).value + "|";
    }
  }
}
Answer 1

Отправка данных на сервер

Данные на сервер могут быть отправлены тремя способами:

  • по ссылке - get-запрос, данные в query string, открывается новая(target) либо перезагружается текущая страница.
  • формой - get/post запрос, данные в полях формы Страница обновляется либо открывается новая, если указан target.
    В качестве target может быть указан iframe, возможно скрытый.
  • AJAX - инициируется из javascript, ответ приходит тоже в javascript.
    Обновления страницы не происходит.

Ajax

Ajax-запрос можно осуществить несколькими способами.
Самый распространённый - использование класса XMLHttpRequest:

var xmlhttp = new XMLHttpRequest;
xmlhttp.open('POST', '/api/script.php');
xmlhttp.onload = function() {
  console.log(xmlhttp.responseText);
};
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
var body = [
  'name=' + encodeURIComponent('Alice'),
  'age=' + encodeURIComponent('22'),
].join('&');
xmlhttp.send(body);

Популярные библиотеки, такие как jQuery имеют свои удобные обёртки для ajax запросов: $.ajax.

Пример с современным Fetch API.
Он очень удобен, но имеет некоторые проблемы с поддержкой браузерами (IE, Safari...).
По счастью, реализовать polyfill не очень сложно.

function save() { 
  var endpoint = 'http://httpbin.org/post'; 
  var Stroka = 'g/ml|13.5|15'; 
  fetch(endpoint, {   
    method: 'post',   
    headers: {   
      "Content-type": "application/x-www-form-urlencoded; charset=UTF-8"   
    },   
    body: 'data='+encodeURIComponent(Stroka) 
  }).then(res => res.json()) 
    .then(res => console.log(res)); 
} 
 
save();

PHP:

var_dump($_POST['data']);
Answer 2

Предположим, что вы уже получили данные в php, и вам нужно эти данные сохранить в базу данных.
Так как в вопросе не указана используемая база данных, будем считать, что используется mysql.

Общение php с базами данных осуществляется посредством драйверов реализованных в виде расширений.

Для mysql могут использоваться 2 различных драйвера:

  • mysqli
  • PDO

Рассмотрим сохранение данных на примере PDO.

В первую очередь нужно установить соединение с базой:

$db = new \PDO('mysql:host=localhost;dbname=test', $user, $pass);  

Теперь осталось лишь сохранить нужные данные:
Предположим, что у вас есть таблица Storage с текстовой колонкой data

$stmt = $db->prepare('INSERT INTO Storage (data) VALUES (?)');
$stmt->execute([$_POST['data']]);
READ ALSO
Проверка входящих значений Yii2

Проверка входящих значений Yii2

Вопрос, изучая документацию по Yii не совсем разобрался с валидацией входящих данных:

266
Как получить текст ссылки с помощью регулярных выражений?

Как получить текст ссылки с помощью регулярных выражений?

Нужно из ссылки, достать содержимое, а именно число 719

230
Как устранить ошибку laravel &ldquo;Undefined index: id&rdquo;

Как устранить ошибку laravel “Undefined index: id”

Как устранить ошибку laravel "Undefined index: id"? Возникает при попытке удаления страницы в админке

279
mysqli fetch_assoc() - ошибка

mysqli fetch_assoc() - ошибка

Не пойму в чем проблема, проверял запрос на работоспособность, он отрабатывается без проблем

267