【问题标题】:Strange output from variable to hidden form field从变量到隐藏表单域的奇怪输出
【发布时间】:2012-10-08 09:17:02
【问题描述】:

下面是一个函数,它从数据库中输出包含现有用户的表单,带有复选框和提交按钮。用户选择一个或多个要删除的用户并提交表单。我现在正在做的是在 js 中实现一个确认框(“您确定要删除...”),其中应包含用户要删除的用户。

因此,我将用户名放入隐藏字段中,js 函数将从该字段中检索用户名。问题是不仅用户名被放入隐藏的输入字段值属性,而且还有几个输入字段(!?)。如果我在属性中硬编码例如'username1,username2',它应该可以正常工作,但如果我使用变量$users,则不会。

    public function ShowUsers($userArray) {

        $userIdArray = $userArray[0];
        $userNameArray = $userArray[1];
        $users = implode(",", $userNameArray);

        echo $users;        // username1,username2...

        $nrOfUsers = count($userIdArray);

        for ($i = 0; $i < $nrOfUsers; $i++) {
            $users .= "<label for='$userIdArray[$i]'>
                        $userNameArray[$i]
                        <input type='checkbox' name='$this->_checkBox' value='$userIdArray[$i]' /><br/>
                        </label>";
        }

        $userList = "<div class='userList'>
                    <form id='form3' method='post' action=''>
                        <fieldset>
                            <p>Existing users</p>
                            $users
                            <input type='hidden' value='$users' />
                            <input type='submit' id='$this->_submitRemove' name='$this->_submitRemove' Value='Ta bort' />
                        </fieldset>
                    </form>
                    </div>";

        return $userList;
    }

输出如下:

<input type='hidden' value='username1,username2<label for='47'>
                        username1
                        <input type='checkbox' name='check[]' value='47' /><br/>
                        </label><label for='50'>
                        username2
                        <input type='checkbox' name='check[]' value='50' /><br/>
                        </label>' />

我只是不明白为什么会发生这种情况? $users 的内容(本例中为 'username1' 和 'username2')如预期的那样存在,但为什么将 input 和 label 标签放入 value 属性中?

【问题讨论】:

  • 因为你在 for 循环中改变了上面的 $users 变量,添加了更多的内容。
  • 您是否尝试删除顶部的echo $users;

标签: php arrays forms variables


【解决方案1】:

问题出在您的for 循环中。在那里,您将所有 HTML 附加到变量 $users 已经是 $users == username1,username2。如果您在完成for 循环之后执行echo $users; 甚至var_dump($users);,您会看到。
你到底想在for 循环中实现什么?你是不是想说

for ($i = 0; $i < $nrOfUsers; $i++) {
    echo "<label for='$userIdArray[$i]'>
                $userNameArray[$i]
                <input type='checkbox' name='$this->_checkBox' value='$userIdArray[$i]' /><br/>
          </label>";
}

【讨论】:

  • 啊,当然。愚蠢的我,我为用户使用了相同的变量名作为输入字段。我责怪我已经编程了 14 小时以上 ;) 谢谢!
猜你喜欢
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-10
  • 2023-04-09
  • 1970-01-01
相关资源
最近更新 更多