У меня уже есть система уровней, но теперь я работаю над индикатором выполнения, чтобы идти с ним. Уровневая система проверяет базу данных для ехра и имеет вариацию чисел, где она принимает $count >= 100
в этом случае 100 = level 3
и будет обновлять базу данных и установить level
в 3
Система уровня и индикатора хода
Одна проблемы, я не могу назвать на сумму ехра необходимой (100), поэтому для индикатора выполнения я не могу заставить его двигаться, и без максимальной суммы все, что я могу сделать, это $exp/0
Каков наилучший способ хранения каждой суммы опыта в переменной? (без чейнинга систему, чтобы сделать его 100exp необходимо, а затем добавляя PRECENTAGE каждый уровень)
уровневая система ж/индикатор выполнения:
<?php
if(empty($_SESSION['user'])){
}else{
// Connect to your database like you normally do, then get any value into the $count variable
$uid = htmlentities($_SESSION['user']['id'], ENT_QUOTES, 'UTF-8');
$datab = mysqli_connect("localhost", "root", "password", "database") or die ("Could not connect to database");
$userquery = mysqli_query ($datab, "SELECT * FROM users WHERE id='$uid'");
while($row = mysqli_fetch_array($userquery, MYSQLI_ASSOC)){
include"user_array.php";
}
$count = $exp;
if($level == 0){
$lvl = 1;
}else{
$lvl = $level;
}
if ($count >= 25000) { $lvl = 50;
$level_set = "UPDATE users SET level = '50' WHERE id = '$uid'";
$db->query($level_set);
}
//to save space i have removed everything from level 3 - 50!
else if ($count >= 100) { $lvl = 3;
$level_set = "UPDATE users SET level = '3' WHERE id = '$uid'";
$db->query($level_set);
}
else if ($count >= 50) { $lvl = 2;
$level_set = "UPDATE users SET level = '2' WHERE id = '$uid'";
$db->query($level_set);
}
}
// ///Progress bar/////////////////////////////////////////////////////////////////////
// ///Calculate precentage $current (current exp count), $total (max)
// ///This will change the width of of the .inner div wich display the progress bar
// ////////////////////////////////////////////////////////////////////////////////////
$total = $count; //max count for current level
$current = $exp; //current $exp from database
$percent = round(($current/$total) * 100, 1);
?>
все я делаю в конце концов, это сделать 2 дивы и дать каждому некоторые css и цвет и сделать внутренний div width:<?php echo $percent; ?>%;
У вас есть все эти ifs, вы можете легко установить значение для следующего уровня и получить процент. Хотя я бы предпочел просто использовать массив для хранения значений и делать все в одном цикле. Также обратите внимание, что вы каждый раз вызываете обновление, даже если уровень тот же, что у пользователя уже есть ... –
@SamiKuhmonen Я согласен, что это не лучшая система уровней, но это лучшее, что я мог найти, что позволяет мне установите точное количество exp, которое я хочу для каждого уровня. Если вы дадите ему поиск в google, большинство систем уровня установит счет, а затем добавит x% каждого уровня. Легче дать exp переменную, но когда я впервые нашел систему, это именно то, что я искал. Я бы хотел сделать его более эффективным, но мои знания PHP не заходят слишком далеко. –