Jump to content


Photo

Script, Falha? Lógica?


  • Faça o login para participar
4 replies to this topic

#1 cezarluiz

cezarluiz

    Novato no fórum

  • Usuários
  • 14 posts
  • Sexo:Masculino
  • Localidade:Curitiba

Posted 23/12/2009, 00:27

Estou eu aqui de novo ^^ e voces sempre me ajudam :D, como só tenho 2 meses de PHP, tenho MUUUUUITAS dúvidas porém vamos ao que interessa:

Estou criando meu site e o painel de MUOnline, estava indo tudo bem ate que começar a fazer a script de distribuir pontos, pois bem.. O problema e o seguinte.. Se o personagem tem 50 pontos exemplo, eu fiz um if quer se a soma de Força+Agi+Vit+Ene, se essa soma passar dos "50" pontos, ele vai dar um erro. Pois bem, o erro está dando, mas se eu coloco um valor bem baixo, se eu coloco 1 ja da o erro. E tbm tirei o erro, dai a query nao está pegando.

Tenho 2 scripts, pontos.php e pontos2.php , na ponto.php ele escolhe o char e na ponto2.php recebe as informações do ponto e distribui os pontos. Abaixo as scripts

pontos.php
<?
      session_start();
      if(!isset($_SESSION['login']) && !isset($_SESSION['senha'])):
         header("location:login.php");
      endif;
?>
<? 
include "config.php";
include "anti_inject.php";

$login = $_SESSION['login'];
$senha = $_SESSION['senha'];

$Chars = mssql_query("SELECT Name,Strength,Dexterity,Vitality,Energy,Leadership,Class FROM Character WHERE AccountID='$login'");
$Chars2 = mssql_num_rows($Chars);


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>
<form method="post" id="dist" name="dist" action="painel.php?stein=distptos2">
<?
if($Chars2 == 0){ echo "Você não possui personagens na conta."; 
} else {
echo "</select>
<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td width=\"15%\" class=\"estilo_6\">Char:</td>";
echo "<td><select name=\"char\" id=\"char\"\>";
for($i=0;$i<$Chars2;$i++) {
$Char=mssql_fetch_row($Chars);
echo '<option value='.$Char[0].'>'.$Char[0].'</option>';
}
echo "</select>";
echo "</td>
</tr>
<tr>
<td></td>
<td><span class=\"submit\"><input type=\"submit\" name=\"enviar\" id=\"enviar\" value=\"Distribuir\" /></span>
</td>
</tr>";
}
?>
</table>
</form>
</body>
</html>

pontos2.php
<?
      session_start();
      if(!isset($_SESSION['login']) && !isset($_SESSION['senha'])):
         header("location:login.php");
      endif;
?>
<? 
include "config.php";
include "anti_inject.php";

$login = $_SESSION['login'];
$senha = $_SESSION['senha'];
$char = $_POST['char'];

$Chars = mssql_query("SELECT Name,Strength,Dexterity,Vitality,Energy,Leadership,Class,LevelUpPoint FROM Character WHERE AccountID='$login' AND Name='$char'");
$Chars2 = mssql_num_rows($Chars);
$Chars3 = mssql_fetch_row($Chars);

$ver_on = mssql_fetch_row(mssql_query("SELECT ConnectStat FROM MEMB_STAT WHERE memb___id='$login'"));

$char_ponto = mssql_fetch_array(mssql_query("SELECT LevelUpPoint FROM Character WHERE Name='$char'"));
$pontos = $char_ponto['LevelUpPoint'];

$for = $_POST['for'];
$agi = $_POST['agi'];
$vit = $_POST['vit'];
$ene = $_POST['ene'];
$formula = ($for+$agi+$vit+$ene);

$for2 = $_POST['for2'];
$agi2 = $_POST['agi2'];
$vit2 = $_POST['vit2'];
$ene2 = $_POST['ene2'];
$com = $_POST['com'];
$formula2 = ($for2+$agi2+$vit2+$ene2+$com);

