Данный подход имеет недостатки. и основной - это безопасность:
Ваш вариант, предполагает управление неким балансом из JS, который выполняется на стороне клиента (в браузере). А как мы знаем, что может JS - то сможет повторить или изменить пользователь.
Более правильным было бы решение, когда данными управлял сервер - либо через PHP, либо сама БД. Например: в момент, когда страница генерируется - вы записываете в столбец строки с балансом еще и время. А когда пользователь нажмет кнопку, вычисляете сколько времени прошло и собственно изменяете баланс на нужную величину. При таком раскладе, пользователь не сможет просто так взять и хакнуть свой баланс.
Что касается вашего вопросы и самой реализации, то тут все просто:
(вы не указали какая БД, опишу про MySQL)
(для упрощения, я не делаю проверок на наличие и корректность данных. обязательно сделайте)
$userId = 1;
//Подключаем БД
$mysqli = new mysqli('example.com', 'user', 'password', 'database');
if ($mysqli->connect_errno) {
echo "Не удалось подключиться к MySQL: " . $mysqli->connect_error;
return;
}
//Сохраняем баланс, если передан параметр apply методом POST
if (isset($_POST['balance'])){
$newBalance = $_POST['balance'];
$stmt = $mysqli->prepare("UPDATE users SET balance=? WHERE id=?");
$stmt->bind_param('si', $newBalance, $userId);
$stmt->execute();
echo "OK";
return;
}
//Забираем текущий баланс
$res = $mysqli->query('SELECT balance FROM users WHERE usersId='.$userId);
$row = $res->fetch_assoc();
$balance = $row['balance'];
//Где то дальше
echo "<span>$balance</span>";