PHP体验系统//简单
作为一名php编程语言的乞丐,我正在玩代码,在localhost上工作,我做了一些小项目。现在我正在尝试做一个尽可能简单的体验系统,我被困在这一部分,我不知道我做错了什么。一些建议 我做错了什么 密码PHP体验系统//简单,php,Php,作为一名php编程语言的乞丐,我正在玩代码,在localhost上工作,我做了一些小项目。现在我正在尝试做一个尽可能简单的体验系统,我被困在这一部分,我不知道我做错了什么。一些建议 我做错了什么 密码 function update_user_xp($user_id, $xp_ammount){ global $db; $params = array('user_id' => $user_id); $users = $db->rawQuery("
function update_user_xp($user_id, $xp_ammount){
global $db;
$params = array('user_id' => $user_id);
$users = $db->rawQuery("SELECT * FROM users_xp WHERE user_id = ?", $params);
$data = array(
'user_xp_amount' => $xp_ammount + $users[0]['user_xp_amount'],
'user_id' => $user_id
);
$db->where ('user_id', $data['user_id']);
if ($db->update ('users_xp', $data)){
$xpReceived = 'You have received '.$xp_ammount.' points of experience! Have a total of '.$data['user_xp_amount'].' points of experience.';
} else {
$xpReceived = $db->getLastError();
}
return $xpReceived;
}
//update_user_xp(4, 10); // user_id: 4, update with 10 points
function get_user_xp ($user_id){
global $db;
$params = array('user_id' => $user_id);
$user = $db->rawQueryOne ('SELECT * FROM users_xp WHERE user_id=?', $params);
$xp = $user['user_xp_amount'];
return $xp;
}
function xp_need () {
global $db;
$xpBarNeed = $db->rawQuery("SELECT `level`, `expneeded` FROM `experience_level`");
foreach ($xpBarNeed as $key => $value) {
$output[] = $value;
}
return $output;
}
$xpn = xp_need();
$userXP = get_user_xp(4);
for($i = 0; $i < count($xpn); $i++){
if($xpn[$i]['expneeded'] == $userXP)
{
//This part is working well
print 'You are level <b>' . $xpn[$i]['level'].'</b>';
} else {
if ($userXP > $xpn[$i]['expneeded'] && $userXP >= $xpn[$i]['expneeded'])
{
//This is the part that doesn t work,
$diffEXP = $xpn[$i]['expneeded'] -= $userXP;
print 'You need more exp '. $diffEXP.'</br>';
}
}
}
函数更新\u user\u xp($user\u id,$xp\u amount){
全球$db;
$params=array('user\u id'=>$user\u id);
$users=$db->rawQuery(“从users\U xp中选择*其中user\U id=?”,$params);
$data=数组(
'user\u xp\u amount'=>$xp\u amount+$users[0]['user\u xp\u amount'],
'user\u id'=>$user\u id
);
$db->where('user\u id',$data['user\u id']);
如果($db->update($users\u xp',$data)){
$xpReceived='您已收到'$xp\u amount'。经验点!总共有'$data['user\u xp\u amount'].'经验点';
}否则{
$xpReceived=$db->getLastError();
}
返回$xpReceived;
}
//更新用户xp(4,10);//用户id:4,更新为10分
函数get\u user\u xp($user\u id){
全球$db;
$params=array('user\u id'=>$user\u id);
$user=$db->rawQueryOne('SELECT*FROM users\u xp WHERE user\u id=?',$params);
$xp=$user['user\u xp\u amount'];
返回$xp;
}
函数xp\u需要(){
全球$db;
$xpBarNeed=$db->rawQuery(“从‘经验’级别中选择‘级别’,‘exprequired’”);
foreach($xpBarNeed作为$key=>$value){
$output[]=$value;
}
返回$output;
}
$xpn=xp_need();
$userXP=get_user_xp(4);
对于($i=0;$i$xpn[$i]['expneeded']&&$userXP>=$xpn[$i]['expneeded'])
{
//这是不起作用的部分,
$xp=$xpn[$i]['expneeded']-=$userXP;
打印“您需要更多经验”。$xp.”;
}
}
}
这就是我在页面中看到的情况。
请注意,在撰写本文时,我的解决方案不是最好的,或者说是一个优化良好的解决方案。我将在不久的将来尝试优化它。目前,您可以使用以下方法:
<?php
$xpn = xp_need();
$userXP = get_user_xp(4);
$level = 0;
$nextExp = 0;
for ($i = count($xpn) - 1;$i >= 0;$i--)
{
if ($userXP >= $xpn[$i]['expneeded'])
{
$level = $xpn[$i]['level'];
$nextExp = $xpn[$i + 1]['expneeded'];
break;
}
}
$expNeeded = $nextExp - $userXP;
$percentage = round(($userXP/$nextExp) * 100);
echo "Current level: " . $level;
echo "<br/>Exp needed for the next level (" . ($level + 1) . "): " . $expNeeded;
echo "<br/>Exp achieved percentage for the next level: " . $percentage;
?>
需要更多关于您的问题的详细信息吗?不会计算到下一个级别所需exp的差异。我是否可以查看$xpn
的输出在您学习时,停止使用global
访问您的数据库对象,而是将其作为参数传入。将其定义为全局意味着所有外部代码都必须使用$db
作为数据库对象,如果使用其他名称,函数将停止工作。当然,这是输出。|谢谢,效果非常好。现在我需要阅读您的代码以了解我的错误。“声誉低于15的人所投的票将被记录,但不会改变公开显示的帖子分数。“我需要更多的名声,但非常感谢你,OMi!祝你玩得愉快。我试着做一个进度条,但我失败了很多,无法计算两个数字的差值,这两个数字是xp所需的和用户经验。code
function calculatePercentage($total,$number){$ab=$total/$number*100;return$ab;}code
没有按应有的方式返回,即使我把数字四舍五入,有什么建议吗?我不明白?您要计算的百分比?下一级百分比所需的Exp?