Ir para conteúdo

POWERED BY:

Arquivado

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

Gustavo Freitas

Verificar se o usuário já está cadastrado

Recommended Posts

tenho um sistema de cadastro rodando em um site, e preciso verificar se o número de matrícula do usuário já foi cadastrado. Alguém sabe como posso fazer essa busca no banco de Dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php	$query = "SELECT ID FROM tabela WHERE matricula='".$_POST['matricula']."' LIMIT 1";	$result = @mysql_query($query);	if(@mysql_num_rows($result)){		echo "Matrícula já cadastrada";		exit(0);	}?>

Basicamente é isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza Mário, o meu ficou assim:

 

<?php	$query = "SELECT ID FROM usuarios WHERE matricula='".$_POST['matricula']."' LIMIT 1";	$result = @mysql_query($query);	if(@mysql_num_rows($result)){		echo "Matrícula já cadastrada";		header ("Location: erro.php");	}else{		header ("Location: cadastra.php");		exit(0);	}?>

Eu salvei esse arquivo como verifica2.php e apontei o action do form direto pra ele, + ele continua cadastrando assim mesmo, como se ele ignorasse a condição (if) e indo direto pro "cadastra.php", depois, alterei o código dessa forma:

 

<?php	$query = "SELECT ID FROM usuarios WHERE matricula='".$_POST['matricula']."' LIMIT 1";	$result = @mysql_query($query);	if(@mysql_num_rows($result)){		 header ("Location: cadastra.php");	}else{		echo "Matrícula já cadastrada";		header ("Location: erro.php");		exit(0);	}?>

Dessa forma, ele não cadastra nenhuma matícula, nem as existentes e nem as inexistentes...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retornou o seguinte erro:Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/home/coopolo/htdocs/login/cad01teste/verifica2.php on line 4Matrícula já cadastradaWarning: Cannot modify header information - headers already sent by (output started at /usr/home/coopolo/htdocs/login/cad01teste/verifica2.php:4) in /usr/home/coopolo/htdocs/login/cad01teste/verifica2.php on line 8

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gustavo Freitas se você tem um campo no banco que nao pode ser repetido coloque ele como UNIQUE e o header tem que ser usado antes de qualquer saida html ou se você controlar a saida html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza Fabyo, eu defini o campo como Unique e ele realmente não cadastra o usuário se a matrícula já existir. No entanto, eu tenho que retornar de alguma forma para o usuário que o seu cadastro não foi efetuado pq a matrícula já existe... como eu posso fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa javascript.

 

exemplo:

 

 

blablabla if(matricula cadastrada) {

echo("Matrícula já cadastrada, redirecionando à página de cadastro.<script>window.setTimeout('changeurl();',5000); function changeurl(){window.location='http://www.imasters.com.br';}</script>");
bla bla bla } // fecha if

 

Tipo, é contado em milésimo de segundos,

 

5000 = 5 segundos

1000 = 1 segundos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é bem isso.. dexa que explicar melhor...eu tenho um arquivo para fazer a verificação, assim:<?php $query = "SELECT * FROM usuarios WHERE matricula='".$_POST['matricula']."' LIMIT 1"; $result = @mysql_query($query); if(@mysql_num_rows($result)==1){ header ("Location: cadastra.php"); }else{ echo "ERRO - Matrícula já cadastrada"; exit(0); }?>Só que independete do resultado, ele sempre retorna "ERRO - Matrícula já cadastrada"...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você se enganou no if. O certo seria:

if(!@mysql_num_rows($result)){	header ("Location: cadastra.php");}else{	echo "ERRO - Matrícula já cadastrada";	exit(0);}
Ou seja, se não for encontrado nenhum resultado em que matricula=$_POST['matricula'], então ele vai para a página de cadastro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pela dica Mário, mas o que está acountecendo é o seguinte:

 

1º Defini o campo matrícula como UNIQUE;

 

2º Alterei o código como você passou, ficou assim:

 

<?php

$query = "SELECT * FROM michellin WHERE matricula='".$_POST['matricula']."' LIMIT 1";

$result = @mysql_query($query);

if(!@mysql_num_rows($result)){

header ("Location: cadastra.php");

}else{

echo "ERRO - Matrícula já cadastrada";

exit(0);

}

?>

 

Beleza, rodei o prog... agora ele não cadastra mais se a matrícula existir, + ele não roda o ELSE e não mostra "ERRO - Matrícula já cadastrada", segue como se tivesse efetuado o cadastro... ele não exibe nenhuma mensagem ao usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sei... ele não está cadastrando as matrículas existentes pq como o Fabyo falou, o campo está definido como UNIQUE, já tirei os @ antes e retornou um erro...

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/home/coopolo/htdocs/login/cad01teste/verifica2.php on line 4Matrícula já cadastradaWarning: Cannot modify header information - headers already sent by (output started at /usr/home/coopolo/htdocs/login/cad01teste/verifica2.php:4) in /usr/home/coopolo/htdocs/login/cad01teste/verifica2.php on line 8

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza!

 

Tá quase...

 

Consegui fazer ele executar o teste e ficou assim:

 

Entro no form incluir

 

<form name=\"form1\" method=\"post\" onSubmit=\"return valida(this);\" action=\"verifica2.php\">...

Faço a verificação no verifica2.php

 

<?phpinclude"conecta.php";	$query = "SELECT matricula FROM tb_cadastro WHERE matricula='".$_POST['matricula']."' LIMIT 1";	$result = mysql_query($query);	if(!mysql_num_rows($result)){	header ("Location: cadastra.php");	}else{	echo "ERRO - Matrícula já cadastrada";	exit(0);}?>

Se a matrícula não existe, ele segue pro cadastra...

 

<?$codigo = $_POST["codigo"];$nome = $_POST["nome"];$user = $_POST["user"];$matricula = $_POST["matricula"];$setor = $_POST["setor"];$ccusto = $_POST["ccusto"];$terceiros = $_POST["terceiros"];$ramal = $_POST["ramal"];$telefone = $_POST["telefone"];$endereco = $_POST["endereco"];$bairro = $_POST["bairro"];$cidade = $_POST["cidade"];$uf = $_POST["uf"];$ref = $_POST["ref"];$email = $_POST["email"];$senha = $_POST["senha"];include"setup.php";  mysql_query("INSERT INTO tb_cadastro (codigo,nome,user,matricula,setor,ccusto,terceiros,ramal,telefone,endereco,bairro,cidade,uf,ref,email,senha) VALUES ('$codigo','$nome','$user','$matricula','$setor','$ccusto','$terceiros','$ramal','$telefone','$endereco','$bairro','$cidade','$uf','$ref','$email','$senha') ",$conexion);	if ($res == 0)	{		header ("Location: http://www.meusite.com.br/index.php");	}	else		header ("Location: http://www.meusite.com.br/erro.php");?>

Só que aqui ele não recebe as variáveis postadas... + a condição está funcionando beleza!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele não ta recebendo as variáveis pelo fato do action do form estar para o verifica2.php e nao pra cadastro.phpSoluções:Tira o header ("Location: cadastra.php"); e põe o script do cadastro (pra q 2 arquivos se pode fazer com 1 ? )... caso contrário, inicia as variáveis com $_SESSION ou $_COOKIE e busca no cadastro.phpAHhh EDIT;;tu pode usar ajax também, ai verifica no banco de dados sem sair da página...!

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.