Ir para conteúdo
  • 0

ERRO Impossível PHP


subyth

Pergunta

Olá, então. Eu estou a +/- uns 2 dias tentando desvendar esse erro que não consigo mais entender o porque não funciona... Já fiz todo tipo de gambiarra possível, tentei switch, tentei elseif, if, else if e simplismente não funciona.


O que era pra fazer?
Bem, era para ele checar o player_level e o player_zen, e ai ele rodar o if, ou, caso não tiver a quantidade necessária de player_zen, pular para o else, que nesse caso, é redirecionado para uma outra página.

Qual o erro?
Então, ai que ta, eu não sei... tipo, se eu colocar apenas 1 IF e o Else, ele funciona perfeitamente. Porém, se eu colocar um outro if ou um else if, ele não funciona, ele começa a contar o zen do 2º if e quando o zen acaba, ele continua rodando... Coloquei um limitador $player_zen já para ver oq acontece, mais ele meio que ignora.

/////////////////////RESTORE HP/MP//////////////////////////////////
 if($_GET['action'] == 'restore')
 {
    
$query = "SELECT zen FROM users WHERE id='$user_id'";
$result = mysql_query($query,$conn);

if(!mysql_num_rows($result))
exit('mysql_error');

$dbarray = mysql_fetch_array($result);
$player_money = $dbarray[0];

  include('function.common.php');
  include('player_stats.php');
  include('calculate_stats.php');
 
   if (($player_level <= 10) && ($player_zen >= 50))
   {
   $query = "UPDATE users set zen=zen-50 WHERE id='$user_id'";
   mysql_query($query, $conn);
   $query = "UPDATE characters set hp_cur='$player_hp_final', mp_cur='$player_mp_final' WHERE id='$char_id'";
   if(!mysql_query($query, $conn))
   exit('market_error');

 header("Location: quest.php?restore=ok");
 exit();
   }
   
   if (($player_level > 11) || ($player_level <= 20) && ($player_zen >= 100))
   {
   $query = "UPDATE users set zen=zen-100 WHERE id='$user_id'";
   mysql_query($query, $conn);
   $query = "UPDATE characters set hp_cur='$player_hp_final', mp_cur='$player_mp_final' WHERE id='$char_id'";
   if(!mysql_query($query, $conn))
   exit('market_error');

 header("Location: quest.php?restore=ok");
 exit();
   }

   if (($player_level > 21) || ($player_level <= 50) && ($player_zen >= 500))
   {
   $query = "UPDATE users set zen=zen-500 WHERE id='$user_id'";
   mysql_query($query, $conn);
   $query = "UPDATE characters set hp_cur='$player_hp_final', mp_cur='$player_mp_final' WHERE id='$char_id'";
   if(!mysql_query($query, $conn))
   exit('market_error');

 header("Location: quest.php?restore=ok");
 exit();
   }

   if (($player_level > 51) || ($player_level <= 100) && ($player_zen >= 1000))
   {
   $query = "UPDATE users set zen=zen-1000 WHERE id='$user_id'";
   mysql_query($query, $conn);
   $query = "UPDATE characters set hp_cur='$player_hp_final', mp_cur='$player_mp_final' WHERE id='$char_id'";
   if(!mysql_query($query, $conn))
   exit('market_error');

 header("Location: quest.php?restore=ok");
 exit();
   }

   if (($player_level > 101) || ($player_level <= 250) && ($player_zen >= 5000))
   {
   $query = "UPDATE users set zen=zen-5000 WHERE id='$user_id'";
   mysql_query($query, $conn);
   $query = "UPDATE characters set hp_cur='$player_hp_final', mp_cur='$player_mp_final' WHERE id='$char_id'";
   if(!mysql_query($query, $conn))
   exit('market_error');

 header("Location: quest.php?restore=ok");
 exit();
   }

   if (($player_level > 251) || ($player_level <= 300) && ($player_zen >= 7500))
   {
   $query = "UPDATE users set zen=zen-7500 WHERE id='$user_id'";
   mysql_query($query, $conn);
   $query = "UPDATE characters set hp_cur='$player_hp_final', mp_cur='$player_mp_final' WHERE id='$char_id'";
   if(!mysql_query($query, $conn))
   exit('market_error');

 header("Location: quest.php?restore=ok");
 exit();
   }

   if (($player_level > 301) && ($player_zen >= 10000))
   {
   $query = "UPDATE users set zen=zen-10000 WHERE id='$user_id'";
   mysql_query($query, $conn);
   $query = "UPDATE characters set hp_cur='$player_hp_final', mp_cur='$player_mp_final' WHERE id='$char_id'";
   if(!mysql_query($query, $conn))
   exit('market_error');

 header("Location: quest.php?restore=ok");
 exit();
   } else {
    header("Location: quest1.php");
   }
 }
/////////////////////RESTORE HP/MP END////////////////////////////

Qualquer coisa, eu passo a página completa.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Olha, sempre que você vai usar um outro if com pergunta, usa elseif, e no fim o else,

Ex: se, senão se, senão.

 

Tenta assim:

 

 

