我在尝试从java脚本向数据库添加项目时更新子总数。但是,目前它在显示添加项目时的第一笔金额而不是更新。 (但是当从phpMyAdmin运行查询时,它可以正常工作)
function showSubTotal() {
<?php $resultT=mysqli_query($connection, "SELECT SUM(amount) FROM sales_temp");
$rowT = mysqli_fetch_row($resultT);
?>
document.getElementById("txtSubTotal").setAttribute('value','');
document.getElementById("txtSubTotal").setAttribute('value',"<?php echo $rowT[0]; ?>");
}
<input name="txtSubTotal" type="text" id="txtSubTotal" size="15" / >
<button type="button" name="btnSave" id="btnSave" onclick="submitdata(); check_qty(); showSubTotal();">ADD</button></td>
答案 0 :(得分:1)
问题是,当您使用PHP声明该函数时,再次使用PHP无法刷新该函数...因为PHP所做的一切都在页面加载之前发生,因此,举个例子说:< / p>
function showSubTotal() {
<?php $resultT=mysqli_query($connection, "SELECT SUM(amount) FROM sales_temp");
$rowT = mysqli_fetch_row($resultT);
?>
document.getElementById("txtSubTotal").setAttribute('value','');
document.getElementById("txtSubTotal").setAttribute('value',"<?php echo $rowT[0]; ?>");
}
来自第一个查询的$ rowT [0] = 10的'value',它总是10,因为这是PHP在检查页面加载时从数据库中读取的内容。你将不得不使用像jquery或ajax这样的东西来读取包含该值的另一个php文件的内容(mysqli_fetch_row)。
PHP字面上被命名为超文本预处理器,意味着在将html打印给用户之前处理的所有内容。 (在页面加载完毕之前)
答案 1 :(得分:0)
ShowSubTotal()
只会在页面加载时带来值。动态操作不会进行任何更改,因为php需要服务器请求才能运行。
您应该通过动态请求(ajax)调用来提供小计。
要么:
使用javascript对值进行求和,并在txtSubTotal
字段中设置值。如果您选择此选项,请记住不要在服务器端处理上依赖此值,因为它可能会被用户掺杂。
答案 2 :(得分:0)
我找到了解决方案,添加do_onload(id)
来计算每次刷新后触发的loadComplete
事件总数(也在删除后)
function do_onload(id)
{
//alert('Simulating, data on load event')
var s = $("#list").jqGrid('getCol', 'amount', false, 'sum');
jQuery("#txtSubTotal").val(s);
}
并相应更改了phpgrid代码。
$opt["loadComplete"] = "function(ids) { do_onload(ids); }";
$grid->set_options($opt);
答案 3 :(得分:0)
试试这段代码
$("#btnSave").click(function(){
$.ajax({
url : file_url.php,
type : 'post',
data : {
get_subtotal:"subtotal",
},
success : function( response ) {
alert(response);
$("#txtSubTotal").val(response );
},
error: function(response) {
console.log(response);
}
});
});
file_url.php
if(isset($_POST['get_subtotal'])){
$resultT=mysqli_query($connection, "SELECT SUM(amount) FROM sales_temp");
$rowT = mysqli_fetch_row($resultT);
echo $rowT[0];
}