neip2p Postado Outubro 16, 2008 Denunciar Share Postado Outubro 16, 2008 B) Como eu faço para não cadastrar usuários repetidos em meu banco de dados MySQL, meu codigo atual para inserção é:<?include ("conecta.php");$nome = $_POST['nome'];$senha = $_POST['senha'];$insere = mysql_query("INSERT INTO `login`( `nome`, `senha`) VALUES ('$nome','$senha')") or die(mysql_error());if($insere)echo "Cadastro realizado com sucesso!";elseecho "Não foi possível fazer o seu cadastramento!";?>Obrigado desde já... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ikkinet Postado Outubro 16, 2008 Denunciar Share Postado Outubro 16, 2008 (editado) Antes de tudo, coloque o campo nome da tabela login como Chave Primária. Isso fará com que não exista nenhum nome igual ao outro.Depois disso, é só tratar. Há várias maneiras, mais simples ou mais complexas, dependendo do seu nível de conhecimento..Uma solução mais simples, mas menos otimizada é procurar no banco, antes de incluir, se já existe este usuário, então mostra uma mensagem de erro e não insere. Se inserir, o próprio banco vai dar erro..Outra solução é tirar o or die do mysql_query. Ao invés disso, coloque @ antes (não sei se, por padrão, ao inserir um registro duplicado ele retorna warning ou error, então é melhor previnir).. Logo depois, teste o mysql_errno(). Essa função retorna o resultado de um consulta do SQL. Aí, é só comparar o código (numérico) pra ver qual foi o erro. Nesse caso, seria o código 1062. Nesse link [http://dev.mysql.com/doc/refman/5.0/en/err...ges-server.html] há uma lista com vários códigos possíveis.. Editado Outubro 16, 2008 por ikkinet Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --hermesmc -- Postado Outubro 17, 2008 Denunciar Share Postado Outubro 17, 2008 Antes de tudo, coloque o campo nome da tabela login como Chave Primária. Isso fará com que não exista nenhum nome igual ao outro.Depois disso, é só tratar. Há várias maneiras, mais simples ou mais complexas, dependendo do seu nível de conhecimento..Uma solução mais simples, mas menos otimizada é procurar no banco, antes de incluir, se já existe este usuário, então mostra uma mensagem de erro e não insere. Se inserir, o próprio banco vai dar erro..Outra solução é tirar o or die do mysql_query. Ao invés disso, coloque @ antes (não sei se, por padrão, ao inserir um registro duplicado ele retorna warning ou error, então é melhor previnir).. Logo depois, teste o mysql_errno(). Essa função retorna o resultado de um consulta do SQL. Aí, é só comparar o código (numérico) pra ver qual foi o erro. Nesse caso, seria o código 1062. Nesse link [http://dev.mysql.com/doc/refman/5.0/en/err...ges-server.html] há uma lista com vários códigos possíveis..Não creio que seja uma boa solução colocar o campo nome como chave primária. Entendo que a idéia é não ter nomes duplicados, mas se você tiver homonimos como vai fazer? O ideal é que a chave primária seja um campo com código do usuário(númérico auto-incremental). Crie em sua tabela um campo para login onde você poderia armazenar um nome só para login, por exemplo: José da Silva, login jose1, senha xxxx; José da Silva, login jose2, senha yyyy; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ikkinet Postado Outubro 17, 2008 Denunciar Share Postado Outubro 17, 2008 Eu havia entendido que o campo nome da tabela dele referia-se ao nome de usuário, ou login.Mas se for o nome real, também não aconselho que ele seja definido como primário. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
neip2p
B) Como eu faço para não cadastrar usuários repetidos em meu banco de dados MySQL, meu codigo atual para inserção é:
<?
include ("conecta.php");
$nome = $_POST['nome'];
$senha = $_POST['senha'];
$insere = mysql_query("INSERT INTO `login`( `nome`, `senha`) VALUES ('$nome','$senha')") or die(mysql_error());
if($insere)
echo "Cadastro realizado com sucesso!";
else
echo "Não foi possível fazer o seu cadastramento!";
?>
Obrigado desde já...
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.