0

我想随机化管理员选择的一些用户。

所以首先,我有一个从“用户”表中读取所有名称的页面。然后,我在名称旁边显示一个复选框,以便管理员可以取消选择不会参与的名称。

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

因此,它将设置像 User1 = 1; 这样的值。用户2 = 0;用户 3 = 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)

您可以将列表存储在数据库中,会话变量等。如果您存储在会话变量中,您也可以直接存储数组(以更容易的方式=P)。

于 2013-10-15T16:49:11.180 回答