Когда введенное число для $ очков берется в поле ввода, оно прибавляет число к общему количеству уже в базе данных, но по какой-то причине добавленное число удваивается. Например, если ввод 3, к общей сумме будет добавлено 6. Может ли кто-нибудь помочь с ответом на это?
Идея состоит в том, что кто-то должен иметь возможность добавлять баллы к общей сумме, а затем на отдельной странице просматривать ее на индикаторе выполнения (который работает правильно), но общие суммы не складываются. Я новичок в php, поэтому заранее извиняюсь за любые ошибки в коде.
Спасибо
<?php
session_start();
if (!isset($_SESSION["sess_user"])){
header("location:login.php");
} else {
echo "Userid: ".$_SESSION["sess_id"];
?>
<!doctype html>
<html>
<head>
<h2><a id = "button" href = "index.php">Main Menu</a></h2>
<h2><a id = "button" href = "selftrack.php">Track your updated progress!</a></h2>
</head>
<body>
<?php
// Connect to the database
$username = "";
$password = "";
$host = "";
$db = $username;
$points = $_POST['self_p'];
// Connect to the MySQL server and select the required database
$connection = mysqli_connect($host, $username, $password, $db);
if (mysqli_connect_error()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else { // Database connected correctly
echo "<h1>Add daily points</h1>";
if (isset($_POST["addSubmit"])) {
if ((!empty($_POST["self_p"]))) {// Check all parts of the form have a value
$query = "UPDATE targets
SET self_points = self_points + ".$points."
WHERE user_id='".$_SESSION['sess_id']."'";
$result = mysqli_query($connection, $query);
if ($result == false) {
// Show error message
echo "<p>The target points for " . $_POST["self_p"] . " was not added.</p>";
}
else {
echo "<p>The target points for \"" . $_POST["self_p"] . "\" has been added.</p>";
}
}
else {
echo "<p>Please fill out all the details</p>";
}
}
}
?>
<form role = "form" id = "addForm" name = "addForm" action = "?" method = "post">
<div class = "form-group">
<div class = "col-xs-7">
<label for = "addFormLast_Name">Please enter your daily points, up to 5:</label>
<input class = "form-control" id = "addFormLast_Name" name = "self_p" type = "text">
</div>
<div class = "form-group">
<div class = "col-xs-7">
<input class = "form-control" id = "addSubmit" name = "addSubmit" value = "Add Target" type = "submit">
</div>
</div>
<?php
mysqli_close($connection);
}
?>
</body>
<?php
?>
</html>
По какой-то причине, используя переменную $ points, добавил double, изменил ее на использование $ _post, и теперь, похоже, он работает нормально ... странно! Спасибо за совет
Здесь должно быть что-то еще. Измените его обратно на $points и посмотрите, сработает ли он на этот раз.






Я не вижу в вашем коде никаких проблем, связанных с добавлением, но ваш запрос открыт для атак с использованием SQL-инъекций. Сделайте значение точки параметром вместо того, чтобы вставлять его непосредственно в запрос. Google "Параметризованный запрос PHP", чтобы узнать, как это сделать.