Mysql
 sql >> база данни >  >> RDS >> Mysql

Xp и система за изравняване PHP MYSQL

Можете да опитате нещо подобно:

Имаме 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SUM данни след GROUP_CONCAT с mySQL

  2. Как да използвам правилно AES_ENCRYPT?

  3. Предоставяне на множество бази данни. MySQL

  4. Как мога да намеря не-ASCII знаци в MySQL?

  5. По-ефективно ли е да се разделят големи и малки свързани данни в колоната на SQL таблица?