/////////////////////RESTORE HP/MP//////////////////////////////////
    if($_GET['action'] == 'restore') {  
        $query = "SELECT zen FROM users WHERE id='$user_id'";
        $result = mysql_query($query,$conn);

        if(!mysql_num_rows($result))
            exit('mysql_error');

        $dbarray = mysql_fetch_array($result);
        $player_money = $dbarray[0];

        include('function.common.php');
        include('player_stats.php');
        include('calculate_stats.php');
 
        if (($player_level <= 10) && ($player_zen >= 50)) {
                $query = "UPDATE users set zen=zen-50 WHERE id='$user_id'";
                mysql_query($query, $conn);
                $query = "UPDATE characters set hp_cur='$player_hp_final', mp_cur='$player_mp_final' WHERE id='$char_id'";
                if(!mysql_query($query, $conn))
                    exit('market_error');
    
                header("Location: quest.php?restore=ok");
                exit();
        } elseif (($player_level > 11) || ($player_level <= 20) && ($player_zen >= 100)) {
            $query = "UPDATE users set zen=zen-100 WHERE id='$user_id'";
            mysql_query($query, $conn);
            $query = "UPDATE characters set hp_cur='$player_hp_final', mp_cur='$player_mp_final' WHERE id='$char_id'";
            if(!mysql_query($query, $conn))
                exit('market_error');
    
            header("Location: quest.php?restore=ok");
            exit();
        } elseif (($player_level > 21) || ($player_level <= 50) && ($player_zen >= 500)) {
            $query = "UPDATE users set zen=zen-500 WHERE id='$user_id'";
            mysql_query($query, $conn);
            $query = "UPDATE characters set hp_cur='$player_hp_final', mp_cur='$player_mp_final' WHERE id='$char_id'";
            if(!mysql_query($query, $conn))
                exit('market_error');
    
            header("Location: quest.php?restore=ok");
            exit();
        } elseif (($player_level > 51) || ($player_level <= 100) && ($player_zen >= 1000)) {
            $query = "UPDATE users set zen=zen-1000 WHERE id='$user_id'";
            mysql_query($query, $conn);
            $query = "UPDATE characters set hp_cur='$player_hp_final', mp_cur='$player_mp_final' WHERE id='$char_id'";
            if(!mysql_query($query, $conn))
                exit('market_error');
    
            header("Location: quest.php?restore=ok");
            exit();
        } elseif (($player_level > 101) || ($player_level <= 250) && ($player_zen >= 5000)) {
            $query = "UPDATE users set zen=zen-5000 WHERE id='$user_id'";
            mysql_query($query, $conn);
            $query = "UPDATE characters set hp_cur='$player_hp_final', mp_cur='$player_mp_final' WHERE id='$char_id'";
            if(!mysql_query($query, $conn))
                exit('market_error');
    
            header("Location: quest.php?restore=ok");
            exit();
        } elseif (($player_level > 251) || ($player_level <= 300) && ($player_zen >= 7500)) {
            $query = "UPDATE users set zen=zen-7500 WHERE id='$user_id'";
            mysql_query($query, $conn);
            $query = "UPDATE characters set hp_cur='$player_hp_final', mp_cur='$player_mp_final' WHERE id='$char_id'";
            if(!mysql_query($query, $conn))
                exit('market_error');
    
            header("Location: quest.php?restore=ok");
            exit();
        } elseif (($player_level > 301) && ($player_zen >= 10000)) {
            $query = "UPDATE users set zen=zen-10000 WHERE id='$user_id'";
            mysql_query($query, $conn);
            $query = "UPDATE characters set hp_cur='$player_hp_final', mp_cur='$player_mp_final' WHERE id='$char_id'";
            if(!mysql_query($query, $conn))
                exit('market_error');
    
            header("Location: quest.php?restore=ok");
            exit();
        } else {
            header("Location: quest1.php");
        }
    }
/////////////////////RESTORE HP/MP END////////////////////////////

Link para o comentário
Compartilhar em outros sites

  • 0

Olá @Bruno Minervino. Primeiramente boa tarde!

 

Então, eu já havia feito com elseif. O problema é que ele conta apenas o 1º elseif, e, apartir do 2º elseif ele executa o if ignorando oque está dentro dos () como $player_level e $player_zen.

 

EX: Se eu tiver uma conta level 11, ele vai checar o level e o gold (que no caso é 100gold), e, caso não tenha, ele pula para o else que redireciona para a outra página. (como esse é o 1º elseif, que vem depois do if, está funcionando normalmente).

 

Mas, quando entro em uma conta level 200 por exemplo, que nesse caso, deveria utilizar o 3º elseif, ele simplismente executa (se tiver gold, ele usa 100gold, como tivesse executando o primeiro elseif), e mesmo estando sem gold ele executa sem nenhum erro, como não tivesse o elseif lá.

 

É como ele tivesse contando apenas o IF, e o 1º ELSEIF.

 

 

-- EDIT --

 

Já consegui solucionar o problema. Mesmo assim, obrigado. Reputado!

Editado por subyth
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...