下面是一个函数,它从数据库中输出包含现有用户的表单,带有复选框和提交按钮。用户选择要删除的一个或多个用户并提交表单。我现在正在做的是在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')的内容符合预期,但为什么输入和标签标签会放入value属性?
答案 0 :(得分:4)
问题出在你的for
循环中。在那里,您将所有HTML附加到已经$users
== $users
的变量username1,username2
。如果您在完成echo $users;
循环后执行var_dump($users);
甚至for
,您会看到。
你想在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>";
}