Ir para conteúdo

POWERED BY:

Arquivado

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

Antonelli

[Resolvido] "Login Disponível", como consultar sem POST?

Recommended Posts

Olá galera,

 

Estou criando um formulário de cadastro, e nesse formulário, gostaria de efetuar a consulta para saber se o "login" e/ou o "email" já foram cadastrados.

Poderia fazer isso com o PHP, depois do POST... Mas queria usar o jQuery para que me retornasse a expressão "Login Disponível" ou "E-Mail disponível" quando não fossem encontrados no DB, e "Login já cadastrado!" ou "E-Mail já cadastrado!" quando fossem encontrados.

 

Ex.: Usuário acessa o formulário, preenche tudo, quando chega no input "Login:", ele digita "QualquerCoisa" (no-case-sensitive), quando "onBlur" no campo o jQuery/Ajax consulta o banco de dados para saber a disponibilidade do mesmo.

 

E aproveitando o "embalo", gostaria de uma indicação de um bom tutorial ou texto sobre validação de campos, dinâmicamente.

 

Desde já agradeço.

 

Antonelli Santos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça uma requisição $.post ou $.ajax com method POST enviando com POSTDATA as informações a serem incluídas na cláusula WHERE da tua consulta.

 

Essa página a ser consultada deverá ecoar/printar a resposta, seja texto plano, XML, JSON o que preferir. Uma vez que isso esteja feito, você analisa a resposta dentro da função de sucesso do método usado para fazer a requisição.

 

Leitura recomendada: jQuery.post()

 

Obs.: O mesmo procedimento pode ser aplicado se quiser fazer a requisição via GET, mas daíu será usado $.get opu $.ajax com method GET e não haverá o POSTDATA, uma vez que as informações trafergarão na própria URL, em forma de querystring..

 

Bons estudos :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, beleza?

Está comigo em todas as paradas hein...! =D

Então, fiz umas pesquisas aqui e encontrei os plugins "ajaxForm" e "Validate", que acabam facilitando ainda mais.

O que acha?

 

Fiz o formulário e funcionou bem com o "Validate", agora falta integrar os dois.

 

Uma dúvida... (normal)

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script language="javascript" type="text/javascript" src="js/jquery.js	"></script>
<script language="javascript" type="text/javascript" src="js/validate.js"></script>
<script language="javascript" type="text/javascript" src="js/mask.js"></script>
<script language="javascript" type="text/javascript">

$.validator.addMethod("usuarioRegex", function(value, element) {
	return this.optional(element) || /^[a-z0-9\-\_]+$/i.test(value);
}, "O campo \"Usuário\" deve conter apenas letras, números ou os símbolos \"-\" e \"_\"!");

$.validator.addMethod("senhaRegex", function(value, element) {
	return this.optional(element) || /^[a-z0-9]+$/i.test(value);
}, "O campo \"Senha\" deve conter apenas letras ou números!");

