Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ridley Ramos

Problema com condições

Recommended Posts

Boa noite, criei um codigo para alterar email, pórem estou tendo problemas para inserir as mensagens informativas.

Estou recebendo a mesma mensagem quando consigo alterar email e quando digito alguma informação incorrreta.

        $userUpdate = "UPDATE account.account SET email='".$novo_email."' WHERE password=PASSWORD('".$senha_atual."') AND id='".$_GET['id']."' AND email='".$email_atual."' AND login='".$_GET['login']."' LIMIT 1;";
		
        $updateQry = mysql_query($userUpdate,$sqlServ);
        
        if($updateQry)
			{
          echo'<p class="meldung_sucesso">Seu email foi alterado com SUCESSO.</p>';
        }
		else
		{
		echo '<p class="meldung_erro">Dados invalidos!</p>';
		}

Alguém sabe o que estou fazendo errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

mysql_query retornar um tipo resource sempre que a consulta não possui erro de sintaxe. Por isso o fluxo sempre entra no if

 

Se você quer validar o número de registros atualizados, precisa utilizar mysql_affected_rows

 

 

PS: funções mysql_* estão obsoletas desde o PHP 5.5 e serão removidas do PHP em breve. Prefira usar MySQLi ou PDO. Veja mais aqui: http://www.ultimatephp.com.br/php-por-que-nao-utilizar-funcoes-mysql

Compartilhar este post


Link para o post
Compartilhar em outros sites

mysql_query retornar um tipo resource sempre que a consulta não possui erro de sintaxe. Por isso o fluxo sempre entra no if

 

Se você quer validar o número de registros atualizados, precisa utilizar mysql_affected_rows

 

 

PS: funções mysql_* estão obsoletas desde o PHP 5.5 e serão removidas do PHP em breve. Prefira usar MySQLi ou PDO. Veja mais aqui: http://www.ultimatephp.com.br/php-por-que-nao-utilizar-funcoes-mysql

 

 

Sim, tenho que passar a utilizar PDO ou MySQLi, porém ainda não estou adaptado a linguagem e tenho que me contentar com o que tenho. Então tenho que corrigi-lo. :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim:

$idGET = $_GET['id'];
$GetLogin = $_GET['login'];

$userUpdate = "UPDATE account SET email = '$novo_email' WHERE password = '$senha_atual' AND id='$idGet' AND email = '$email_atual' AND login = '$GetLogin' LIMIT 1";

$updateQry = mysql_query($userUpdate);

if($updateQry)
            {
echo'<p class="meldung_sucesso">Seu email foi alterado com SUCESSO.</p>';
}
        else
        {
        echo '<p class="meldung_erro">Dados invalidos!</p>';
        }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já estou pegando o id e login através da url

