我正在制作一个温度目标页面,其中表单将读取当前目标,允许用户使用 Javascript 按钮+/- 0.5,然后“设置”采用新值并将其保存回数据库的目标。
我有一个工作页面,可以读取数据库值并设置它,但随后自动恢复为“0.0”作为目标。如果刷新页面,则会显示目标,但有时会将其保存在数据库中的 0.0 处。
我很困惑为什么我在这上面花了太长时间,但它困扰着我!非常感谢任何帮助,谢谢。
这是我的代码:
<?php
$conn = connect DB stuff here...
$queryTarget = "SELECT * FROM target;";
$result2 = $conn->query($queryTarget);
$conn->close();
if ($result2->num_rows > 0) {
while($row = $result2->fetch_assoc()) {
$target = $row['target'];
}
}
?>
<form id="input" method="post" action="">
Temp <input type="text" value="<?php echo $target; ?>" name="temp" id="temp" >
<input type="button" id="Up" value="up" / >
<input type="button" id="Down" value="down"/ >
<input type="submit" id="submit" value="submit " name="submit">
</form>
<?php
$conn = connect DB stuff here...
$temp = $_POST['temp'];
$updateTarget = "UPDATE target SET target = '";
$updateTarget = $updateTarget . $temp . "' WHERE id = 1;";
$result = $conn->query($updateTarget);
$conn->close();
?>
<script>
var min = 15,
max = 25;
$("#Up").click(function(){
if($("#temp").val() < 25 && $("#temp").val() >= 15)
$("#temp").val(Number($("#temp").val()) + 0.5);
});
$("#Down").click(function(){
if($("#temp").val() <= 25 && $("#temp").val() > 15)
$("#temp").val(Number($("#temp").val()) - 0.5);
});
</script>
<script>
$(document).ready(function(){
$('#submit').click(function(){
var srt = $("#input").serialize();
// alert is working perfect
alert(srt);
$.ajax({
type: 'POST',
url: 'form.php',
data: srt,
success: function(d) {
$("#input").html(d);
}
return false;
});
});
});
</script>
最佳答案
只是回显这个临时值
<?php
//$conn = connect DB stuff here...
$temp = $_POST['temp'];
or
print_r($_POST);
echo $temp;
die();
$updateTarget = "UPDATE target SET target = '";
$updateTarget = $updateTarget . $temp . "' WHERE id = 1;";
然后检查警报,如果警报显示正确的数据,则 然后使用像这样的单个查询
$updateTarget = "UPDATE target SET target = '$temp' WHERE id = 1";
//i think it will help you to find issue
$result = $conn->query($updateTarget);
$conn->close();
?>
并且您的 JavaScript 函数需要更新
<script>
$(document).ready(function(){
$('#submit').click(function(){
var srt = $("#input").serialize();
// alert is working perfect
alert(srt);
$.ajax({
type: 'POST',
url: 'form.php',
data: srt,
success: function(d) {
alert(d);
$("#input").html(d);
}
});
return false;
});
});
</script>
如果您找到正确的数据,请检查您的数据库结构是否允许 float 等。我认为它会起作用
你也可以检查这个
关于javascript - PHP读取DB值,JS递增,AJAX保存到DB,但为什么刷新页面之前默认为0.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42655964/