$(document).ready( function(){
	$("#teste").hide();
	$('#form1').validate({
		rules: {
			nome: {
				required: true,
				minlength: 7
			},
			nascimento: {
				required: true
			},
			sexo: {
				required:true
			},
			email: {
				required: true,
				email: true,
				remote: {
					url: "scripts/valida.php?campo=email",
					type: "post",
					data: {
						campo: "email",
						valor: $("#campoEmail").val()
					}
				}
			},
			conf_email: {
				required: true,
				email: true,
				equalTo: "#campoEmail"
			},
			uf: {
				required: true
			},
			usuario: {
				required: true,
				minlength: 4,
				maxlength: 23,
				usuarioRegex: true,
				remote: {
					url: "scripts/valida.php?campo=usuario",
					type: "post",
					data: {
						campo: "usuario",
						valor: $("#campoUsuario").val()
					}
				}
			},
			senha: {
				required: true,
				minlength: 4,
				maxlength: 32,
				senhaRegex: true
			},
			conf_senha: {
				required: true,
				equalTo: "#senha"
			},
			sexo_conta: {
				required: true
			},
			captcha: {
				required: true,
				remote: {
					url: "scripts/valida.php?campo=captcha",
					type: "post",
					data: {
						campo: "captcha",
						valor: $("#campoCaptcha").val()
					}
				}
			},
			termo: {
				required: true
			}
		},
		messages: {
			nome: {
				required: "O campo \"Nome Completo\" é obrigatório!",
				minlength: "O campo \"Nome Completo\" precisa ter, ao menos, 7 caractéres!"
			},
			nascimento: {
				required: "O campo \"Data de Nascimento\" é obrigatório!"
			},
			sexo: {
				required: "O campo \"Sexo do Usuário\" é obrigatório!"
			},
			email: {
				required: "O campo \"E-Mail\" é obrigatório!",
				email: "O campo \"E-Mail\" deve conter um e-mail válido!",
				remote: "O e-mail informado já consta em nossa base de dados!"
			},
			conf_email: {
				required: "O campo \"Confirmação de E-Mail\" é obrigatório!",
				email: "O campo \"E-Mail\" deve conter um e-mail válido!",
				equalTo: "O campo \"Confirmação de E-Mail\" deve ser idêntico ao campo \"E-Mail\"!"
			},
			uf: {
				required: "O campo \"Estado\" é obrigatório!"
			},
			usuario: {
				required: "O campo \"Usuário\" é obrigatório!",
				minlength: "O campo \"Usuário\" precisa ter, ao menos, 4 caractéres!",
				maxlength: "O campo \"Usuário\" pode ter, no máximo, 23 caractéres!",
				remote: function(){
							$("#teste").fadeIn(200);
						}
			},
			senha: {
				required: "O campo \"Senha\" é obrigatório!",
				minlength: "O campo \"Senha\" precisa ter, ao menos, 4 caractéres!",
				maxlength: "O campo \"Senha\" pode ter, no máximo, 32 caractéres!"
			},
			conf_senha: {
				required: "O campo \"Confirmação de Senha\" é obrigatório!",
				equalTo: "O campo \"Confirmação de Senha\" deve ser idêntico ao campo \"Senha\"!"
			},
			sexo_conta: {
				required: "O campo \"Sexo da Conta\" é obrigatório!"
			},
			captcha: {
				required: "O campo \"Captcha\" é obrigatório!",
				remote: "É necessário que o campo \"Captcha\" tenha o mesmo valor da imagem!"
			},
			termo: {
				required: "Você precisa aceitar os Termos para prosseguir com o cadastro!"
			}
		}
	});	
	$("#nascimento").mask("99/99/9999");
});

</script>
</head>
<body>
<div id="teste">
OK! Deu certo!
</div>
<form id="form1" name="form1" method="post" action="scripts/cadastra.php">
<div id="dados-pessoais">
<input type="hidden" name="ativa" id="status" value="N" />
<div class="campo">
   <label for="nome">Nome Completo:</label>
       <input type="text" name="nome" id="nome"/>
   </div>
<div class="campo">
   <label for="nascimento">Data de Nascimento:</label>
       <input type="text" name="nascimento" id="nascimento"/>
   </div>
   <div class="campo">
<label for="sexo-acc">Sexo:</label>
       <input type="radio" name="sexo" value="M" checked> Masculino
       <input type="radio" name="sexo" value="F"> Feminino
  	</div>
   <div class="campo">
   <label for="email">E-Mail:</label>
       <input type="text" name="email" id="campoEmail"/>
   </div>
   <div class="campo">
   <label for="conf_email">Confirmar E-Mail:</label>
       <input type="text" name="conf_email" id="conf_email"/>
   </div>
   <div class="campo">
   <label for="uf">UF:</label>
       <select name="uf">
           <option value="ac">Acre</option>
           <option value="al">Alagoas</option>
           <option value="ap">Amapá</option>
           <option value="am">Amazonas</option>
           <option value="ba">Bahia</option>
           <option value="ce">Ceará</option>
           <option value="df">Distrito Federal</option>
           <option value="es">Espirito Santo</option>
           <option value="go">Goiás</option>
           <option value="ma">Maranhão</option>
           <option value="ms">Mato Grosso do Sul</option>
           <option value="mt">Mato Grosso</option>
           <option value="mg">Minas Gerais</option>
           <option value="pa">Pará</option>
           <option value="pb">Paraíba</option>
           <option value="pr">Paraná</option>
           <option value="pe">Pernambuco</option>
           <option value="pi">Piauí</option>
           <option value="rj">Rio de Janeiro</option>
           <option value="rn">Rio Grande do Norte</option>
           <option value="rs">Rio Grande do Sul</option>
           <option value="ro">Rondônia</option>
           <option value="rr">Roraima</option>
           <option value="sc">Santa Catarina</option>
           <option value="sp">São Paulo</option>
           <option value="se">Sergipe</option>
           <option value="to">Tocantins</option>
       </select>
   </div>