<?PHP
  if(isset($_GET['hash']) && !empty($_GET['hash']) && !empty($_GET['id']) && !empty($_GET['login']))
  {

   if(strlen($_GET['hash'])==32 && $_GET['hash']!=1 && checkAnum($_GET['hash'])) {



      $cmdHash = "SELECT * FROM account.account WHERE web_aktiviert='".$_GET['hash']."' AND web_aktiviert!='1' AND login='".$_GET['login']."' AND id='".$_GET['id']."';";
      $qryHash = mysql_query($cmdHash,$sqlServ);
	  
	  
	   echo '
		  
<div class="boxui box-title">
        <div class="title-icon"></div>
        <h2>Alterar EMAIL</h2>
		</div>
		<div class="boxui box-con">
        <div class="wrap">		
        <br>
		
		<form action="" class="labelForm" method="POST">
            <div align="center">
			    <div class="sep"></div>
                <label for="">Senha Atual:</label>
                <input style="opacity: 0.7;" class="bar curved5" id="str1" name="senha_atual" type="password" size="16" maxlength="16" />
                <br>
                <br>
                <div class="sep"></div>
                <label for="">EMAIL Atual</label>
                <input style="opacity: 0.7;" class="bar curved5 tooltip_registo_uid" id="username" name="email" size="32" maxlength="32" placeholder="Mínimo de 8 caracteres" />
                <br>
                <br>
                <div class="sep"></div>
				<label for="">NOVO EMAIL</label>
                <input style="opacity: 0.7;" class="bar curved5 tooltip_registo_uid" id="username" name="novoemail" size="32" maxlength="32" placeholder="Mínimo de 8 caracteres" />
                <br>
                <br>
                <div class="sep"></div>
				              <input class="btn s2" type="submit" name="Alterar" value="Alterar"/></th>
            </div>
</form>        </div>
    </div>
    <div class="boxui box-end">
    </div>
		  
		  
		  
		  
		  ';






	  

      
      if(mysql_num_rows($qryHash)==1) {
		 		  
	if(isset($_POST['Alterar']) && $_POST['Alterar']=="Alterar") {

	
if(!empty($_POST['senha_atual']) && !empty($_POST['email']) && !empty($_POST['novoemail']) && checkMail($_POST['email']) && checkMail($_POST['novoemail']) && strlen($_POST['email'])<=40 && strlen($_POST['senha_atual'])>=8 && checkAnum($_POST['senha_atual'])) {

		
		  
		  
	$senha_atual=mysql_real_escape_string($_POST['senha_atual']);
	  $email_atual = mysql_real_escape_string($_POST['email']);
	  $novo_email = mysql_real_escape_string($_POST['novoemail']);
      
        $userUpdate = "UPDATE account.account SET email='".$novo_email."' WHERE password=PASSWORD('".$senha_atual."') AND id='".$_GET['id']."' AND email='".$email_atual."' AND login='".$_GET['login']."';";
		$updateQry = mysql_query($userUpdate,$sqlServ);
		$resultado = mysql_num_rows($updateQry);

        if($resultado>0)
			{
          echo "email alterado com sucesso";
        }
		elseif($resultado==Null)
		{
		echo "dados incorretos";
		}
		
		}
			else {
			echo "Por favor, insira todos dados corretamente.";
			}
	  }
	  	  
	  
   }
   else 
   {
	   echo "Link expirado ou invalido!2";
   };
   }
   else {
	   echo '<div class="boxui box-title">
        <div class="title-icon"></div>
        <h2>Alterar EMAIL</h2>
		</div>
		<div class="boxui box-con">
        <div class="wrap">
	<p class"meldung_erro"> <h3>  Link expirado ou invalido3.</h3></p>
	   </div></div>';
   }

     ?>
	 

	 
	 
	 
	  <?PHP
  }
  else {
    echo'<div class="boxui box-title">
        <div class="title-icon"></div>
        <h2>Alterar EMAIL</h2>
		</div>
		<div class="boxui box-con">
        <div class="wrap">	
	
	<p class="meldung_erro">Link expirado ou invalido.</p>
	</div></div>
	';
  }
?>

Olha o codigo completo. o problema são as mensagens.

Quando insiro informações que não correspodem no banco de dados era para me imprimir mensagem de erro, porém está imprimindo a mesma mensagem de sucesso quando altera o email.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu disse no post #4, você deve usar mysql_affected_rows

 

Troque isto:

 

$resultado = mysql_num_rows($updateQry);

 

por isto

 

$resultado = mysql_affected_rows();

veja mais aqui:

http://php.net/manual/pt_BR/function.mysql-affected-rows.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

$resultado = mysql_affected_rows($updateQry);

 

if($resultado) {

echo'<p style="text-align:center; color:green;font size="7";face="Verdana"; class="meldung_sucesso">EMAIL alterado com sucesso.<br><br></p>';

}

else {

echo'<p style="text-align:center; color:red;font size="7";face="Verdana"; class="meldung_erro">EMAIL não foi alterado com sucesso</p>';

}

 

Recebo a mensagem "EMAIL alterado com sucesso." quando era para recber "Email não foi alterado com sucesso", tem alguma comparação para acertar isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado, agora deu certo e estou recebendo as mensagens certas.

$updateQry = mysql_query($userUpdate,$sqlServ);
	$resultado = mysql_affected_rows();
	
          if($resultado) {
            echo'<p style="text-align:center; color:green;font size="7";face="Verdana"; class="meldung_sucesso">EMAIL alterado com sucesso.<br><br></p>';
          }
          else {
            echo'<p style="text-align:center; color:red;font size="7";face="Verdana"; class="meldung_erro">EMAIL não foi alterado com sucesso</p>';
          }

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.