У меня есть код, который должен обновлять базу данных в соответствии с некоторыми значениями. Это игра, в моей игре у меня есть «атака» и «защита». У меня также есть ранги (называемые «playerrank» в базе данных). Я хочу, чтобы ранг изменился в соответствии с тем, насколько «атака» и «защита» у игрока. Звучит просто, не так ли? Ну это не так :(для меня все равно ..Обновить базу данных в соответствии со значением
Вот что я имею в виду
Атака между 1 и 1000, ранг 1 Атака между 1001 и 2000 годами, ранг 2 и т.д.
Проблема заключается в том что ранг не остается в 1 независимо от того, сколько атака/защита у меня есть, и я не получаю сообщение об ошибке!
Вот соответствующий код
if ($attack AND $defense >1 && $attack AND $defense < 1000){
$update_rank = mysqli_query($con,"UPDATE stats SET stats.playerrank = 1 WHERE stats.id=$id4");
}elseif ($attack AND $defense >1001 && $attack AND $defense < 2000){
$update_rank2 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 2 WHERE stats.id=$id4");
}elseif ($attack AND $defense >2001 && $attack AND $defense < 3000){
$update_rank6 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 3 WHERE stats.id=$id4");
}elseif ($attack AND $defense >3001 && $attack AND $defense < 4000){
$update_rank5 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 4 WHERE stats.id=$id4");
}elseif ($attack AND $defense >4001 && $attack AND $defense < 5000){
$update_rank4 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 5 WHERE stats.id=$id4");
}elseif ($attack AND $defense >5001 && $attack AND $defense < 6000){
$update_rank3 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 6 WHERE stats.id=$id4");
}
Вот полный код
<?php
include("connect.php");
include("header.php");
$username = $_SESSION['userlogin'];
$getattack = "SELECT stats.id, stats.attack, users.id, users.username FROM stats, users WHERE users.username = '$username' AND stats.id = users.id";
$getdefense = "SELECT stats.id, stats.defense, users.id, users.username FROM stats, users WHERE users.username = '$username' AND stats.id = users.id";
$gotattack = mysqli_query($con,$getattack);
$gotdefense = mysqli_query($con,$getdefense);
$attack = mysqli_fetch_assoc($gotattack);
$defense = mysqli_fetch_assoc($gotdefense);
$rankstatsget = "SELECT stats.id, stats.playerrank, users.id, users.username FROM stats, users WHERE users.username = '$username' AND stats.id = users.id";
$rankstatsgot = mysqli_query($con,$rankstatsget);
$id_get = mysqli_query($con,"SELECT stats.id,users.id, users.username FROM stats, users WHERE users.username = '$username' AND stats.id = users.id");
$gotid = mysqli_fetch_array($id_get);
$id4 = $gotid["id"];
while($row = mysqli_fetch_array($rankstatsgot, MYSQL_ASSOC))
{
echo "Current Rank: {$row['playerrank']} <br> ".
"--------------------------------<br>";
}
if ($attack AND $defense >1 && $attack AND $defense < 1000){
$update_rank = mysqli_query($con,"UPDATE stats SET stats.playerrank = 1 WHERE stats.id=$id4");
}elseif ($attack AND $defense >1001 && $attack AND $defense < 2000){
$update_rank2 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 2 WHERE stats.id=$id4");
}elseif ($attack AND $defense >2001 && $attack AND $defense < 3000){
$update_rank6 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 3 WHERE stats.id=$id4");
}elseif ($attack AND $defense >3001 && $attack AND $defense < 4000){
$update_rank5 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 4 WHERE stats.id=$id4");
}elseif ($attack AND $defense >4001 && $attack AND $defense < 5000){
$update_rank4 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 5 WHERE stats.id=$id4");
}elseif ($attack AND $defense >5001 && $attack AND $defense < 6000){
$update_rank3 = mysqli_query($con,"UPDATE stats SET stats.playerrank = 6 WHERE stats.id=$id4");
}
Echo "Your rank is up to date!";
?>
Почему смесь и матч 'AND' и' && 'в' если ($ атаки и $ защита> 1 && $ attack И $ защита <1000) {'и что именно должна проверять логика? потому что 'AND' и' && 'являются операциями сравнения Boolean .... вы имеете в виду' if ($ attack + $ defense> 1 && $ attack + $ defense <1000) {'? –
@MarkBaker предполагается, что атака и защита превышают 1, но также ниже 1000, после этого строка обновляет ранг до 1. Пробовал переходить на вашу версию и не работал :( –
Вы хотите увидеть, больше 1, а защита больше 1? .... слово И имеет очень специфическое значение в вычислительных терминах, и вы используете его очень неоднозначно –