</div>
<div id="dados-account">
<div class="campo">
   <label for="usuario">Usuário:</label>
       <input type="text" name="usuario" id="campoUsuario"/>
   </div>
   <div class="campo">
   <label for="idade">Senha:</label>
       <input type="password" name="senha" id="senha"/>
   </div>
   <div class="campo">
   <label for="sexo">Confirmar Senha:</label>
       <input type="password" name="conf_senha" id="conf_senha"/>
   </div>
   <div class="campo">
<label for="sexo-acc">Sexo da Conta:</label>
       <input type="radio" name="sexo_conta" value="M" checked="checked"> Masculino
       <input type="radio" name="sexo_conta" value="F"> Feminino
  	</div>
   <div class="campo">
   <label for="captcha">Imagem de Confirmação:</label><br />
   	<img src="scripts/captcha/imagem-captcha.php" /><br />
       <input type="text" name="captcha" id="campoCaptcha"/>
   </div>
<div class="campo">
<label for="termo">Estou de acordo com os Termos!</label>
	<input type="checkbox" name="termo" id="termo" value="S" />
</div>
   <input type="submit" value="ENVIAR" />
</div>
</form>
</body>
</html>

 

Esse é o HTML principal, já configurei as mensagens e tudo mais.

Os "remotes" fazem uma consulta e retorna o resultado instantânea e estão funcionando.

Queria montar uma função que caso ele retornasse "false" (erro) do remote, ele abriria uma "div" que estaria com dados para reenviar a confirmação de cadastro por e-mail.

Criei uma função que dá um "fade" numa "div" de teste, quando preencho o "usuario" e mudo de campo, ele checa caso "false" a div aparece... Mas caso eu clique sobre o campo, ele dá a mensagem que é pra eu consertar o mesmo... (Please fix this field.)! Teria que, na função, colocar para caso ele seja clicado novamente, reseta o "remote". Certo? Teria como?

 

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está comigo em todas as paradas hein...! =D

Pois é, né. Quem vê pensa que sou super desocupado :lol:

 

Assim, não conheço esse plugin MAS, pela sintaxe a opção remote é bem similar à $.ajax, não apenas pelo fato de você definir os campos a serem enviados e a URL alvo (já que $.post e $.get também exigem isso) mas pelo fato de você definir o método da requisição.

 

Sendo assim, pode ser que haja suporte ao callback success tal qual o uso normal de $.ajax teria.

 

Dá uma olhada na documentação do plugin (e se posssível forneça o link do mesmo também) e veja se há essa possibilidade.

 

Se houver, success será invocado, por ser uma função, assim que a requisição se completar.

 

Normalmente, analisaria-se o valor do primeiro parâmetro, que é a resposta da requisição e faria-se alguma coisa, no seu caso exibir a tal DIV, com efeito ou não.

 

Agora se o plugin retornar outra coisa, ou trabalhar de forma diferente da esperada, temos de ver outra possível solução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, tu é muito bom mesmo! rs .

 

Existe sim, este retorno "SUCESS"!

Nele eu criaria a função que executasse quando o teste fosse válido, correto?

Mas isso ainda não resolve o problema do "REMOTE", quando eu consulto e ele retorna um erro, faz a função que determinei no "MESSAGE", mas ai se vou lá no campo e troco o valor que digitei, ele teria que resetar o "REMOTE" e checar novamente, correto?

Acredito que eu tenha que fazer um "loop". Quando "SUCESS" ele esconde a DIV e quando "MESSAGE" ele mostra a DIV, será que isso resolveria?

 

Obrigadão MAN!

 

EDIT: Sobre a documentação, ai está: http://docs.jquery.com/Plugins/Validation

Achei ele, um plugin bem interessante!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A ação de verificação se dá quando? Ao perder o foco do campo, enquanto digita...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu deveria ler as coisas com mais atenção... <_<

 

Nele eu criaria a função que executasse quando o teste fosse válido, correto?

Não. A função success é disparada quando a requisição for um sucesso. Dentro dela é que você vai interpretar a resposta.

 

Se sua página PHP, ASP e etc. apenas mostrar um yes ou no, você vai usar esse valor com argumento de um IF por exemplo. Se for TRUE exibe a DIV, põe efeito, pisca a tela, enfim...

 

Se for FALSE não faz nada, ou exibe um erro...

 

Mas isso ainda não resolve o problema do "REMOTE", quando eu consulto e ele retorna um erro, faz a função que determinei no "MESSAGE", mas ai se vou lá no campo e troco o valor que digitei, ele teria que resetar o "REMOTE" e checar novamente, correto?

