Carcleo 4 Denunciar post Postado Junho 4, 2008 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
Alaerte Gabriel 662 Denunciar post Postado Junho 5, 2008 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
Carcleo 4 Denunciar post Postado Junho 5, 2008 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
Marcos Vilela Alves 4 Denunciar post Postado Junho 5, 2008 como você esta setando o valor da variavel $login usado no coigo sql de busca??? pq naum tem o $_POST['login'], e para pegar a senha você usou... o valor de ação tbm nao foi setado... ou foi??? Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Junho 5, 2008 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
Carcleo 4 Denunciar post Postado Junho 5, 2008 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 jaDe verificação de usuario que nem nesse bloco esta. porque será? Compartilhar este post Link para o post Compartilhar em outros sites
Tellys Castro 12 Denunciar post Postado Junho 5, 2008 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
Carcleo 4 Denunciar post Postado Junho 5, 2008 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
Tellys Castro 12 Denunciar post Postado Junho 5, 2008 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
Carcleo 4 Denunciar post Postado Junho 5, 2008 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
Carcleo 4 Denunciar post Postado Junho 5, 2008 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