php - 从 POST 获取动态变量

标签 php mysql forms variables dynamic

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

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

<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 =”。始终为空。

有什么想法,或者更简单的方法吗? ;) 谢谢!

最佳答案

我建议采用单独的方法。与其为每个复选框创建不同的名称,不如将它们制作为数组并将其值作为用户的 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)

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

关于php - 从 POST 获取动态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19386583/

相关文章:

MySQL - 使用 COUNT 选择返回 NULL 行

reactjs - 如果字段为空,则禁用提交按钮

php - .htaccess 将 URL 中的第一段视为所有 php 文件的 $_GET 参数

php - 来自数据库的带有 optgroup 的动态选择列表

php - 图像自动旋转

php - fatal error : Call to a member function bind_param() on a non-object using Update Query

php - 如何通过 php 读取 Windows unicode 文件并将它们存储在 utf-8 数据库中?

javascript - 通过 mysql npm 包更新时出错

javascript - 是否可以在发送前更改表单数据?

forms - Symfony 2 将变量传递给表单类以在表单中动态创建隐藏字段