if($_POST['enviar2']){

if($formula > $pontos){
echo "<script>alert('Você não tem pontos suficientes.'); location='painel.php?stein=distptos' </script>"; die();
} 
elseif(!is_numeric($for) || !is_numeric($agi) || !is_numeric($vit) || !is_numeric($ene)){
echo "<script>alert('Digite apenas números.'); location='painel.php?stein=distptos' </script>"; die();
} else {

mssql_query("UPDATE Character SET Strength = Strength + '$str' , Dexterity = Dexterity + '$agi' , Vitality = Vitality + '$vit' , Energy = Energy + '$ene', LevelUpPoint = LevelUpPoint - ($formula) WHERE Name = '$char'");
echo "<script>alert('Pontos distrbuidos com sucesso!'); location='painel.php?stein=opcoes' </script>";

}}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>M U S T E I N - [ Season 4 - Novos itens, confira! ]</title>
<link rel="stylesheet" type="text/css" href="estilo.css"/>
</head>

<body>
<?
if($Chars3[6] != 64 && $Chars3[6] != 66){
echo "<form id='ptos' name='ptos' action='' method='post'>";
echo "<table width='100%' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td class='estilo_6'>Char:</td>
    <td height='25' class='estilo_3'>$char <span class='estilo_6'>(Pontos para add: $Chars3[7])</span></td>
  </tr>
  <tr>
    <td width='15%' class='estilo_6'>Força:</td>
    <td height='25'><input name='for' type='text' value='0' id='for' size='5' maxlength='5' /> 
      <span class='estilo_6'>($Chars3[1])</span></td>
  </tr>
  <tr>
    <td class='estilo_6'>Agilidade:</td>
    <td height='25'><input name='agi' type='text' value='0' id='agi' size='5' maxlength='5' />
      <span class='estilo_6'>($Chars3[2])</span></td>
  </tr>
  <tr>
    <td class='estilo_6'>Vitalidade:</td>
    <td height='25'><input name='vit' type='text' value='0' id='vit' size='5' maxlength='5' />
      <span class='estilo_6'>($Chars3[3])</span></td>
  </tr>
  <tr>
    <td class='estilo_6'>Energia:</td>
    <td height='25'><input name='ene' type='text' value='0' id='ene' size='5' maxlength='5' />
      <span class='estilo_6'>($Chars3[4])</span></td>
  </tr>
  <tr>
    <td class='estilo_6'>&nbsp</td>
    <td height='25'><span class='submit'>
      <input type='submit' name='enviar2' id='enviar2' value='Distribuir' />
    </span></td>
  </tr>
</table>";
echo "</form>";
} else {
echo "<form id='ptos2' name='ptos2' action='' method='post'>";
echo "<table width='100%' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td class='estilo_6'>Char:</td>
    <td height='25' class='estilo_3'>$char
        <span class='estilo_6'>(Pontos para add:$Chars3[7])</span></td>
  </tr>
  <tr>
    <td width='15%' class='estilo_6'>Força:</td>
    <td height='25'><input name='for2' type='text' value='0' id='for2' size='5' maxlength='5' />
        <span class='estilo_6'>($Chars3[1])</span></td>
  </tr>
  <tr>
    <td class='estilo_6'>Agilidade:</td>
    <td height='25'><input name='agi2' type='text' value='0' id='agi2' size='5' maxlength='5' />
        <span class='estilo_6'>($Chars3[2])</span></td>
  </tr>
  <tr>
    <td class='estilo_6'>Vitalidade:</td>
    <td height='25'><input name='vit2' type='text' value='0' id='vit2' size='5' maxlength='5' />
        <span class='estilo_6'>($Chars3[3])</span></td>
  </tr>
  <tr>
    <td class='estilo_6'>Energia:</td>
    <td height='25'><input name='ene2' type='text' value='0' id='ene2' size='5' maxlength='5' />
        <span class='estilo_6'>($Chars3[4])</span></td>
  </tr>
  <tr>
    <td class='estilo_6'>Comando:</td>
    <td height='25'><input name='com' type='text' value='0' id='com' size='5' maxlength='5' />
        <span class='estilo_6'>($Chars3[5])</span></td>
  </tr>
  <tr>
    <td class='estilo_6'>&nbsp</td>
    <td height='25'><span class='submit'>
      <input type='submit' name='enviar3' id='enviar3' value='Distribuir' />
    </span></td>
  </tr>
</table>";
echo "</form>"; 
}
?>
</body>
</html>