A requisição GET/POST não está sendo feita novamente?

 

Uma outra coisinha. Sua DIV teste já deve vir oculta (display none) e não ser escondida com o JS. Como o JS é a última coisa a carregar, até que ele seja a DIV estará visível.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos por partes! rs .

É que estou "enferrujado" com as novas linguagens! Faz um tempo que não crio um site! :ermm:

 

Abaixo está o HTML do formulário, junto com o JS.

O campo usuário está com um "REMOTE", que faz a consulta assim que eu digito e aperto "TAB" ou mudo de campo.

Essa está no PHP que postei abaixo do código, ela retorna "TRUE" caso esteja disponível e "FALSE" caso esteja indisponível, isto antes de enviar o formulário.

 

OBS¹.: Esse não é o formulário final, mas para testes, achei esse mais "enxuto"!

 

O que eu gostaria que acontecesse é o seguinte:

 

Ao retornar "FALSE" no remote que consulta a disponibilidade do usuário, ele mostraria a div "#failUsuarioRemote".

Caso retornasse "TRUE", ele mostraria a div "#successUsuarioRemote".

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TESTE</title>
<style type="text/css">

#successUsuarioRemote,
#failUsuarioRemote {
	display:none;
}

</style>
<script language="javascript" type="text/javascript" src="js/jquery.js"></script>
<script language="javascript" type="text/javascript" src="js/validate.js"></script>
<script language="javascript" type="text/javascript" src="js/mask.js"></script>
<script language="javascript" type="text/javascript">

$.validator.addMethod("usuarioRegex", function(value, element) {
	return this.optional(element) || /^[a-z0-9\-\_]+$/i.test(value);
}, "O campo \"Usuário\" deve conter apenas letras, números ou os símbolos \"-\" e \"_\"!");

$.validator.addMethod("senhaRegex", function(value, element) {
	return this.optional(element) || /^[a-z0-9]+$/i.test(value);
}, "O campo \"Senha\" deve conter apenas letras ou números!");

$(document).ready( function(){
	var validaForm = $('#form1').validate({
		rules: {
			usuario: {
				required: true,
				minlength: 4,
				maxlength: 23,
				usuarioRegex: true,
				remote: {
					url: "scripts/valida.php?campo=usuario",
					type: "post",
					data: {
						campo: "usuario",
						valor: $("#campoUsuario").val()
					}
				}
			},
			senha: {
				required: true,
				minlength: 4,
				maxlength: 32,
				senhaRegex: true
			}
		},
		messages: {
			usuario: {
				required: "O campo \"Usuário\" é obrigatório!",
				minlength: "O campo \"Usuário\" precisa ter, ao menos, 4 caractéres!",
				maxlength: "O campo \"Usuário\" pode ter, no máximo, 23 caractéres!",
				remote: "ERRO!"
			},
			senha: {
				required: "O campo \"Senha\" é obrigatório!",
				minlength: "O campo \"Senha\" precisa ter, ao menos, 4 caractéres!",
				maxlength: "O campo \"Senha\" pode ter, no máximo, 32 caractéres!"
			}
		},
		submitHandler: function() { alert("Enviado!") },
		onkeyup: false
	});
});

</script>
</head>
<body>
<div id="successUsuarioRemote">Usuário Disponível!</div>
<div id="failUsuarioRemote">Usuário Indisponível!</div>
<form id="form1" name="form1" method="post" action="">
<div id="dados-account">
<div class="campo">
   <label for="usuario">Usuário:</label>
       <input type="text" name="usuario" id="campoUsuario"/>
   </div>
   <div class="campo">
   <label for="idade">Senha:</label>
       <input type="password" name="senha" id="senha"/>
   </div>
   <input type="submit" value="ENVIAR" />
</div>
</form>
</body>
</html>

<?php

// Conecta ao DB
function connect($host, $user, $pass, $db) {	
	$host_name	= $host;
	$username	= $user;
	$senha		= $pass;
	$banco		= $db;
	$bd = mysql_connect($host_name,$username,$senha);
	$select_bd = mysql_select_db($banco, $bd);
	if($bd === FALSE && $select_bd === FALSE){
		return 0;
	}else{
		return 1;
	}
}

