如何添加已选中的复选框的值?

时间:2019-03-20 06:58:54

标签: php html css mysql sql

几天前我问了这个问题,但是我是一个初学者,没有人想了解我在说什么,所以我会尽可能地再问一次。我有以下复选框,它们具有值。值是菜单上项目的成本。我知道您可以通过执行$ _POST函数来获取值,但是我不是在尝试回显值,也不是在尝试使用流行的初学者PHP表单技术来回显您在输入字段中输入的名称。我要实现的目标是添加已选中的复选框的值。因此,如果选中了值为10的复选框,并且选中了值为11的另一个复选框和值为5的另一个复选框,则我想表示价格为26。

我完全理解使用isset查看是否已选中复选框,然后回显您想要的任何内容。我是PHP的新手,我得到的最受欢迎的答案之一就是使用value属性,就像我在代码中所做的那样,它被引用为“将在表单后的$ _POST ['foo']中为您提供123如果用户选中此复选框,则提交。”。这没有帮助,没有提及isset,不是现在很重要,而且还告诉我如果已检查,它将获得123值。那没有达到我想要的。

我知道我可以为每个复选框分配变量值,这将是一个非常好的主意,但是我将如何添加仅选中的复选框呢?与之相同,仅添加复选框的值,以便将数字相加,因为数字是它们的值。

请没有聪明的答案,我已经有人用JS,甚至是jQuery给我解决方案,人们只是告诉我如何回显一个值。

再次说明一下,我是PHP的初学者,我已经检查了100多个不同的问题,但找不到我想要的东西。请不要给我非PHP以外的答案,我不想知道如何回显元素的值,尽管也许那是我出问题的地方,也许我也不知道如何获得值,但是仅获取值不会做任何事情,也不会添加已一起选中的复选框的数值来获得您订购的所有食物的总价。

这是我的HTML代码:

<!DOCTYPE html>
<html>
<head>
<title>Order</title>
<link rel="stylesheet" type="text/css" href="menu.css">
</head>
<body>
<form method="post" action="menu.php">
<ul>
    <li>
<ul class="menus">
<li><input type="checkbox" name="edible1" value="12">Sausage Rolls</li>
<li><input type="checkbox" name="edible2" value="8">Fries</li>
<li><input type="checkbox" name="edible3" value="10">Wings</li>
<li><input type="checkbox" name="edible4" value="11">Spinach Pinwheels</li>
<li><input type="checkbox" name="edible5" value="6">Garlci Bread</li>
</ul>
    </li>
    <li>
<ul class="menus">
    <li><input type="checkbox" name="edible6" value="18">Instant Pot Chicken</li>
    <li><input type="checkbox" name="edible7" value="20">Salmon Pattles</li>
    <li><input type="checkbox" name="edible8" value="23">Callco Cabbage</li>
    <li><input type="checkbox" name="edible9" values="22">Bacon Wrappend Jalapeno</li>
    <li><input type="checkbox" name="edible10" value="19">Potato Mash</li>
</ul>
    </li>
    <li>
<ul class="menus">
    <li><input type="checkbox" name="edible11" value="5">Edible Cookie Dough</li>
    <li><input type="checkbox" name="edible12" value="4">Ice Cream Sandwich</li>
    <li><input type="checkbox" name="edible13" value="7">Cheesecake</li>
    <li><input type="checkbox" name="edible14" value="3">Chocolate Cake</li>
    <li><input type="checkbox" name="edible15" value="2">Brownies</li>
</ul>
    </li>
    <li>
<ul class="menus">
    <li><input type="checkbox" name="edible16" value="5">Wine</li>
    <li><input type="checkbox" name="edible17" value="5">Beer</li>
    <li><input type="checkbox" name="edible18" value="5">Water</li>
    <li><input type="checkbox" name="edible19" value="5">Juice</li>
    <li><input type="checkbox" name="edible20" value="5">Coffee</li>
</ul>
    </li>
</ul>
<input type="submit" name="order" value="Order">
</form>
</body>
</html>

这是我的CSS,如果出于某种原因您对此很在意,也许您想知道idk在我眼中的外观是什么?

ul,li {
    list-style:none;
    padding : 10px;
}
  form > ul {
     display:flex;
}

我不知道如何处理PHP。在将两个输入值相加之前,我已经制作了表格,但是什么是书面值而不是某些给定值,并且它没有复杂的最后通atum。我知道使用isset来回显是否已检查过的东西,我可以从输入字段中获取一个值,可以将两个值加在一起(但不能是数字)。我已经坚持了两天,已经走了很多小时,我觉得在这一点上我一定是在做我遗忘的错误事情,我确实确实不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

由于复选框的前缀为edible,因此您可以循环$_POST数组并查找以该数组开头的元素。如果找到匹配项,请将其添加到$sum变量中。仅发送已选中的复选框,因此您不必考虑未选中的复选框。

if (isset($_POST['order'])) {
    $sum = 0;
    foreach ($_POST as $key => $value) {
        if (strpos($key, "edible") === true) {
            $sum += $value;
        }
    }
    echo $sum;
} else {
    echo "POST not sent.";
}

然后根据需要打印$sum

或者,您可以重命名所有复选框,其中它们均为 all 名为name="edible[]",使其成为“ HTML数组”。

<ul class="menus">
    <li><input type="checkbox" name="edible[]" value="12">Sausage Rolls</li>
    <li><input type="checkbox" name="edible[]" value="8">Fries</li>
    <li><input type="checkbox" name="edible[]" value="10">Wings</li>
    <li><input type="checkbox" name="edible[]" value="11">Spinach Pinwheels</li>
    <li><input type="checkbox" name="edible[]" value="6">Garlci Bread</li>
</ul>

然后对所有复选框执行此操作。

那你只要做

if (isset($_POST['order'])) {
     $sum = array_sum($_POST['edible']);
     echo $sum;
} else {
    echo "POST not sent.";
}

答案 1 :(得分:-1)

将名称更改为.triggeredDiv { display: block; } .triggeredDiv.hidden { display: none; } ,依此类推。提交后,值将位于name="edible[1]"中的数组中。然后可以使用$_POST对此进行总结。