0

以下は、チェックボックスと送信ボタンを使用して、データベースから既存のユーザーを含むフォームを出力する関数です。ユーザーは、削除する 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 属性に入れられるのはなぜですか?

4

1 に答える 1

4

問題はあなたのforループにあります。$usersそこで、すでに$users==である変数にすべての HTML を追加しています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>";
}
于 2012-10-08T09:23:18.657 に答える