计算php表内的总价

计算php表内的总价,php,html,css,Php,Html,Css,我想在一张表中显示总价 我有两个数组,其中一个是汽车的名称,第二个是每辆车的价格 我设法在表中显示了价格和名称, 但问题是,我有一个“复选框”的东西,显示汽车是否售出 我试图进行合计计算,计算所有选中复选框的总价 这意味着-当复选框处于启用状态时,总价变量应将该车的价格添加到该复选框中 下面是它的外观: 我必须提到的是,我刚开始在大学学习php, 以下是数组和变量: <?php $cars = array ("ford","fiat",

我想在一张表中显示总价

我有两个数组,其中一个是汽车的名称,第二个是每辆车的价格

我设法在表中显示了价格和名称, 但问题是,我有一个“复选框”的东西,显示汽车是否售出

我试图进行合计计算,计算所有选中复选框的总价

这意味着-当复选框处于启用状态时,总价变量应将该车的价格添加到该复选框中

下面是它的外观:

我必须提到的是,我刚开始在大学学习
php
, 以下是数组和变量:

<?php  
    $cars = array ("ford","fiat","renault","mazda");
    $prices = array(100,80,90,120);
    $sold = '<input type="checkbox" name="sold">';
?>
以及表的
php
代码:

<?php  
    $cars = array ("ford","fiat","renault","mazda");
    $prices = array(100,80,90,120);
    $sold = '<input type="checkbox" name="sold">';
?>

<h1>list of cars</h1>
<table>
    <th>name</th>
    <th>price</th>
    <th>sold</th>
     <?php
        for($i=0;$i<count($cars);$i++){
            echo 
            "<tr>
            <td>$cars[$i]</td>.
            <td>$prices[$i]$</td>.
            <td>$sold</td>.
            </tr>";
        }
    ?>
</table>

汽车清单
名称
价格
出售

如何计算所有复选框价格的数量?

我会修改复选框,将价格作为数据属性包含在内,并将其放在for循环中,而不是放在for循环之外

$sold = '<input type="checkbox" data-price="$prices[$i]" name="sold">';
要显示总数,您需要一个div来保存总数

<div id="total"></div>


imvain2的答案将是您的最佳选择,因为它不需要客户机-服务器往返

但是,如果您想在php中执行此操作,则需要以某种方式将复选框与汽车相关联

一种方法是像这样调整for循环

for($i = 0; $i < count($cars); $i++) {
    echo (
        "<tr>
            <td>{$cars[$i]}</td>
            <td>{$prices[$i]}$</td>
            <td><input type=\"checkbox\" name=\"sold[]\" value=\"{$prices[$i]}\"></td>
        </tr>"
    );
}

**注意:如果需要,请修改我的英语

请注意,孔代码是在单个php文件中编写的。 退出一段时间后,我设法修复我的代码。 首先,正如前面所建议的,给出的JS代码是用jquery编写的,我还没有学会JS的这一部分,因此我在JS中的朋友的帮助下使用dom编写了代码

CSS:


身体{
文本对齐:居中;}
桌子{
字体系列:arial,无衬线;
边界塌陷:塌陷;
宽度:50%;
左边距:自动;
右边距:自动;
利润率最高:15%;
}
th{
}
td,th{
边框:1px实心#dddddd;
文本对齐:居中;
填充:8px;
}
tr:n个孩子(偶数){背景:#CCC}
tr:n个孩子(奇数){背景:#FFF}
JS:(此时脚本标记的位置并不重要,但iv'e将其定位在php文件顶部的头内容中

<script>
  function calcTotal() {
    let sum = 0;
    for (let index = 0; index < 4; index++) {
        let priceAsStr  = document.getElementById("price" + index).innerHTML;
        let price = parseInt(priceAsStr);
        let soldOrNot = document.getElementById("soldOrNot" + index).checked;
        if (soldOrNot == true)
        {
           sum = sum + price;
        }
    }
    document.getElementById("sum").innerHTML ="$" + sum;
  }

函数calcTotal(){
设和=0;
对于(让索引=0;索引<4;索引++){
让priceAsStr=document.getElementById(“price”+index).innerHTML;
let price=parseInt(priceAsStr);
让soldOrNot=document.getElementById(“soldOrNot”+索引)。选中;
if(soldOrNot==true)
{
总和=总和+价格;
}
}
document.getElementById(“sum”).innerHTML=“$”+sum;
}
最后,对于身体:

<?php
    $cars = array("Ford","Fiat","Renault","Mazda");
    $prices = array(100,80,137,453);  
?>
<table>
    <tr>
        <th>Cars</th>
        <th>Price</th>
        <th>Sold</th>
   </tr>
   
 <?php
    $sum = 0;
    for ($i=0; $i < 4; $i++) { 
        echo "<tr id='row$i'>
        <td>{$cars[$i]}</td>
        <td id='price{$i}'> {$prices[$i]}$</td>
        <td><input type='checkbox' id='soldOrNot{$i}' name='sold{$i}' onClick='calcTotal()' value=''> </td>
        </tr>";
    }
    
 ?>
</table>
<h1>Total Price: <span id="sum">0</span></h1>

汽车
价格
出售

如何使最终结果显示在php页面上?我已经按照您的建议完成了步骤,但我不知道该怎么做so@moses我更新了我的答案,包括更新的javascript和显示总数的div。
$total = 0;
foreach ($_POST['sold'] as $value) {
    $total += (int)$value;
}
<style>
    
    body {
    text-align:center;}

    table {
        font-family: arial, sans-serif;
        border-collapse: collapse;
        width: 50%;
        margin-left: auto;
        margin-right: auto;
        margin-top:15%;
    }
    
    th{
        
    }

    td, th {
        border: 1px solid #dddddd;
        text-align: center;
        padding: 8px;
    }

    tr:nth-child(even) {background: #CCC}
    tr:nth-child(odd) {background: #FFF}
</style>
<script>
  function calcTotal() {
    let sum = 0;
    for (let index = 0; index < 4; index++) {
        let priceAsStr  = document.getElementById("price" + index).innerHTML;
        let price = parseInt(priceAsStr);
        let soldOrNot = document.getElementById("soldOrNot" + index).checked;
        if (soldOrNot == true)
        {
           sum = sum + price;
        }
    }
    document.getElementById("sum").innerHTML ="$" + sum;
  }
<?php
    $cars = array("Ford","Fiat","Renault","Mazda");
    $prices = array(100,80,137,453);  
?>
<table>
    <tr>
        <th>Cars</th>
        <th>Price</th>
        <th>Sold</th>
   </tr>
   
 <?php
    $sum = 0;
    for ($i=0; $i < 4; $i++) { 
        echo "<tr id='row$i'>
        <td>{$cars[$i]}</td>
        <td id='price{$i}'> {$prices[$i]}$</td>
        <td><input type='checkbox' id='soldOrNot{$i}' name='sold{$i}' onClick='calcTotal()' value=''> </td>
        </tr>";
    }
    
 ?>
</table>
<h1>Total Price: <span id="sum">0</span></h1>