allanlb 0 Denunciar post Postado Setembro 29, 2009 Boa noite! Tenho uma dúvida, agradeço se me ajudarem: Tenho uma tela de cadastro e um arquivo que verifica a disponibilidade do login, gostaria de ativar o botão pra cadastrar, apenas se a pessoa verificou a disponibilidade do login. Tentei fazer isso pegando um valor pelo GET, mas como a verificação é feita por ajax, ele não "Vê" o valor vindo pelo get sem dar refresh... seguem os dois arquivos. Obs.: Imagino que dê pra mandar o botao por ajax, assim como mando o texto/resultado da verificação. Não sei se isso funciona. Cadastro.php <?php include ('conexao.php'); //include ('inserir.php'); ?> <link rel="stylesheet" type="text/css" href="estrutura_principal.css"> <form id="form1" name="form1" method="post" enctype="multipart/form-data" onsubmit="return validar()" onsubmit="return testasenha()" action="?pag=cadastro&cadastro=ok"> <table width="622" border="0"> <tr> <td colspan="2" </td> </tr> <tr> <td colspan="2" bordercolor="#FFFFFF"><div align="center"></div></td> <tr> <td class="rotuloformcadastro">Login desejado: </td> <td class="rotuloformcadastro"> <input name="loginn" type="text" id="loginn" />* <a href="#?acao=ok" onclick="startRequest();mostra_botao()" class="verificadisponibilidade">Verificar disponibilidade</a><div id="resultado"></div> </td> </tr> <tr> <td class="rotuloformcadastro">Senha desejada: </td> <td class="rotuloformcadastro"><input name="senhaum" type="password" id="senhaum" /> *</td> </tr> <tr> <td class="rotuloformcadastro">Repita a senha: </td> <td class="rotuloformcadastro"><label> <input name="senhadois" type="password" id="senhadois" /> *</label></td> </tr> </tr> <tr> <td width="178" class="rotuloformcadastro">Nome:</td> <td width="434" class="rotuloformcadastro"><label> <input name="nome" type="text" id="nome"/>* </label> </td> </tr> <tr> <td class="rotuloformcadastro">Sobrenome:</td> <td class="rotuloformcadastro"><input name="sobrenome" type="text" id="sobrenome" />*</td> </tr> <tr> <td class="rotuloformcadastro">Sexo:</td> <td bordercolor="#FFFFFF" class="rotuloformcadastro"><label> <input name="sexo" type="radio" value="m" /> <font color="#0099FF">Masculino</font> <input name="sexo" type="radio" value="f"/> <font color="#FF00FF">Feminino</font></label> *</td> </tr> <tr> <td class="rotuloformcadastro">Data de nascimento:</td> <td bordercolor="#FFFFFF" class="rotuloformcadastro"><input name="nascimento" type="text" id="nascimento" maxlength="10" onkeypress="Data(event, this)"/>* </tr> <tr> <td class="rotuloformcadastro">E-Mail:</td> <td bordercolor="#FFFFFF" class="rotuloformcadastro"><input name="email" type="text" id="email" />*</td> </tr> <tr> <td class="rotuloformcadastro">Telefone:</td> <td bordercolor="#FFFFFF" class="rotuloformcadastro"><input name="telefone" type="text" id="telefone" />*</td> </tr> <tr> <td class="rotuloformcadastro">Telefone celular:</td> <td bordercolor="#FFFFFF"><input name="telefone1" type="text" id="telefone1" /></td> </tr> <td class="rotuloformcadastro">Estado:</td> <td bordercolor="#FFFFFF" class="rotuloformcadastro"><input name="estado" type="text" id="estado" />*</td> </tr> <td class="rotuloformcadastro">Cidade:</td> <td bordercolor="#FFFFFF" class="rotuloformcadastro"><input name="cidade" type="text" id="cidade" />*</td> </tr> <td class="rotuloformcadastro">Endereço:</td> <td bordercolor="#FFFFFF"class="rotuloformcadastro"><input name="endereco" type="text" id="endereco" size="40" />*</td> </tr> </tr> <tr> <td class="rotuloformcadastro">Foto:</td> <td bordercolor="#FFFFFF"><input name="foto" type="file" id="foto" /></td> </tr> <tr> <td colspan="2" bordercolor="#FFFFFF"><label> <div align="center"> <input type="submit" name="botao" value="Cadastrar"/> <input type="reset" name="Submit2" value="Limpar Formulário" /> </div> </label> <label> <div align="center"></div> </label></td> </tr> </table> <label></label><label></label> </form> <?php if ($_GET[cadastro]=='ok'){ include ('uploaddeimagem.php'); $allan=mysql_query("insert into clientes(cod_cliente,login,senha,nome,sobrenome,foto,sexo,nascimento,email,cidade,estado,endereco,telefone,telefone1,senha2) values('{$_POST['codigo']}','{$_POST['loginn']}','{$_POST['senhaum']}','{$_POST['nome']}','{$_POST['sobrenome']}','".imagem($_FILES[foto])."','{$_POST['sexo']}',' {$_POST['nascimento']}','{$_POST['email']}','{$_POST['cidade']}','{$_POST['estado']}','{$_POST['endereco']}','{$_POST['telefone']}','{$_POST['telefone1']}','{$_POST['senhadois']}')")or die("erro no comando do:".mysql_error()); if ($allan){ $res = mysql_query("select * from clientes where login='".$_POST['loginn']."' and senha='".$_POST['senhaum']."'"); $d = mysql_fetch_array($res); $_SESSION[codigo] = $d[cod_cliente]; $_SESSION[cliente] = $d[nome]; print '<script> alert("Cadastro Efetuado com sucesso!"); window.location="?pag=minhaconta";</script>'; }else{ print '<script> alert("Erro de sistema!"); window.location="?pag=cadastro";</script>'; } } ?> <script type="text/javascript"> var xmlHttp; function createXMLHttpRequest() { if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } } function startRequest() { createXMLHttpRequest(); xmlHttp.onreadystatechange = handleStateChange; //xmlHttp.open("get", "verifica.php", true); xmlHttp.open("get", "verifica.php?login=" + document.getElementById('loginn').value, true); // xmlHttp.send("login=" + document.getElementById("loginn") + "&endereco=" + document.getElementById("endereco")); xmlHttp.send(null); } function handleStateChange() { if(xmlHttp.readyState == 4) { if(xmlHttp.status == 200) { document.getElementById("resultado").innerHTML = xmlHttp.responseText; } } } </script> <script> function validar(){ d = document.all; erro = true; if(d.loginn.value == ''){ alert("O campo Login é obrigatório, favor preencher."); d.loginn.focus(); erro = false; }else if(d.senhaum.value == ''){ alert("O campo Senha é obrigatório, favor preencher."); d.senhaum.focus(); erro = false; }else if(d.senhadois.value == ''){ alert("O campo Repita a senha é obrigatório, favor preencher."); d.senhadois.focus(); erro = false; }else if(d.senhaum.value != d.senhadois.value){ alert("Os campos referentes a senha devem conter valores identicos."); d.senhaum.focus(); erro = false; }else if(d.nome.value == ''){ alert("Campo Nome em branco, favor preencher."); d.nome.focus(); erro = false; }else if(d.sobrenome.value == ''){ alert("Campo Sobrenome em branco, favor preencher."); d.sobrenome.focus(); erro = false; }else if(d.nascimento.value == ''){ alert("Campo Data de Nascimento em branco, favor preencher."); d.nascimento.focus(); erro = false; }else if(d.email.value == ''){ alert("Campo E-mail em branco, favor preencher."); d.email.focus(); erro = false; }else if(d.telefone.value == ''){ alert("Campo Telefone em branco, favor preencher."); d.telefone.focus(); erro = false; }else if(d.telefone1.value == ''){ alert("Campo Telefone celular em branco, favor preencher."); d.telefone1.focus(); erro = false; }else if(d.estado.value == ''){ alert("Campo Estado em branco, favor preencher."); d.estado.focus(); erro = false; }else if(d.cidade.value == ''){ alert("Campo Cidade em branco, favor preencher."); d.cidade.focus(); erro = false; }else if(d.endereco.value == ''){ alert("Campo Endereço em branco, favor preencher."); d.endereco.focus(); erro = false; }if(erro == false){return false;} } </script> <script language="javascript"> function Data(evento, objeto){ var keypress=(window.event)?event.keyCode:evento.which; nascimento = eval (objeto); if (nascimento.value == '00/00/0000') { nascimento.value="" } caracteres = '0123456789'; separacao1 = '/'; conjunto1 = 2; conjunto2 = 5; if ((caracteres.search(String.fromCharCode (keypress))!=-1) && nascimento.value.length < (10)) { if (nascimento.value.length == conjunto1 ) nascimento.value = nascimento.value + separacao1; else if (nascimento.value.length == conjunto2) nascimento.value = nascimento.value + separacao1; } else event.returnValue = false; } </script> Verifica.php <?php header("Last-Modified: {$gmtDate} GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); header('Content-Type: text/html; charset=iso-8859-1'); include "conexao.php"; $login = $_REQUEST['login']; if ( $login <> ""){ //Codigo para verificar se existe o login cadastrado $sql = mysql_query("SELECT login FROM clientes WHERE login='$login'"); $contar = mysql_num_rows($sql); if($contar > 0) { $erro = "2"; } else { $erro = "3";} } else { $erro = "1"; } if ($erro == "1") { $msg="<b><font color='blue'>Informe o login!</form></b>"; } if ($erro == "2") { $msg="<b><font color='red'>Longin indisponível!</form></b>"; } if ($erro == "3") { $msg="<b><font color='green'>Login disponível!</form></b>"; } echo $msg; ?> Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Setembro 29, 2009 Olha, para desabilitar o botão, você vai ter que usar javascript. Faça o seguinte. Inicie com ele desabilitado e, no momento que passar na validação você executa uma função Javascript para habilitar o botão. if ($erro == "3") { echo '<script>aqui vai a função javascript</script>'; $msg="<b><font color='green'>Login disponível!</form></b>"; } Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Setembro 29, 2009 e um arquivo que verifica a disponibilidade do login Como 'muita gente', tava atrás disso, eu montei um exemplo usando AJAX com jQuery.sql.sql -- -- Estrutura da tabela `usuario` -- CREATE TABLE IF NOT EXISTS `usuario` ( `idUsuario` int(10) NOT NULL AUTO_INCREMENT, `nomeUsuario` varchar(200) NOT NULL, PRIMARY KEY (`idUsuario`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; -- -- Extraindo dados da tabela `usuario` -- INSERT INTO `usuario` (`idUsuario`, `nomeUsuario`) VALUES (1, 'William'), (2, 'Bruno'); usuario.php <?php //envio o charset para evitar problemas header("Content-Type: text/html; charset=ISO-8859-1"); $con = mysql_connect('localhost', 'root', '123');//faço a conexão com o banco mysql_select_db('artigos', $con);//seleciono a tabela no banco $sql = " SELECT * FROM `usuario` WHERE `nomeUsuario` = '{$_POST['nomeUsuario']}' ";//monto a query $q = mysql_query( $sql );//executo a query if( mysql_num_rows( $q ) > 0 )//se retornar algum resultado echo 'Já existe!'; else echo 'Não existe ainda!'; ?> index.php <head> <script type="text/javascript" src="jquery-1.3.2.js"></script> <script type="text/javascript"> $(function(){ // declaro o início do jquery $("input[name='verificar']").click( function(){//botão para disparar a ação var nomeUsuario = $("input[name='nomeUsuario']").val(); //alert(nomeUsuario); $.post('usuario.php',{nomeUsuario: nomeUsuario},function(data){ $('#resultado').html(data);//onde vou escrever o resultado }); }); });// fim do jquery </script> </head> <body> <form action="" method=""> <label>Nome Usuário: <input type="text" name="nomeUsuario" /></label> <input type="button" name="verificar" id="verificar" value="verificar" /> </form> <div id="resultado"></div> http://www.wbruno.com.br/blog/?p=3 Compartilhar este post Link para o post Compartilhar em outros sites
allanlb 0 Denunciar post Postado Outubro 3, 2009 Olá, fiz a seguinte alteração: coloquei : if ($erro == "3") { $msg="<b><font color='green'>Login disponível!</form></b>"; ?> <input type='submit' name='botao' value='Cadastrar'/> <?php }?> junto da mensagem, ele mostra o botão apenas se o login não existir no banco, até aí tudo bem. O problema é que ele coloca o botão na mesma div da mensagem(parte de cima da tela), queria que o botão aparecesse separado em uma div(na parte debaixo do form). Se puderem ajudar, agradeço. Javascript não é minha praia. Flw. Compartilhar este post Link para o post Compartilhar em outros sites