首页 > 解决方案 > 使用php计算多个复选框和价格

问题描述

我在数据库数据库中有表服务。它有 3 个字段 id、service_type、amount。

我有 html 表单,其中包含选择服务类型的复选框,我选择了服务类型,但金额必须自动计算并存储在数据库金额列中。但是当我从复选框中选择服务时出现一个错误,它被选中并存储在数据库中,但没有存储价格。我的脚本如下:

       <input type="checkbox" name="services[]" value="oilchange" 
      <input type="checkbox" name="services[]" value="acrepair" 
      <input type="checkbox" name="services[]" value="tyrechange" 

    <input type="submit" name="btnservice"  value="Confirm Services">

现在php脚本如下:

<?php $price=0.0;if (isset($_POST['services'])) {

$service=$_POST['services'];
$c=count($service);



for ($i=0; $i < $c; $i++) { 
     if ($service[$i]==fullservice) {

        $price=$price+5000;
        $iq="INSERT INTO tblservices( amount) VALUES ('$price')";
        $run=mysqli_query($con,$iq);
        if ($run) {

        }
     }
      elseif ($service[$i]==tyrebalance) {
         # code...
        $price=$price+4000;
        $iq="INSERT INTO tblservices( amount) VALUES ('$price')";
        $run=mysqli_query($con,$iq);
        if ($run) {

        }
     }
      elseif($service[$i]==oilchange) {
         # code...
        $price=$price+3000;
        $iq="INSERT INTO tblservices( amount) VALUES ('$price')";
        $run=mysqli_query($con,$iq);
        if ($run) {

        }
     }
      elseif ($service[$i]==acrepair) {
         # code...
        $price=$price+2000;
        $iq="INSERT INTO tblservices( amount) VALUES ('$price')";
        $run=mysqli_query($con,$iq);
        if ($run) {

        }
     }
      elseif ($service[$i]==tyrechange) {
         # code...
        $price=$price+1000;
        $iq="INSERT INTO tblservices( amount) VALUES ('$price')";
        $run=mysqli_query($con,$iq);
        if ($run) {

        }
     }
}
}if (isset($_POST['btnservice'])) {
$a=$_POST['services'];
$type=implode("/",$a);
$query="insert into tblservices(service_type,amount) values('$type','$price')";
$run=mysqli_query($con,$query);
if ($run) {
             echo "<script type = \"text/javascript\">
                                alert(\"Services Selected.................\");
                                window.location = (\"services.php\")
                                </script>";
                            }
                    else{
                           echo "<script type = \"text/javascript\">
                                alert(\"Login Failed. Try Again................\");
                                window.location = (\"services.php\")
                                </script>";
                        }


        }?>

我是新手,对不起,这就是为什么我不能上传我需要赢得声誉的图片,所以我可以发布图片以便更好或更详细地解释我的问题。

标签: phpmysql

解决方案


我可以在您的示例中看到两种类型的查询。在这里分享单一服务类型插入和总价插入。希望这可以帮助!!

<div class="container">
    <form action="" method="post">
        <input type="checkbox" name="services[]" value="oilchange"  />oilchange
        <input type="checkbox" name="services[]" value="acrepair"  />acrepair
        <input type="checkbox" name="services[]" value="tyrechange" />tyrechange
        <br/>
        <input type="submit" name="btnservice"  value="Confirm Services">
    </form> <?php
    $serviceChargeArr = array(
        'fullservice' => 5000,
        'tyrebalance' => 4000,
        'oilchange' => 3000,
        'acrepair' => 2000,
        'tyrechange' => 1000
    );
    $priceTotal = 0.0;
    if (isset($_POST['btnservice'])) {    
        if (isset($_POST['services'])) {
            $serviceArr    = $_POST['services'];
            $serviceArrCnt = count($serviceArr);

            //QUERY 1 - insert each with respect to clicked checkboxes
            for ($i = 0; $i < $serviceArrCnt; $i++) {
                if ($eachPrice = $serviceChargeArr[$serviceArr[$i]]) {
                    $insertArr[] = "('$serviceArr[$i]', '$eachPrice')";
                }
            }
            if (!empty($insertArr)) {//sigle insert query -each service and its price will be inserted
                $query="insert into tblservices (service_type, amount)
                        values".implode(", ",$insertArr ).";";
                echo $query."<br/>";
            }//QUERY 1 ENDS

            //QUERY 2 - insert single row with comma separated values and total price
            for ($i = 0; $i < $serviceArrCnt; $i++) {
                if ($eachPrice = $serviceChargeArr[$serviceArr[$i]]) {
                    $priceTotal += $eachPrice;
                }
            }
            if (!empty($serviceArr)) {
                $seviceList = implode(',', $serviceArr);
                $query="insert into tblservices (service_type, amount)
                        values ('{$seviceList}' , '{$priceTotal}') ;";
                echo $query."<br/>";
            }//QUERY 2 ENDS

            if($query) {
                $run = mysqli_query($con, $query);
                if ($run) {
                    echo "<br/> SUCCESS : inserted";
                } else {
                    echo "<br/> ERROR : try again<br/>Mysql Error: ".$con->error;
                }
            }
        }
    }  ?>
</div>

推荐阅读