You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP新手求助:实现点击按钮累加50积分的功能

解决点击按钮累计增加50积分的问题

嘿,作为PHP新手遇到这种情况太正常啦,我来帮你一步步梳理问题并修正代码~

首先,先看看你当前代码里的几个关键问题:

  • 按钮的name是hey,但PHP里判断的是isset($_POST['button']),这就导致表单提交后永远触发不了PHP逻辑,因为参数名完全不匹配。
  • 你用JavaScript计算固定的20+90,这和用户的实际积分没有关联,而且刷新页面后数据就没了,根本没法实现累计效果。
  • 数据库连接参数是空的,而且没有处理连接失败的情况,也没有读取、更新积分的核心逻辑。

接下来是修正后的完整代码,我加了详细注释,方便你理解每一步的作用:

<!DOCTYPE html>
<html>
<head>
    <title>积分累计功能</title>
</head>
<body>
    <form method="POST">
        <!-- 把按钮的name改成和PHP判断一致的标识 -->
        <button name="add_points">点击增加50积分</button>
        <p>当前积分:<span id="demo"><?php echo $current_points; ?></span></p>
    </form>

    <?php
    // 1. 数据库连接配置(请替换成你自己的数据库信息)
    $servername = "localhost";
    $username = "你的数据库用户名";
    $password = "你的数据库密码";
    $dbname = "你的数据库名";

    // 2. 初始化当前积分变量
    $current_points = 0;

    // 3. 连接数据库并处理连接错误
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    if (!$conn) {
        die("数据库连接失败: " . mysqli_connect_error());
    }

    // 4. 自动创建存储积分的表(第一次运行后可以注释掉这段)
    $create_table_sql = "CREATE TABLE IF NOT EXISTS users (
        id INT(11) AUTO_INCREMENT PRIMARY KEY,
        points INT(11) DEFAULT 0
    )";
    mysqli_query($conn, $create_table_sql);

    // 5. 读取当前用户的积分(这里暂时用ID=1的用户演示,后续可改成登录用户ID)
    $result = mysqli_query($conn, "SELECT points FROM users WHERE id = 1");
    if ($row = mysqli_fetch_assoc($result)) {
        $current_points = $row['points'];
    } else {
        // 如果用户不存在,插入一个初始积分为0的用户
        mysqli_query($conn, "INSERT INTO users (points) VALUES (0)");
        $current_points = 0;
    }

    // 6. 处理按钮点击事件:点击后积分加50并更新到数据库
    if (isset($_POST['add_points'])) {
        $new_points = $current_points + 50;
        mysqli_query($conn, "UPDATE users SET points = $new_points WHERE id = 1");
        // 更新当前积分变量,确保页面刷新后显示最新值
        $current_points = $new_points;
    }

    // 7. 关闭数据库连接
    mysqli_close($conn);
    ?>
</body>
</html>

几个关键说明:

  • 数据库部分:我加了自动创建users表的代码,第一次运行后你可以把这段注释掉;请务必替换成你自己的数据库用户名、密码和数据库名。
  • 用户模拟:这里暂时用ID为1的用户来演示,如果你之后要做登录功能,只需要把WHERE id = 1改成当前登录用户的ID即可。
  • 累计逻辑:每次点击按钮,都会先读取当前积分,加50后更新回数据库,这样刷新页面后积分也不会丢失,真正实现累计效果。
  • 表单处理:按钮的name和PHP里的isset($_POST['add_points'])对应上了,这样点击按钮后才能触发积分更新的逻辑。

如果还有不清楚的地方,随时问~

内容的提问来源于stack exchange,提问作者Izaya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:06:24