从POST获取动态变量

时间:2013-10-15 16:44:46

标签: php mysql forms variables dynamic

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

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

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

所以,它会设置像User1 = 1这样的值; User2 = 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 =”。永远是空的。

任何想法,或更简单的方法吗? ;) 谢谢!

1 个答案:

答案 0 :(得分: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)。