php - 根据单击的特定提交按钮的值更新列

标签 php mysql

我什至不太确定我应该怎么问这个问题,但我会继续尝试并尽可能地解释它 - 如果我说的任何内容没有意义,请告诉我.

我正在创建一个基于社区的网站,作为我自己的个人学习项目,作为该网站的一部分,用户将能够加入特定的“群组”——群组是用户可以讨论共同兴趣的地方等等。到目前为止,我创建了两个组来进行测试,我正在尝试根据用户点击的按钮将用户分配到其中一个组。

下面的代码在页面上显示有关群组的信息以及用于加入该特定群组的按钮。当然,当用户单击加入一个组时,它只是加入了第一个组,即使我单击第二个显示的按钮也是如此,因为我从 join_group 获取值,因为我只有一个名字。

我知道我的输入没有经过清理,但这是我稍后要离开的事情。

我需要做的是为 $_POST['join_group'] 做一些我认为的 foreach,但不完全确定如何去做。有什么想法吗?

显示组

foreach ($group_info as $key => $value) {
    echo "<div>Group name: " . $value['group_name'] . "</div>";
    echo "<div>Description: " . $value['description'] . "</div>";
    echo "<div>Members: " . $value['group_size'] . "</div>";                    
    echo "<form method='post'>";
    echo "<input name='group_id' type='hidden' value='" . $value[0][$i] ."'>";
    echo "<button name='join_group' class='btn btn-green'>Join Group</button>";
    echo "</form>";

    $i = $i++;
}

插入数据

if (isset($_POST['join_group'])) {

try {
    $join_group = $db->prepare("INSERT INTO groups_members (group_id, username)
                                VALUES (:group_id, :username)
                               ");
    $join_group->bindParam(":username", $_SESSION['username']);
    $join_group->bindParam(":group_id", $group_id);
    $join_group->execute();

    $update_members_number = $db->prepare("UPDATE groups 
                                           SET group_size = group_size + 1 
                                           WHERE id = :group_id
                                           ");
    $update_members_number->bindParam("group_id", $group_id);
    $update_members_number->execute();
}

catch (Exception $e) {
    echo $e->getMessage();
}

最佳答案

代码中最有问题的问题是,在将 group_id 参数绑定(bind)到查询的地方,您没有使用 $_POST 数组,但可能将其设置为 null。试试这个:$join_group->bindParam(":group_id", $_POST['group_id']); 而不是这个 $join_group->bindParam(":group_id", $group_id) ;

除此之外,我个人喜欢显式设置表单属性,例如:

<form method='post' action='.'>

...和...

<button type='submit' name='join_group' class='btn btn-green'>Join Group</button>

希望对您有所帮助!

关于php - 根据单击的特定提交按钮的值更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24701939/

相关文章:

php - shell_exec() 不会改变 Linux 中的 qdisc

mysql - 尝试理解 MySQL 自连接

javascript - 如何将数据 JSON 字符串从 PHP 传递到外部 javascript

php - mysql:包含在 mysql 查询中

php - 从php获取json数组

mysql - 使所有自动递增整数的位数相同,前导零

C#和mysql重复查询

Mysql导入sql文档时报错无法添加外键约束

php - 我如何在创建查询时检查 mysql 数据库表字段值?

php - 在 PDO 中,如果将 int 引用为字符串,性能会有所不同吗?