Я хочу автоматически обновлять свою базу данных, когда таймер обратного отсчета == 0 или <0, без перезагрузки страницы. Только определенный блок будет перезагружен или перезагружен скриптом / кодом. Как я могу автоматически обновить мою базу данных в mysql, когда расстояние <0? Пробую перезагрузить (); и .load (location.href ("#")); Но они перезагружают страницу.
Я использую PHP как бэкэнд
В JAVASCRIPT
<script type = "text/javascript">
function createCountDown(elementId, date) {
var countDownDate = new Date(date).getTime();
var x = setInterval(function() {
var now = new Date().getTime();
var distance = countDownDate - now;
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
document.getElementById(elementId).innerHTML = days + 'd ' +
hours + 'h ' +
minutes + 'm ' +
seconds + 's ';
if (distance < 0) {
clearInterval(x);
document.getElementById(elementId).innerHTML = "Expired";
}
}, 1000);
}
Вы можете опубликовать свой PHP?
какими данными вы хотите обновить базу данных? чтобы мы могли захватить его и отправить через ajax на php для обработки?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам нужно использовать AJAX.
Пример:
xhttp.open("POST", "path/to/post/handler.php", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
В твоем случае:
if (distance < 0) {
clearInterval(x);
document.getElementById(elementId).innerHTML = "Expired";
//this is where you update the database:
xhttp.open("POST", "path/to/post/handler.php", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//use the xhttp object to send(POST) values to the database.
xhttp.send("message=Expired&id=242");
}
Что вы используете в бэкэнде? Вам нужно будет обработать POST JavaScript:
Пример PHP:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$stmt = $this->mysqli->prepare("UPDATE yourTable SET status=? WHERE id=?");
$stmt->bind_param('si', $_POST['message'], $_POST['id']);
$stmt->execute();
return $stmt->affected_rows;
$conn->close();
?>
Дайте знать в комментариях, если это сработает ...
Ваш php недействителен. Вы смешиваете два MYSQL API. Mysql_ * также устарел с php 5 и удален в php 7.
также, если вы используете mysqli_ *, используйте подготовленные операторы, чтобы избежать инъекций и не экранировать строки
попробуйте Ajax для асинхронных сценариев Java или поместите свой код во фрейм, чтобы он влиял только на этот фрейм при перезагрузке