Php 计算所选复选框的值
我有一个显示MySQL查询结果的PHP页面。它向每行添加复选框。然后在提交时将选定的行插入到另一个表中 我的应用程序是一个交通规划平台。我正在寻找一种实时显示所选行的总权重的方法,页面顶部的一个框显示所选行的当前总和 有谁能指导我如何将此功能添加到现有页面中 我的代码当前显示如下:Php 计算所选复选框的值,php,mysql,sum,Php,Mysql,Sum,我有一个显示MySQL查询结果的PHP页面。它向每行添加复选框。然后在提交时将选定的行插入到另一个表中 我的应用程序是一个交通规划平台。我正在寻找一种实时显示所选行的总权重的方法,页面顶部的一个框显示所选行的当前总和 有谁能指导我如何将此功能添加到现有页面中 我的代码当前显示如下: <?php mysql_connect("localhost", "username", "password")or die("cannot connect"); mysql_selec
<?php
mysql_connect("localhost", "username", "password")or die("cannot connect");
mysql_select_db("databasename")or die("cannot select DB");
$sql="SELECT `crtd dept`,`customer`,`case no`,`gross mass` from despgoods_alldetails where transporttypename= 'localpmb'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
?>
<table border=1>
<tr>
<td>
<form name="form1" method="post">
<table>
<tr>
<td>#</td>
<td>Dispatch Area</td>
<td>Customer</td>
<td>Case Number</td>
<td>Weight</td>
</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td><input type="checkbox" name=check[] value="<?php echo $rows['case no']; ?>"></td>
<td><?php echo $rows['crtd dept']; ?></td>
<td><?php echo $rows['customer']; ?></td>
<td><?php echo $rows['case no']; ?></td>
<td><?php echo $rows['gross mass']; ?></td>
</tr>
<?php
}
?>
<tr>
<td colspan=3><input name="Next" type="submit" id="Next" value="Next"></td>
</tr>
<?php
$check=$_POST['check'];
if($_REQUEST['Next']=='Next'){
{
$sql="INSERT INTO loaddetails (dispatcharea,Customer, casenumber, weight,LOCStatus)
SELECT `crtd dept`,Customer,`case no`,`gross mass`,'in Load Creation'
FROM despgoods_alldetails WHERE `Case No` = '$val'";
foreach($check as $key=>$value)
{
$sql="INSERT INTO loaddetails (dispatcharea,Customer, casenumber, weight,LOCStatus)
SELECT `crtd dept`,Customer,`case no`,`gross mass`,'in Load Creation'
FROM despgoods_alldetails WHERE `Case No` = '$value'";
$final=mysql_query($sql);
if($final)
{
echo "<meta http-equiv=\"refresh\" content=\"0;URL=planlocalpmbstep2.php\">";
} }
}
}
// Check if delete button active, start this
// if successful redirect to php.php
mysql_close();
?>
</table>
</form>
</td>
</tr>
</table>
假设您不想在用户每次更改选择时都刷新页面,那么您需要在浏览器中使用Javascript而不是PHP进行刷新。我认为您可以使用Javascript函数。
向每个复选框添加onClick属性(如果您不想要提交按钮):
然后myfunction应该用如下公式计算值:
<script language="javascript">
var total;
myfunction(checkboxId){
total = total + checkboxId.value;
}
</script>
总风险价值;
myfunction(checkboxId){
总计=总计+复选框ID.value;
}
请注意,这是一个未经检查的示例,只是为了让您了解解决方案 为了避免在更改时提交和重新加载页面,我将使用javascript/jQuery
我要做的是:
使用html5数据属性将所有单独的权重
值附加到表行(或复选框…):第一行的
李>
在复选框值更改时,循环所有具有选中复选框的行以获取和生成总和。这大概是:
$(“输入”).change(函数(){
var total_sum=0;
$('input')。是(':checked')。每个(函数(){
总金额+=$(本)。父母(“tr”)。数据(“重量”);
});
});
(无法正确设置格式…)
在所需框中显示总和
正如其他人所说,您必须使用Javascript来完成这项工作,因为它将位于客户端。我假设您在本页上没有使用jQuery或Prototype之类的库,如果这就是您所做的全部,那么使用其中一个库就太过分了
首先,添加一个HTML元素,该元素将包含您的总数:
<div>Total: <span id="total">0</span></div>
然后,添加一些javascript:
<script>
(function () {
var totalEl = document.getElementById('total'),
total = 0,
checkboxes = document.form1['check[]'],
handleClick = function () {
total += parseInt(this['data-weight'], 10) * (this.checked ? 1 : -1);
totalEl.innerHTML = total;
},
i, l
;
for (i = 0, l = checkboxes.length; i < l; ++i) {
checkboxes[i].onclick = handleClick;
}
}());
</script>
(功能(){
var totalEl=document.getElementById('total'),
总计=0,
复选框=document.form1['check[]'],
handleClick=函数(){
总计+=parseInt(此['data-weight',],10)*(此项已勾选?1:-1);
totalEl.innerHTML=总计;
},
i、 l
;
对于(i=0,l=checkbox.length;i
aaannd这里有一个工作演示给你 你的具体问题是什么?作为指导,如果您需要它的实时性,我会说这是通过JavaScript完成的。为什么您要将数据权重
添加到
而不是复选框本身?此外,如果您跟踪总数,您不需要重新计算所有复选框,只需添加或减去刚刚更改的值即可。@nickf当然这可以优化,只是为了说明它的工作原理。我可以想象我也会将该值用于其他事情,因此我可能会将其附加到行中以供将来使用,但在这种情况下没有真正的原因。嗨,如果数据来自MySQL数据库而不是静态输入字段,我如何实现这一点。谢谢。@Ryan Smith只需在任何需要的地方重复php中的值Hi@Nickf,感谢您的反馈,在输入字段中声明数据权重=“1234”。我的信息来自MySQL数组,所以我不能每行这么做。如何根据MySQL查询的结果使其动态化?Thanks@RyanSmith你当然可以<代码>“>
谢谢Ivan,你知道如何对MySQL数据库查询中的动态内容执行此操作吗?我认为它对动态加载的内容也很有效,事实上,你将对象本身传递给函数,当页面填充查询中的值时,值字段应该包含一些值。只需将javascript代码添加到页面中。
<input type="checkbox" name="check[]" value="12" data-weight="1234" />
<script>
(function () {
var totalEl = document.getElementById('total'),
total = 0,
checkboxes = document.form1['check[]'],
handleClick = function () {
total += parseInt(this['data-weight'], 10) * (this.checked ? 1 : -1);
totalEl.innerHTML = total;
},
i, l
;
for (i = 0, l = checkboxes.length; i < l; ++i) {
checkboxes[i].onclick = handleClick;
}
}());
</script>