我有一个显示MySQL查询结果的PHP页面。它为每行添加了复选框。然后,在提交时将所选行插入另一个表中。
我的应用程序是一个传输规划平台。我正在寻找一种实时显示所选行总重量的方法,页面顶部的一个框显示所选行的当前总和。
任何人都可以指导我如何将此功能添加到现有页面。
我的代码目前显示如下:
<?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>
以上代码的输出如下所示:
答案 0 :(得分:0)
假设您不希望每次用户更改选择时都必须刷新页面,您需要在浏览器中使用Javascript而不是PHP来执行此操作。
答案 1 :(得分:0)
我认为你可以使用javascript函数。 为每个复选框添加onClick属性(如果您不想要提交按钮):
<INPUT TYPE="checkbox" NAME="switchBox" onclick="myfunction(this)">
然后myfunction应该用这样的东西来计算值:
<script language="javascript">
var total;
myfunction(checkboxId){
total = total + checkboxId.value;
}
</script>
请注意,这是一个未经检查的示例,只是为了让您了解解决方案。
答案 2 :(得分:0)
为了避免在更改时提交和自动加载页面,我会使用javascript / jQuery。
我要做的是:
weight
值附加到表格行(或复选框...):第一行为<tr data-weight="1604">
; 在复选框值更改时,循环显示所有具有所选复选框的行以获取并生成总和。那将是这样的:
$( “输入”)。变化(函数(){ var total_sum = 0; $( '输入')为( ':检查')每个(函数(){。 total_sum + = $(this).parents(“tr”)。data(“weight”); }); });
(无法正确格式化...)
在您想要的框中显示总和。
答案 3 :(得分:0)
正如其他人所说,你必须在Javascript中这样做,因为它将在客户端。我假设你没有在这个页面上使用像jQuery或Prototype这样的库,如果这就是你所做的一切,那么使用其中一个就太大了。
首先,添加一个包含总数的HTML元素:
<div>Total: <span id="total">0</span></div>
然而,您真正需要知道的信息是与每个复选框对应的权重。最简单的方法是将它存储在checkbox元素本身上。添加名为data-weight
的属性。例如:
<input type="checkbox" name="check[]" value="12" data-weight="1234" />
然后,添加一些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>
Aaaannd这是一个适合你的演示版! http://jsbin.com/ipeduf