Use PHP to develop user title and medal system functions in the knowledge question and answer website.

WBOY
Release: 2023-07-02 15:52:01
Original
1381 people have browsed it

Use PHP to develop the user title and medal system functions in the knowledge question and answer website

In the knowledge question and answer website, the user title and medal system is an important function that motivates users to participate and contribute. By giving users special titles and badges, you can encourage them to actively answer questions, post valuable content, and help other users solve problems. In this article, I will use the PHP programming language to implement this functionality.

First, we need to create a database to store user information, including user ID, user name, title and medal, etc. We can use MySQL database to achieve this function. The following is an example database table structure:

CREATE TABLE users (
    id INT(11) AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    title VARCHAR(50) DEFAULT '新手',
    badge VARCHAR(50) DEFAULT '无'
);
Copy after login

Next, we need to create a PHP file to handle the logic of user titles and medals. First, we connect to the database and then get the user's current title and medal based on the user ID. Here is a sample PHP code:

<?php
    // 连接到数据库
    $conn = mysqli_connect("localhost", "username", "password", "database");
    
    // 获取用户ID
    $userId = $_GET['userId'];
    
    // 根据用户ID查询用户信息
    $query = "SELECT * FROM users WHERE id = $userId";
    $result = mysqli_query($conn, $query);
    
    // 检查查询结果是否为空
    if(mysqli_num_rows($result) > 0) {
        // 获取用户信息
        $user = mysqli_fetch_assoc($result);
        
        // 打印用户当前头衔和勋章
        echo "当前头衔:" . $user['title'] . "<br>";
        echo "当前勋章:" . $user['badge'] . "<br>";
    }
    else {
        echo "用户不存在";
    }
    
    // 关闭数据库连接
    mysqli_close($conn);
?>
Copy after login

Now we have been able to get the user's title and medal information. Next, we need to implement a page to display the user's title and medals, and provide some buttons so that users can choose to update their titles and medals. Here is the HTML and JavaScript code for an example:

<!DOCTYPE html>
<html>
<head>
    <title>用户头衔和勋章</title>
</head>
<body>
    <h1>用户头衔和勋章</h1>
    
    <div id="user-info"></div>
    
    <form id="update-form">
        <label for="title">头衔:</label>
        <input type="text" name="title" id="title" placeholder="请输入新的头衔"><br><br>
        
        <label for="badge">勋章:</label>
        <input type="text" name="badge" id="badge" placeholder="请输入新的勋章"><br><br>
        
        <input type="submit" value="更新">
    </form>
    
    <script>
        window.onload = function() {
            // 获取用户ID
            var userId = <?php echo $_GET['userId']; ?>;
            
            // 发送 AJAX 请求来获取用户的头衔和勋章信息
            var xhr = new XMLHttpRequest();
            xhr.open("GET", "get_user_info.php?userId=" + userId, true);
            xhr.onreadystatechange = function() {
                if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
                    // 显示用户的头衔和勋章信息
                    document.getElementById("user-info").innerHTML = xhr.responseText;
                    
                    // 设置表单提交时的操作
                    document.getElementById("update-form").onsubmit = function(e) {
                        e.preventDefault();
                        
                        // 获取新的头衔和勋章
                        var title = document.getElementById("title").value;
                        var badge = document.getElementById("badge").value;
                        
                        // 发送 AJAX 请求来更新用户的头衔和勋章信息
                        var updateXHR = new XMLHttpRequest();
                        updateXHR.open("POST", "update_user_info.php", true);
                        updateXHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                        updateXHR.onreadystatechange = function() {
                            if(updateXHR.readyState === XMLHttpRequest.DONE && updateXHR.status === 200) {
                                // 更新用户的头衔和勋章信息后刷新页面
                                location.reload();
                            }
                        };
                        updateXHR.send("userId=" + userId + "&title=" + title + "&badge=" + badge);
                    };
                }
            };
            xhr.send();
        };
    </script>
</body>
</html>
Copy after login

Finally, we need to create a PHP file to handle the logic for users to update titles and medals. The following is an example PHP code:

<?php
    // 连接到数据库
    $conn = mysqli_connect("localhost", "username", "password", "database");
    
    // 获取用户ID、新的头衔和勋章
    $userId = $_POST['userId'];
    $title = $_POST['title'];
    $badge = $_POST['badge'];
    
    // 更新用户的头衔和勋章信息
    $query = "UPDATE users SET title = '$title', badge = '$badge' WHERE id = $userId";
    mysqli_query($conn, $query);
    
    // 关闭数据库连接
    mysqli_close($conn);
?>
Copy after login

Through the above code example, we can implement a basic user title and medal system function. Users can view and update their titles and medals through the page, thereby increasing their activity and participation in the trivia website. Of course, we can further expand on this basis, such as adding more titles and medal types, as well as more complex logic and conditional judgments. Hope this article helps you!

The above is the detailed content of Use PHP to develop user title and medal system functions in the knowledge question and answer website.. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template