以下は、チェックボックスと送信ボタンを使用して、データベースから既存のユーザーを含むフォームを出力する関数です。ユーザーは、削除する 1 人または複数のユーザーを選択し、フォームを送信します。私が今取り組んでいるのは、ユーザーが削除したいユーザーを含む確認ボックス (「削除してもよろしいですか...」) を 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 属性に入れられるのはなぜですか?