Xp和练级系统PHP MYSQL

我看了所有被问到的问题和答案,但我似乎无法找到最适合我的答案.我试图做的是制作一个系统,当用户处于某个xp限制时,该系统会进入下一个级别.它显示了在下一个xp之前需要多少xp.

所以

lvl1 = 0 => lvl2 = 256 => lvl3 = 785 => lvl4 = 1656 => lvl5 = 2654

我将如何去做,所以如果xp达到一定数量,则显示下一级别需要多少xp.

解决方法:

你可以尝试这样的事情:

我们的db中有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;

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...