0

管理者が選択した多数のユーザーをランダム化したいと考えています。

最初に、"Users" テーブルからすべての名前を読み取るページを作成します。次に、名前の横にチェックボックスを付けて表示し、管理者が参加しない名前の選択を解除できるようにします。

<input name="User<? echo $rows['UserID']; ?>" type="checkbox" value="1" checked/>

したがって、User1 = 1; のような値が設定されます。ユーザー2 = 0; User3 = 1 など...

次に、フォームで選択されたユーザーをデータベースに書き込み、そのテーブルを再度読み取って参加者をランダム化できるようにします。前のフォームから動的変数を読み取るにはどうすればよいですか? POST から変数を読み取り、それを変数 Player に格納しようとしています (つまり、User1 の値は Player1 変数に格納されています)...これは機能していないようです:

    $x = 1;
while ($x <= $total_records) {
    ${"Player" . $x} = $_POST[ ${"User" . $x} ];
    $x++;
    echo "Player" . $x . " = " . ${"Player" . $x} . "<BR>";
}

結果は「Player1 = 」、「Player2 = 」です。常に空。

何かアイデア、またはそれを行う簡単な方法はありますか? ;) ありがとう!

4

1 に答える 1

2

別のアプローチをお勧めします。チェックボックスごとに異なる名前を作成する代わりに、それらを配列にして、それらの値をユーザーの ID にするのはどうですか?

例えば:

<input type="checkbox" name="User[]" value="<? echo $rows['UserID']; ?>" />

次に、送信された配列を反復処理するだけです。

if (isset($_POST['User']) && is_array($_POST['User'])) {
    foreach ($_POST['User'] as $userId) {
        // do something with the user id!
    }
}

リストを再利用する「リスト」として保持したい場合は、implode()投稿された配列と、explode()それを再度使用する必要がある場合があります。

$combinedIds = implode(',', $_POST['User']);
// now you have 1,3,17

$splitIds = explode(',', $combinedIds);
// now you have array(1, 3, 17)

リストをdb、セッション変数などに保存できます。セッション変数に保存する場合は、配列を直接保存することもできます(どちらか簡単な= P)。

于 2013-10-15T16:49:11.180 に答える