Ir para conteúdo

Arquivado

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

Carcleo

Problemas com if - else

Recommended Posts

ola pessoal do fórum.

To com o códio abaixo com o seguinte problema:

Caso o usuario ja esteja cadastrado, ele barra o cadastro certinho exibindo a mensagem.

Porem, se o usuario não estiver cadastrado, aí. ele faz o cadastro normalmente porem exibe a mensagem do Alert "'O login que você escolheu ja foi escolhido para outro usuario", como se ja houve-se o cadastro la e o que mais me intriga é o fato de o cadastro (INSERT), é feito normalmente.

 

Olhei o código varias vezes e não achei o erro.

 

<?php
if ($acao=="cad_operadores") {
$opera_superuser = mysql_query("select * from clientes where login = '$login'"); 
$opera_user = mysql_query("select * from login_filiais where login = '$login'"); 
$opera_superuser_cont = mysql_num_rows($opera_superuser);
$opera_user_cont = mysql_num_rows($opera_user);
if ($opera_superuser_cont != 0  || $opera_user_cont != 0) { echo "<script>alert('O login que você escolheu ja foi escolhido para outro usuario!'); document.location='cad_operadores.php?acao=filial_operador'</script>";  }
else {
$senha = $_POST['senha'];
if (strlen($login) < 6){  echo "<script>alert('Login tem que ter entre 06 e 08 digitos!'); document.location='cad_operadores.php?acao=filial_operador'</script>";  }
if (strlen($login) > 8){  echo "<script>alert('Login tem que ter entre 06 e 08 digitos!'); document.location='cad_operadores.php?acao=filial_operador'</script>";  }
if (strlen($senha) < 6){  echo "<script>alert('Senha tem que ter entre 06 e 08 digitos!'); document.location='cad_operadores.php?acao=filial_operador'</script>";  }
if (strlen($senha) > 8){  echo "<script>alert('Senha tem que ter entre 06 e 08 digitos!'); document.location='cad_operadores.php?acao=filial_operador'</script>";  }

$consulta = mysql_query("INSERT INTO login_filiais(filial, login, senha, bloqueio) VALUES('$SESSAOfilial', '$login', '$senha', 'N')");
if (consulta) { echo "<script>alert('Cadastro efetuado com sucesso!!'); document.location='cad_operadores.php?acao=filial_operador'</script>";  }
else
			  { echo "<script>alert('Erro. Cadastro não foi efetuado! Tente novamente!'); document.location='cad_operadores.phpacao=filial_operador'</script>";  }
	 }
		   					}  
?>

Se alguem puder me ajudar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de cadastrar o usuário você deve fazer uma busca ba tabela para ter certeza de que o usuário escolhido não está sendo usado, por exemplo:

 

$selecionar=mysql_query("SELECT COUNT(*) AS campo FROM tabela WHERE condicao='valor'");

$resultado=mysql_result($selecionar,0,'campo');

