【问题标题】:Save checked value Checkbox array POST保存选中的值 Checkbox 数组 POST
【发布时间】:2012-07-25 06:20:33
【问题描述】:

我有一个复选框列表并将选中的值保存在一个数组中。但是,当有人单击“提交”并收到错误消息时,他们所有的复选框都会被遗忘。通常我会让脚本记住带有类似

的代码的复选框

如果复选框值 = OK { echo checked="checked"}

但是,现在我将它保存在一个数组中,我不知道该怎么做?

<?php

$sql = "SELECT merknaam FROM merken";
$result = mysql_query($sql);

while ($row = mysql_fetch_array($result)) {
    echo "&nbsp;&nbsp;<input type=\"checkbox\" name=\"merken[]\" value='" . $row['merknaam'] . "'>&nbsp;" . $row['merknaam'] . " <Br />  ";
}

?>

这是我用于复选框的代码。接下来我用这段代码显示数组:

$merkenstring = implode(",", $_POST['merken']);

echo $merkenstring;

结果:AC Ryan,Adidas,Agu,Cargo

希望有人能给我一个代码示例!

【问题讨论】:

    标签: php arrays checkbox


    【解决方案1】:

    假设您将其发布到同一页面,并且出现错误后$_POST['merken'] 仍然可用,请使用in_array() 对照$_POST 中的当前设置测试每个复选框的值:

    while ($row = mysql_fetch_array($result)) {
        // If the current value is in the $_POST['merken'] array
        // and the array has been initialized...
        if (isset($_POST['merken']) && is_array($_POST['merken']) && in_array($row['merknaam'], $_POST['merken'])) {
          // Set the $checked string
          $checked = "checked='checked'";
        }
        // Otherwise $checked is an empty string
        else $checked = "";
        // And incorporate it into your <input> tag
        echo "&nbsp;&nbsp;<input $checked type=\"checkbox\" name=\"merken[]\" value='" . $row['merknaam'] . "'>&nbsp;" . $row['merknaam'] . " <Br />  ";
        //----------------------^^^^^^^^^^
    }
    

    如果这是发布到不同的脚本,您将(与返回到先前脚本的任何发布值一样)需要将数组存储在 $_SESSION 中,并在您的 in_array() 调用中与 $_SESSION['merken'] 进行比较。

    【讨论】:

    • 您是我的救命恩人!以正确的方式将变量合并到回声中后,就像魅力一样工作。不过小问题,起初,当还没有字符串时,我在表的结果之前收到此错误消息:警告:in_array() [function.in-array]: Wrong datatype for second argument in /vhosts/thecompanytree第 487 行的 .nl/httpdocs/signup.php 我该如何解决这个问题?
    • @user1555076 请参见上面的更改。使用 isset()、is_array() 进行测试以确保 $_POST['merken'] 存在。
    • 不确定我是否完全理解,但我会继续努力。它就像一个魅力!
    • @user1555076 重要的是要了解...第一次加载页面时,$_POST 为空,并且扩展名为$_POST['merken'] 未设置。所以我们测试那个 post key 是否已经设置,如果它 is 设置,它也是一个数组。然后我们知道在in_array() 中使用是安全的。如果它还没有设置,那么它只是继续else 的情况并使$checked 成为一个空字符串。
    • 啊,现在我明白了!非常感谢!
    【解决方案2】:

    假设$row['merknaam'] 是复选框值,$_POST['merken'] 持有一个选中复选框值的数组,那么您只需检查该值是否在数组中:

    if (in_array($row['merknaam'], $_POST['merken'])) {
       // this checkbox should be checked
    }
    

    【讨论】:

      猜你喜欢
      • 2018-11-03
      • 2010-09-30
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 2017-11-17
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      相关资源
      最近更新 更多