Skoro podczepiasz jquery
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
to może go użyj i m. in. masz też dostęp do jQuery.ajax()
Przykład w oparci o Twój kod
<?php
session_start();
if (! isset($_SESSION['zalogowany'])) {
header('Location: index.php');
} else {
$_SESSION['pkt'] = $_SESSION['pkt'] ?? 0;
$_SESSION['boost'] = $_SESSION['boost'] ?? 1;
}
?>
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Klikacz</title>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<style>
html,
body {
padding: 0;
margin: 1rem;
}
.scoreboard {
font-weight: bold;
margin-bottom: 4rem; /* zamiast <br>-ów w kodzie html */
}
.scoreboard span {
display: inline-block;
font-weight: normal;
width: 2rem;
margin-left: .15rem;
}
button {
display: block;
width: 8rem;
border-radius: .25rem;
cursor: pointer;
}
button + button {
margin-top: 2rem;
}
button.save {
border-color: green;
}
button.clicker {
aspect-ratio: 1;
}
</style>
</head>
<body>
<p>
Witaj <?=$_SESSION['user']?>! [<a href="logout.php">Wyloguj się</a>]
</p>
<p class="scoreboard">
Punkty: <span id="lcd_pkt"></span>
Booster: x<span id="lcd_boost"></span>
</p>
<button class="save" onclick="savePoints()">Zapisz</button>
<button class="clicker" onclick="clicker()">Click!</button>
<script>
let pkt = <?=$_SESSION['pkt']?>;
let boost = <?=$_SESSION['boost']?>;
window.onload = load;
function load() {
$('#lcd_pkt').text(pkt);
$('#lcd_boost').text(boost);
}
function clicker() {
pkt += 1 * boost;
$('#lcd_pkt').text(pkt);
}
function savePoints() {
$.ajax({
url: 'save_score.php',
method: 'POST',
data: {
points: pkt,
boost: boost
},
beforeSend: function(xhr) {
$('.save').prop('disabled', true);
},
success: function(response) {
console.log('Odpowiedź serwera:', response);
},
error: function(xhr, status, error) {
console.error('Błąd: ' + status, error);
},
complete: function() {
$('.save').prop('disabled', false);
}
});
}
</script>
</body>
</html>
przykładowy save_score.php
<?php
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_SESSION['zalogowany'])) {
$points = $_POST['points'] ?? null;
$boost = $_POST['boost'] ?? null;
if (is_numeric($points) && is_numeric($boost)) {
// ... kod połączenia z bazą danych
// ... wykonanie sql ... itd.
// $_SESSION['pkt'] = $points;
// $_SESSION['boost'] = $boost;
echo 'Dane zostały zapisane';
} else {
echo 'Wystąpił problem podczas zapisu!';
}
}
}
?>
możesz też z jquery użyć jQuery.post()
function savePoints() {
$('button.save').prop('disabled', true);
$.post('save_score.php', { // method: 'POST'
points: pkt,
boost: boost
})
.done(function(response) {
console.log('Odpowiedź serwera:', response);
})
.fail(function(xhr, status, error) {
console.error('Błąd: ' + status, error);
})
.always(function() {
$('button.save').prop('disabled', false);
});
}