if($resultado != 0 ){
echo 'Usuário já escolhido em nossa base de dados.';
exit();
}else{

/* função para cadastrar aqui */

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Observe que isso foi feito:

<?php
if ($acao=="cad_operadores") {
$opera_superuser = mysql_query("select * from clientes where login = '$login'"); 
$opera_user = mysql_query("select * from login_filiais where login = '$login'"); 
$opera_superuser_cont = mysql_num_rows($opera_superuser);
$opera_user_cont = mysql_num_rows($opera_user);
if ($opera_superuser_cont != 0  || $opera_user_cont != 0) { echo "<script>alert('O login que você escolheu ja foi escolhido para outro usuario!'); document.location='cad_operadores.php?acao=filial_operador'</script>";  }
else {
...
Porem, é verificado os registros em 2 tabelas que cadastram usuarios.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja bem, são 2 tabelas que tenho que verificar se o login escolhido esta ou não cadastrado:

Dai eu fiz:

$opera_superuser = mysql_query("select * from clientes where login = '$login'"); 
$opera_user = mysql_query("select * from login_filiais where login = '$login'");
Depois, eu peguei o numero de linhas afetado pela consulta com o mysql_num_rows:

$opera_superuser_cont = mysql_num_rows($opera_superuser);
$opera_user_cont = mysql_num_rows($opera_user);
Depois, com o numero de registros eu pesquisei:

Caso na tabela clientes ou na tabela login_filiais haja o login cadastrado, da a mensagem de que o login ja foi cadastrado, caso contrario, procede o cadastro:

if ($opera_superuser_cont != 0  || $opera_user_cont != 0) { echo "<script>alert('O login que você escolheu já foi escolhido para outro usuario!'); document.location='cad_operadores.php?acao=filial_operador'</script>";  }
else {
..cadastro..
}

O que esta acontecenbdoi é o seguinte:

Caso o usuario ja esteja cadastrado em uma ou em outra tabela, ele barra o cadastro certinho exibindo a mensagem.

Porem, se o usuario não estiver cadastrado, aí. ele faz o cadastro normalmente porem exibe a mensagem do Alert "'O login que você escolheu ja foi escolhido para outro usuario", como se ja houve-se o cadastro la e o que mais me intriga é o fato de o cadastro (INSERT), é feito normalmente.

Com relação à tua pergunta, realmente não estou setando a variavel login como $_post['login'], pois o php converte automatico para uma variavel de mesmo nome $login. Mas, não sei poirque catrgas d'agua, algumas variveis ele não ta convertendo automatico e ta sendo nescessário fazer o $_post[''];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fazendo tetes, eu percebi o seguinte:

<?php
if ($acao=="cad_filiais") {
$login = $_POST['login'];
$senha = $_POST['senha'];
$opera_superuser = mysql_query("select * from filiais where login = '$login'"); 
$opera_user = mysql_query("select * from login_filiais where login = '$login'"); 
$opera_superuser_cont = mysql_num_rows($opera_superuser);
$opera_user_cont = mysql_num_rows($opera_user);
if ($opera_superuser_cont != 0  || $opera_user_cont != 0) { echo "<script>alert('$opera_superuser_cont/$opera_user_cont-O login que você escolheu ja foi escolhido para outro cliente!'); document.location='cad_filiais.php'</script>";  }
else {
if ($cpf == "") { $dcto = "cnpj"; }
if ($cnpj == "") { $dcto = "cpf"; }
if ($dcto == "cpf") { $valor = $cpf; }
if ($dcto == "cnpj") { $valor = $cnpj; }
$pesq = mysql_query("select * from filiais where $dcto = '$valor' and filial = '$SESSAOfilial'");
$conta = mysql_num_rows($pesq);
if ($conta <> 0) { echo "<script>alert('Filial ja cadastrada. Consulte!'); document.location='cad_filiais.php'</script>";}
ELSE			 {  
$login = $_POST['login'];
$senha = $_POST['senha'];
$consulta = mysql_query("INSERT INTO filiais(cod, pessoa, fantasia, nome, rasao, cnpj, ie, cpf, rg, endereco, numero, complemento, bairro, cidade, uf, cep, email, tel1, tel2, tel3, atividade, comissao, comissao2, comissao3, login, senha, bloqueio) VALUES('$cod', '$pessoa', '$fantasia', '$nome', '$rasao', '$cnpj', '$ie', '$cpf', '$rg', '$endereco', '$numero', '$complemento', '$bairro', '$cidade', '$uf', '$cep', '$email', '$tel1', '$tel2', '$tel3', '$atividade', '$comissao', '$comissao2', '$comissao3', '$login', '$senha', 'N')");
if ($consulta) {  echo "<script>alert('Cadastro OK!'); document.location='cad_filiais.php'</script>";}
ELSE		  {  echo "<script>alert('Ouve um erro no cadastro. Tente novamente!'); document.location='cad_filiais.php'</script>";}
				 }
	  }					
						}  
?>
No código acima, se eu sustituir a título de teste, a linha

$consulta = mysql_query("INSERT INTO filiais(cod, pessoa, fantasia, nome, rasao, cnpj, ie, cpf, rg, endereco, numero, complemento, bairro, cidade, uf, cep, email, tel1, tel2, tel3, atividade, comissao, comissao2, comissao3, login, senha, bloqueio) VALUES('$cod', '$pessoa', '$fantasia', '$nome', '$rasao', '$cnpj', '$ie', '$cpf', '$rg', '$endereco', '$numero', '$complemento', '$bairro', '$cidade', '$uf', '$cep', '$email', '$tel1', '$tel2', '$tel3', '$atividade', '$comissao', '$comissao2', '$comissao3', '$login', '$senha', 'N')");
Por exemplo por

$consulta = mysql_query("Select * from filiais");
A linha de baixo é executada e a resposta de cadastro ok é exibida

if ($consulta) {  echo "<script>alert('Cadastro OK!'); document.location='cad_filiais.php'</script>";}
ELSE		  {  echo "<script>alert('Ouve um erro no cadastro. Tente novamente!'); document.location='cad_filiais.php'</script>";}
Porem, ao manter a claudula INSERT, a inserção é feita normalmente porem não sei como cargas d´agua depois da execução com suscesso em vez de dar a mensagem de ok ele volta la na linha

if ($opera_superuser_cont != 0  || $opera_user_cont != 0) { echo "<script>alert('$opera_superuser_cont/$opera_user_cont-O login que você escolheu ja
De verificação de usuario que nem nesse bloco esta.

 

porque será?

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso de cadastro de usuario , se precavendo de duiplicidade é muito mais simples do que imaginamos.

 

Nesse caso, você pega algumas colunas da tabela de usuarios no banco e coloca UNIQUE, ou seja o proprio banco vai se encarregar de nao autorizar um cadastro de um valor ja existente naquela coluna, entao ai é so fazer um boll de modo que se retornar false pelo esquema de UNIQUE, ai ja retornamos o erro tratado ao usuario. +- assim.

 

SQL

 

CREATE TABLE IF NOT EXISTS `usuarios` (
  `id` int(6) unsigned NOT NULL auto_increment,
  `login` varchar(100) NOT NULL default '',
  `senha` varchar(32) NOT NULL default '',
  `email` varchar(100) NOT NULL default '',
  `tipo` enum('G','A','C') NOT NULL default 'G',
  `ativo` enum('S','N') NOT NULL default 'S',
  `data_hora` timestamp(10) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `login` (`login`)
  UNIQUE KEY `email` (`email`)
) TYPE=MyISAM AUTO_INCREMENT=6;

Verifique essas linhas

 

UNIQUE KEY `login` (`login`)

UNIQUE KEY `email` (`email`)

 

Nesse caso o banco so admitira o valor uma vez , inadmitindo a duplicidade.

 

 

Agora como se coordena a rotina: (nesse caso ja temos q dispor da conexao com o banco em)

 

$result="INSERT INTO `$tabela` ($keys) VALUES ($values)";
if ( mysql_query ($result) ) {
echo '<p>Cliente cadastrado com sucesso!</p>';
} else {
echo '<p>Falha ao cadastrar o cliente. Talvez ela já senha sido cadastrado, contacte a ajuda para maiores detalhes.</p>';
}

usando o if ( mysql_query ($result) ) { se der negativo retorna o erro. Entao existindo o valor o retorno e negativo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra coisa que esta me intrigando e que no form de aklteração tudo é igual menbos a clusula sql que muda para update e la funciona normal

Compartilhar este post


Link para o post
Compartilhar em outros sites

update é para ediçao de uma linha ja existente no banco. mas se puder ser mais especifico em sua duvida ou ate mesmo postar a mensagem de erro fica mais facil.

 

mas para update você substitui a linha

 

$result="INSERT INTO `$tabela` ($keys) VALUES ($values)";

$result="UPDATE `$tabela` SET `$campo`='$valor' WHERE id=$condicao";

repare que tem q se dar a condição para localização da linha a editar os valores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me diz um coisa:

 

if ($opera_superuser_cont <> 0 || $opera_user_cont <> 0)

 

E o mesmo que

se ($opera_superuser_cont diferente de zero ou $opera_user_cont diferente de zero)

 

??

 

Outra coisa. Não da erro.

 

O que esta acontecenbdoi é o seguinte:

Caso o usuario ja esteja cadastrado em uma ou em outra tabela, ele barra o cadastro certinho exibindo a mensagem.

Porem, se o usuario não estiver cadastrado, aí. ele faz o cadastro normalmente porem exibe a mensagem do Alert "'O login que você escolheu ja foi escolhido para outro usuario", como se ja houve-se o cadastro la e o que mais me intriga é o fato de o cadastro (INSERT), é feito normalmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que descobri

 

É o seguinte.

Eius meu form

 

<form id="fil_par_mod" name="formcad" method="post" action="cad_filiais.php?acao=cad_filiais"  onsubmit="return CriticaFormulario()" onsubmit='getElementById("espera").value="Aguarde, enviando dados..."; getElementById("espera").disabled=true'>
Obsertvem que ha 2 eventois onsubmit. Porem, eu poreciso dos 2.

Se eu tirar o 1º onsubmit="return CriticaFormulario()", ai o erro some.

Existre um,a forma de manter os 2 onsubmit's??

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.