【问题标题】:Issue getting PHP to accept checkbox selections让 PHP 接受复选框选择的问题
【发布时间】:2022-11-23 04:39:23
【问题描述】:

我试图让 PHP 接受来自表单中一系列复选框的信息,但是当我尝试验证/使用所述数据来操作其他数据时,它不存在。

<p><input type="checkbox" name="toppings[]" value="xchese"/>Extra Cheese</p>
<p><input type="checkbox" name="toppings[]" value="xmeat"/>Extra Meat</p>
<p><input type="checkbox" name="toppings[]" value="veg"/>Vegetarian</p>
if (isset($_POST["toppings"]))
{
    $toppings = $_POST["toppings"];
    for ($i = 0; $i < count($_POST["toppings"]); $i++)
    {
        printf("<p>Topping %s</p>", $_POST["toppings"][$i]);
        if ($toppings[$i] == "xchese")
        {
            $sando_total += 1.50;
            printf("<p>Extra Cheese</p>");
        }
        else if ($toppings[$i] == "xmeat")
        {
            $sando_total += 2.00;
            printf("<p>Extra Meat</p>");
        }
        else if ($toppings[$i] == "veg")
        {
            $sando_total += 2.00;
            printf("<p>Vegetarian</p>");
        }
    }
}

for 循环中发生的主要问题。它检测正在检查的数量,但不检测值是什么。

【问题讨论】:

  • 养成使用foreach循环遍历数组的习惯,它使代码更易于阅读和编写。
  • 我不明白这个问题。为什么它不检测值是什么?这就是它在 if 语句中测试的内容。
  • 告诉我们你从var_dump($toppings); 得到了什么

标签: php html


【解决方案1】:

首先,去掉复选框名称标签上的括号。不需要它们。

如果将 form 元素的 method 标记更改为 GET,您将看到表单中的复选框“发布”为:

page.php?toppings=xchese&toppings=xmeat&toppings=veg

在任何情况下,遍历 $_POST["toppings"] 应该就足够了。

正如我们在软件开发中通常所说的那样:它在我的机器上工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2012-10-16
    • 2020-08-12
    • 1970-01-01
    相关资源
    最近更新 更多