// Executa QUERY SELECT NUM ROWS
function query_execSelectNum($host, $user, $pass, $db, $query){
	$conn = connect($host, $user, $pass, $db);
	if ($conn != 1){
		return "Sua pesquisa não pode ser executada! Entre em contato com um Administrador!";
		exit();
	}
	$result_querySelectNum = mysql_query($query);
	if(!$result_querySelectNum){
		return 0;
	}else{
		$rowsSelectNum = mysql_num_rows($result_querySelectNum);
		return $rowsSelectNum;
	}
}

// Valida campo USUARIO
if(isset($_GET['campo']) && $_GET['campo'] == "usuario"){
	if(isset($_POST['usuario']) || $_POST['usuario'] != ""){
		$usuario = $_POST['usuario'];
		$select_usuarioConfere = "SELECT * FROM `usuarios` WHERE `login` = '$usuario'";
		$usuarioConfere = query_execSelectNum("127.0.0.1","root","","ragnaeli_cp",$select_usuarioConfere);
		if($usuarioConfere > 0){
			echo "false";
		}else{
			echo "true";
		}
	}
}

?>

 

Alterando a parte abaixo, consegui fazer aparecer a DIV em caso de erro, ai volto ao campo e apago o "usuario que está indisponível" e digito outro que também não está disponivel, quando mudo de campo (que ele faz a validação), retorna "Please fix this field!".

Acredito que ele não consegue .show() na DIV pois elá já está assim.

 

(...)

		messages: {
			usuario: {
				required: "O campo \"Usuário\" é obrigatório!",
				minlength: "O campo \"Usuário\" precisa ter, ao menos, 4 caractéres!",
				maxlength: "O campo \"Usuário\" pode ter, no máximo, 23 caractéres!",
				remote: function(){
					$("#failUsuarioRemote).show();
				}
			},

(...)

 

E não entendi a função "SUCCESS", pelo que li na documentação, ela é acionada quando o formulário é enviado e sem erros, e não por campo.

 

Me ajudem? :joia:

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Experimenta colocar um parâmetro nessa função (qualquer nome) e dentro dela alertar o valor.

 

Vejamos se retorna o mesmo que $.ajax...

Compartilhar este post


Link para o post
Compartilhar em outros sites

(...)

                       messages: {
                               usuario: {
                                       required: "O campo \"Usuário\" é obrigatório!",
                                       minlength: "O campo \"Usuário\" precisa ter, ao menos, 4 caractéres!",
                                       maxlength: "O campo \"Usuário\" pode ter, no máximo, 23 caractéres!",
                                       remote: function(data){
                                               if(data == "false"){
                                                       $("#failUsuarioRemote").show();
                                               }else{
                                                       $("#failUsuarioRemote").hide();
                                               }
                                       }
                               },

(...)

 

Assim?

:lol:

 

EDIT: Testei assim e funcionou da mesma maneira, ele mostra a div quando o login está indisponivel (quando o PHP retorna "false"), mas ele não escolnde a div quando o login está disponível (quando o PHP retorna "true").

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se é a melhor maneira, mas você pode adicionar um evento focus() aos campos forçando um hide() ou fadeOut():

 

$( 'input[@type="text"]' ).focus( function(){

   $( '#failUsuarioRemote' ).hide();
});

P.S.: data está mesmo retornando a string false?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estava lendo a documentação e a parte "REMOTE" é igual à "jquery.ajax"!

Lendo o script do "Validate", encontrei isso:

 

	// http://docs.jquery.com/Plugins/Validation/Methods/remote
	remote: function(value, element, param) {
		if ( this.optional(element) )
			return "dependency-mismatch";

		var previous = this.previousValue(element);
		if (!this.settings.messages[element.name] )
			this.settings.messages[element.name] = {};
		previous.originalMessage = this.settings.messages[element.name].remote;
		this.settings.messages[element.name].remote = previous.message;

		param = typeof param == "string" && {url:param} || param;

		if ( this.pending[element.name] ) {
			return "pending";
		}
		if ( previous.old === value ) {
			return previous.valid;
		}

		previous.old = value;
		var validator = this;
		this.startRequest(element);
		var data = {};
		data[element.name] = value;
		$.ajax($.extend(true, {
			url: param,
			mode: "abort",
			port: "validate" + element.name,
			dataType: "json",
			data: data,
			success: function(response) {
				validator.settings.messages[element.name].remote = previous.originalMessage;
				var valid = response === true;
				if ( valid ) {
					var submitted = validator.formSubmitted;
					validator.prepareElement(element);
					validator.formSubmitted = submitted;
					validator.successList.push(element);
					validator.showErrors();
				} else {
					var errors = {};
					var message = response || validator.defaultMessage( element, "remote" );
					errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
					validator.showErrors(errors);
				}
				previous.valid = valid;
				validator.stopRequest(element, valid);
			}
		}, param));
		return "pending";
	},

 

Vou tentar por "JSON", mas qual "dataType" retorna "bolean"?

Já, já posto resultados!

Compartilhar este post


Link para o post
Compartilhar em outros sites
qual "dataType" retorna "bolean"?

nenhum.

 

 

é apenas texto, seja formatado ou não, é apenas texto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, tentei algumas formas aqui e sempre esbarra no mesmo erro!

Ele faz a validação apenas 1 vez, a primeira.

Postei no meu host de testes, ai está:

 

http://testes.ragnaelite.com.br/validacao/

 

Digite "teste" no usuário e verá que ele retorna "indisponível", no mesmo campo, apague e tente novamente outro nome, ele não validará a "disponibilidade"!

Atualize a página e digite "qualquer" no usuário, ele validará e retornará "disponível", agora apague e tente digitar "teste". Ele não validará novamente.

Ou seja, ele só está validando a primeira vez!

 

Meu objetivo é deixá-lo da mesma maneira que, por exemplo, se você digitar uma palavra de 3 caractéres, ele dá erro, apague e digite uma de 24, ele dá outro erro, apague tudo, outro erro. Ele valida conforme altera o campo, isso que eu quero que faça, que ele valide o "usuário" quando o cadastro estiver sendo efetuado. Se a pessoa digitar 10 usuários "indisponíveis", ele validará os 10 e retornará "indisponível e uma solução (reenviar e-mail de confirmação para o usuário digitado)" em cada um, e no 11 for disponível, ele retornará "disponível". Deu pra entender?

 

Abaixo está o PHP que usei para validá-lo:

 


<?php

// include("scripts/funcoes.php");

if(isset($_GET['campo']) && $_GET['campo'] == "usuario"){

	if(isset($_POST['usuario']) || $_POST['usuario'] != ""){

		$userCheck = '';
		$returnJsonArr = array();

		function disponibilidadeUsuario($campo){
			$usuario = $campo;
			// $select_usuarioConfere = "SELECT * FROM `usuarios` WHERE `login` = '$usuario'";
			// $usuarioConfere = query_execSelectNum("127.0.0.1","ragnaeli_cp","x5lk?wXAL7Cu","ragnaeli_cp",$select_usuarioConfere);
			// if($usuarioConfere > 0){
			//  	return "indisp";
			// }else{
			//  	return "disp";
			//}
			if($usuario == "teste"){
				return "indisp";
			}else{
				return "disp";
			}
		}

		$userCheck = disponibilidadeUsuario($_POST['usuario']);

		$returnJsonArr['userCheck'] = $userCheck;

	}

	echo json_encode($returnJsonArr);

}

?>

 

O que está "comentado" é por ser a "real validação" que será feita.

Alguém tem uma solução? Preciso entregar isso o mais rápido possível! :(

 

Agradeço à todos,

Principalmente ao Bruno Augusto!

 

EDIT:

 

Lendo o POST que exponho a função "REMOTE", vi isso:

 

validator.stopRequest(element, valid);

 

Será que isto está impedindo o "loop"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu pessoalmente, faria por fora do plugin.

 

 

assim:

http://www.wbruno.com.br/blog/2009/08/14/verificar-se-usuario-ja-existe-no-banco/

 

disparando a requisição no evento onkeypress do input. E pronto, estaria resolvido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu pessoalmente, faria por fora do plugin.

 

 

assim:

http://www.wbruno.com.br/blog/2009/08/14/verificar-se-usuario-ja-existe-no-banco/

 

disparando a requisição no evento onkeypress do input. E pronto, estaria resolvido.

 

E o restante das validações?

 

EDIT:

 

Willian Bruno, muito obrigado! Seu método ficou perfeito, exatamente como eu queria.

Deixei a validação normal, apenas retirei o "remote" e fiz uma função á parte.

 

$(function(){
	$("input[name='usuario']").focusout( function(){
		var nomeUsuario = $("input[name='usuario']").val();
		if(nomeUsuario != ""){
			$.post('valida.php?campo=usuario',{usuario: nomeUsuario},function(data){
				if(data == 0){
					$('#respostaUsuarioRemote').html("Usuário Indisponível!");
				}else{
					$('#respostaUsuarioRemote').empty();
				}
			});
		}else{
			$('#respostaUsuarioRemote').empty();
		}
	});
});

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.