@yura_born

Как записать данные в Mysql JS JSON PHP?

Доброго времени! Не получается записать данные в БД Mysql
Сделал форму:
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Пользователи РСМОБ</title>
</head>
<body>
  <div class="form_auth_block">
    <div class="form_auth_block_content">
      <p class="form_auth_block_head_text">Авторизация</p>
      <form class="form_auth_style" id="authForm" action="#" method="post">
        <label>Введите Ваш имейл</label>
        <input type="text" name="auth_email" placeholder="Введите Ваш имейл" required >
        <label>Введите Ваш пароль</label>
        <input type="password" name="auth_pass" placeholder="Введите пароль" required >
        <button class="form_auth_button" type="submit" name="form_auth_submit">Войти</button>
      </form>
    </div>
  </div>
</body>
<footer>
  <script src="scripts/main.js"></script>
</footer>
</html>


вот мой JS:
'use strict';

const form = document.querySelector('#authForm');

const message = {
  loading: 'Загрузка',
  success: 'Спасибо! Скоро свяжимся',
  failure: 'Что-то не так'
};

postData(form);

function postData(form) {
  form.addEventListener('submit', (e)=>{
    e.preventDefault();

    const statusMessage = document.createElement('div');
    statusMessage.classList.add('status');
    statusMessage.textContent = message.loading;
    form.append(statusMessage);

    const request = new XMLHttpRequest();
    request.open('POST', 'scripts/server.php');
    // request.setRequestHeader('Content-type', 'multipart/form-data');
    request.setRequestHeader('Content-type', 'application/json');

    const formData = new FormData(form);

    const object ={};
    formData.forEach(function(value, key){
      object[key] = value;
    });

    const json = JSON.stringify(object);

    // request.send(formData);
    request.send(json);
    

    request.addEventListener('load', ()=>{
      if (request.status === 200) {
        console.log(request.response);
        statusMessage.textContent = message.success;
        form.reset();
        setTimeout(()=>{
          statusMessage.remove();
        }, 2000);
      } else {
        statusMessage.textContent = message.failure;
      }
    });

  });
}


вот php:
<?php

$input = json_decode(file_get_contents("php://input"),true);


echo var_dump($input);

var_dump($_POST);

if (isset($_POST['auth_email'])){
  $login = $_POST['auth_email'];
  $pass = $_POST['auth_pass'];

  $conx = mysqli_connect("localhost", "root", "");

  $sql = "INSERT INTO `pass`(`login`, `pass`) VALUES ('$login','$pass')";
  
  $result = mysqli_query($conx, $sql);
  
  if ($result){
    echo "<h3>Inserted........!</h3>";
  }
}
?>


Ответ от сервера приходит - 200
array(2) {
  ["auth_email"]=>
  string(3) "123"
  ["auth_pass"]=>
  string(6) "213213"
}
array(0) {
}


Но данные в БД не вставляются и я не вижу что приходит в $_POST или в ситуации с JSON в $input
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
я не вижу что приходит в $_POST

Но какого-то чёрта в if смотрю именно в $_POST. Браво!

UPD#1: https://stackoverflow.com/a/28619101

А чем fetch не угодил? Или вы по примерам 2010 года учитесь?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@yura_born Автор вопроса
Упс.... затупил.... извиняюсь... да действительно в $input все приходит
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы