sql >> データベース >  >> RDS >> Mysql

XpおよびレベリングシステムPHPMYSQL

    次のようなことを試すことができます:

    users_xpがあります user_xp_idを含むデータベース内のテーブル (主キー-自動インクリメント)、user_id およびuser_xp_amount (デフォルト値:0)フィールド。ユーザーのxp量を更新する場合は、次のようにする必要があります。

    $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
    
    function update_user_xp($user_id, $amount, $mysqli) {
        $mysqli->query("UPDATE users_xp 
                        SET user_xp_amount=user_xp_amount+" . $amount . " 
                        WHERE user_id='$user_id'");
    }
    
    // we call this function like:
    update_user_xp(4, 10, $mysqli); // user_id: 4, update with 10 points
    

    実際のユーザーxp量を取得する場合は、dbテーブルから取得できます

    function get_user_xp($user_id, $mysqli) {
        $sql = $mysqli->query("SELECT user_xp_amount 
                               FROM users_xp 
                               WHERE user_id='$user_id'");
       $row = $sql->fetch_assoc();
       return $row['user_xp_amount'];
    
    }
    
    $xp = array('lvl1' => 0, 'lvl2' => 256, 'lvl3' => 785, 'lvl4' => 1656, 'lvl5' => 2654);
    
    $my_xp = get_user_xp(4, $mysqli); // where 4 is my user id
    
    for($i = 0; $i < count($xp); $i++) {
       if($my_xp == $xp[$i]) {
           echo 'I\'m on level ', ($i+1);
           break;
       }
       else {
           if(isset($xp[$i+1])) {
               if($my_xp > $xp[$i] && $my_xp <= $xp[$i + 1]) {
                   echo 'My next level is ', ($i+2), ' and I need ', $xp[$i+1], ' more points for achieving it!';
                   break;
                } else {
                   echo 'My next level is ', ($i+1), ' and I need ', $xp[$i], ' more points for achieving it!';
                   break;
                }
            }
        }
    }
    

    後の編集:

    CREATE TABLE `my_db_name`.`users_xp` (
    `user_xp_id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `user_id` BIGINT NOT NULL ,
    `user_xp_amount` BIGINT NOT NULL DEFAULT '0'
    ) ENGINE = InnoDB;
    


    1. 更新後にログインセッションが破棄されました

    2. ベスト・プラクティス:OracleCloudの保守および拡張タスク

    3. PostgreSQLの時間値に時間を追加する

    4. 一括収集せずにオブジェクトのコレクションを含むOracleオブジェクトを選択する