Я изучаю JS и не силён в PHP. Для того что бы отправлять данные в phpMyAdmin мне нужен PHP файл. Сейчас у меня в форме 1 input, но в дальнейшем их будит больше (email, login, name, phone) Я пытался самостоятельно написать год. Но он не работает, я не знаю почему и как это исправить. Буду благодарен если поможете.
<div class="overlay fade">
<div class="popup">
<div class="popup-close">×
</div>
<div class="popup-title">
Форма обратной связи</div>
<div class="popup-form">
<form action="#" class="main-form">
<div class="form_text">
<div class="popup-form-header">
Узнайте больше о своём отдыхе
</div>
<label class="popup-form__label" for="phone">
Введите ваш номер телефона:
</label>
</div>
<div class="form_content">
<input class="popup-form__input" name="phone" type="tel" required placeholder="Номер телефона">
<button class="button popup-form__btn">
Оставить заявку!
</button>
</div>
</form>
</div>
</div>
</div>
const message = {
loading: 'Загрузка',
success: 'Спасибо! Мы с вами свяжемся!',
failure: 'Произошла ошибка'
};
let Form = document.querySelector('.main-form'),
Input = Form.getElementsByTagName('input'),
statusMessage = document.createElement('div');
statusMessage.classList.add('status');
// AJAXS
function sendForm(f) {
f.addEventListener('submit', (event)=>{
event.preventDefault();
f.append(statusMessage);
let dataForm = new FormData(f);
function postData (d) {
return new Promise((resolve,reject)=>{
let request = new XMLHttpRequest();
request.open('POST','/connection.php');
request.onreadystatechange = function(){
if (request.readyState < 4) {
resolve();
} else if (request.readyState === 4){
if (request.status == 200 && request.status < 300) {
resolve();
}else{reject()}
}
};
request.send(d);
});
}
function clearInput(){
for (let i = 0; i < Input.length; i++) {
Input[i].value = '';
}
}
postData(dataForm)
.then(() => { statusMessage.textContent = message.loading; })
.then(() => { statusMessage.textContent = message.success;})
.catch(() => { statusMessage.textContent = message.failure; })
.then(clearInput);
});
}
sendForm(Form);
<?php
header("Access-Control-Allow-Origin: *");
$phone = $_POST["phone"];
$host = 'localhost'; // адрес сервера
$database = 'yoga_tours'; // имя базы данных
$user = 'root'; // имя пользователя
$password = ''; // пароль
// подключаемся к серверу
$link = mysqli_connect($host, $user, $password, $database)
or die("Ошибка " . mysqli_error($link));
$sql = "INSERT INTO phones (id, phone) VALUES (NULL, '$phone')";
$result = mysqli_query($link, $sql) or die("Ошибка" . mysqli_error($link));
if($result)
{
echo "Выполнение запроса прошло";
echo $_POST['phone'];
}
// закрываем подключение
mysqli_close($link);
?>

1)перепишитеjs-код наjQuery- сильно облегчите себе жизнь.2)Поменяйте вconnect.phpметодPOSTнаGETи вызовитеconnect.php?phone=333-222-333- внутриconnect.phpсделайтеvar_dump($_GET)и посмотрте что Вам пришло. И делая дальше по кодуvar_dump( ... ); die();просмотрите на каждом шаге что в какой переменной у Вас сидит. Это примитивнейший пример дебаггинга вphp.3)Как только все отладите верните все назад наPOST, если не заработает - проверьте в браузере в инструментах разработчика на вкладкеСеть- уходит ли вообще запрос. – Nov 08 '21 at 16:54fetch. + async-await – Алексей Шиманский Nov 08 '21 at 17:08js- экономит кучу времени. А по мере нарастания опыта - можно и на чистый перейти. Иbsвообще не показатель кстати, я сам там не одинперлв коде находил :) – Nov 09 '21 at 02:30jQueryиnative JSсломано не мало копий и выпито не мало пива :) – Nov 09 '21 at 08:33