#2 André Manoel

André Manoel

    Doutor

  • Usuários
  • 996 posts
  • Sexo:Masculino
  • Localidade:Brasilia

Posted 23/12/2009, 10:15

Esclareça melhor o seu problema... !Tentei entender mais não consegui visualizar o que você quer!
Iniciando na Ajuda On line...

Posted Image Meu post lhe ajudou? Reputar/votar é uma das formas de agradecer.

#3 FelipeGabriel

FelipeGabriel

    Normal

  • Usuários
  • 66 posts
  • Sexo:Masculino
  • Localidade:Patrocínio - MG

Posted 23/12/2009, 15:41

Bem,
também não entendi perfeitamente,
mais pelo pouco que entendi, é na hora de calcular os pontos,
veja se não esta retornando um valor que não seja int,

poste também o erro, para facilitar,

Obrigado.

Edição feita por: FelipeGabriel, 23/12/2009, 15:42.


#4 cezarluiz

cezarluiz

    Novato no fórum

  • Usuários
  • 14 posts
  • Sexo:Masculino
  • Localidade:Curitiba

Posted 23/12/2009, 20:14

Bem.. e uma script de um jogo online, pra entender vou ter que explicar o jogo, existem as classes ao total sao 6, e cada classe que passa um lvl ganha 5 ou 7 pontos pra distribuir em atributos, esses atributos são Força(Strenght), Agilidade(Agility), Vitalidade(Vitality) e Energia(Energy). Mas tem uma classe que tem 1 atributo a mais que é Comando(Leadership), que no banco de dados é representada pela numero 64 e 66. Pois bem, na script pontos.php ele verifica qual o personagem, e manda o valor $char pra pontos2.php. Nessa script, pontos2.php, ele ta verificando se a classe não for 64 e 66 vai dar aquela echo se nao o outro.

if($Chars3[6] != 64 && $Chars3[6] != 66){

Até ai tudo bem... O verdadeiro problema está na hora de fazer essa verificação:

if($formula > $pontos){
echo "<script>alert('Você não tem pontos suficientes.'); location='painel.php?stein=distptos' </script>"; die();
}

O LevelUpPoints no Banco de Dados é a tabela onde são armazenados os pontos ganho ao passar cada level. E esses pontos ele pode distribuir para aqueles atributos. A $formula é a soma de todos os atributos $for, $agi, $vit, $ene. Porém estou fazendo das classes diferentes de 64 e 66. Dai na verificação $formula > $pontos era pra dar o erro se essa soma for mais do que os pontos que ele possui. Exemplo, se o personagem tiver 50 pontos, dai eu colocar 1 em força e 0 nos outros ele vai dar o erro, e esse erro só era pra apareçer se a soma fosse maior que 50.

Dai na query é pra executar ali, o que ele tiver de Força(Strentgh) vai ser igual a Strnght = Strenght + $for, ou seja, vai pegar o valor atual e vai somar o valor digitado, e isso para os outros atributos tbm. Mas me deparo com uma coisa, ao retirar a função ali de verificar a soma, ele nao executa a query... Mas tbm nao da nenhum erro, o mais esquisito. Ele simplesmente da a mensagem de que foram adicionados com sucesso e vai pra pagina referida no location.

Então, ufa, acho que acabei hehe. Tenho 2 meses de PHP, as vezes posso estar fazendo algo errado na hora do pontos.php mandar pro pontos2.php, não sei bem ao certo o que está aconteçendo, ao meu pareçer está tudo certo.

Obrigado.

#5 cezarluiz

cezarluiz

    Novato no fórum

  • Usuários
  • 14 posts
  • Sexo:Masculino
  • Localidade:Curitiba

Posted 26/12/2009, 14:56

Alguém? :x to emperrado nisso =/




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq