【问题标题】:Array not being create from multiple checkboxes php数组不是从多个复选框php创建的
【发布时间】:2012-05-18 23:23:45
【问题描述】:

我对复选框输入中的特定数组有疑问。

$insert .= '<tr>
<td>' .$uname. '</td>
<td>' .$fname. '</td>
<td>' .$lname. '</td>
<td>' .$email. '</td>
<td>'.(($admin == 'y') ? 'Admin':'User').'</td>
<td><input type="checkbox" name="change['.$uid.']" 
           value="'.(($admin == 'y')?'n':'y').'"/>'
                   .(($admin == 'y')?'Make a user':'Make an admin user').'</tr>';

根据我一直在阅读的内容,如果有多个复选框,这应该创建一个可以运行的数组。 $uid 是 user id 并且名称显示为 change[1]、change[2] 等。这是可行的。

问题是当我通过这样的 while 语句运行它时:

while(list($key, $val) = each($_POST['change'])) {

我收到这条消息:

Warning: Variable passed to each() is not an array or object

有谁知道为什么会发生这种情况以及如何解决?

【问题讨论】:

  • 尝试 print_r 你的 $_POST['change'] 看看它有什么。

标签: php arrays post checkbox


【解决方案1】:

提交时未创建您的数组。我拿了你的代码并制作了所需的表格等。

var_dump($_POST['change']); 返回 NULL,即使我删除了 $uid。

我希望我能告诉你原因,但看起来它“应该”对我有用。 我建议清理你的代码,将三元运算符取出来更美观,然后仔细检查你的引号。 PHP 讨厌单引号,即使它们理论上应该可以工作,例如在 POST 数组 ('change') 的参数中,引号可能会混淆它。

嗯,PHP 不讨厌单引号,你只需要小心它们,就好像它们使用不正确,这意味着代码不会被解析......

【讨论】:

  • 我认为你是对的。我已经尝试了其他答案,有些答案已经奏效,但随后又无缘无故地停止工作。我将更改我的代码,看看是否会有所不同。
  • 我再次浏览并发现了一个提交按钮,我不小心将它设置为与复选框相同的名称,并且将其全部扔掉。
【解决方案2】:

复选框的名称不应包含索引值:

&lt;td&gt;&lt;input type="checkbox" name="change[]" value="'.(($admin == 'y')?'n':'y').'"/&gt;'.(($admin == 'y')?'Make a user':'Make an admin user').'&lt;/tr&gt;';

【讨论】:

    【解决方案3】:
    //$uid is unique, so you perhaps might use this
    // make sure $uid is set correctly
    // This is correct for multiple checkboxes
    
    <input type="checkbox" name="change['.$uid.'][]" ... 
    

    【讨论】:

    • 是的,至少通过每个用户:foreach ($_POST['value'][$uid] AS $this_user_data) {
    【解决方案4】:

    您需要使复选框名称 = change[]

    值 = $uid

    然后你可以遍历 $_POST['change'] 并检索 $uid

    EDIT 请记住,仅发送选中的复选框值

    【讨论】:

    • 所以这确实消除了消息,但这意味着我没有以前的值,即 y 或 n,并且我试图添加到数据库中。还有其他地方我可以放置这些值以便我仍然可以使用它们吗?
    • 您需要拥有用户的 uid - 对吗?如果勾选,复选框将返回 uid,如果未勾选,则不返回任何内容。这应该为您提供写入数据库所需的信息。
    猜你喜欢
    • 2018-06-13
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 2021-10-26
    • 1970-01-01
    相关资源
    最近更新 更多