我有我一直在堅持了好幾個小時的問題。我玩過很多類型的for()和while()循環。我把它們放在不同的變量不同的位置,跑不同的東西,沒有什麼工作..
我的問題:
爲什麼我的程序給下面的第一個所有用戶都在同一水平?你可以在圖片中清楚地看到Nicolas擁有更多的XP。 (5,000 xp是等級20,如果數據庫中第一個是「Nic5」,那麼它會將「技能等級」更改爲20.
我知道返回的變量$lvl
對於加載的每個玩家這就是爲什麼每個玩家是獲得第一個玩家的等級
任何人可以幫助我這個請
注:? 0
=保存了玩家技能等級的經驗一欄
類calculatelevel:
class calculatelevel {
function level($skillnum)
{
$host = "*";
$user = "*";
$pass = "*";
$db = "*";
$con = new mysqli($host, $user, $pass, $db) or die($con->error);
$res = $con->query("SELECT `0` FROM hiscores");
$max = 99;
while($row = $res->fetch_assoc()) {
$xp = $row['0'];
// Find the appropriate level
for ($lvl = 1; $lvl < $max; $lvl++) //this for loop runs 99 times
{
if ($xp < $this->experience($lvl))//if players xp in skill is less than experience(level 1-99)
{
// Level found
$lvl -= 1;
break;
}
}
}
return $lvl;
}
public function experience($lvl)
{
$xp = 0;
for($x = 1; $x < $lvl; $x++)
{
$xp += floor($x + 300 * pow(2, ($x/7)));
}
return floor($xp/4);
}
}
方法寫入數據庫信息的頁面。
if($res->num_rows > 0) {
echo "<table>
<tr>
<td>Rank</td>
<td>Username</td>
<td>Skill Level</td>
<td>Total Exp</td> </tr>";
while($row = $res->fetch_assoc()) {
echo 'ran';
$calc = new calculatelevel();
$level = $calc->level(0);
echo '<tr>
<td>'.($count+1).'</td>
<td>'. htmlspecialchars($row['username']) .'</td>
<td>'.number_format($level).'</td>
<td>'.number_format($row['0']).'</td>
</tr>';
$count++;
}
}
我不知道你在做什麼:「SELECT'0' FROM hiscores」 - 有一個名爲'0'的字段似乎是我要求的麻煩。 – 2013-10-29 02:59:07
0 =擁有玩家技能水平經驗的表格。 – elune
0不重要,但是,洗脫是正確的。 – Nic