ViniciusJau Postado Junho 20, 2007 Denunciar Share Postado Junho 20, 2007 Moçada, estou quebrando a cabeça aqui com um formulário... Quando usuario tenta cadastrar no banco um nome que já existe, eu verifico através de php e quando ele clica no botão voltar o formulário perde todo o restante do conteudo que ele havia preenchido..Pensei em usar ajax para fazer isso porém não sei se é possivel...será que você podem me dar um help aí... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 CSML sistemas Postado Junho 20, 2007 Denunciar Share Postado Junho 20, 2007 Dá pra fazer com AJAX ou consultando em background via IFRAME, evitando atualizar a página sem antes concluir a validação dos dados. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ViniciusJau Postado Junho 20, 2007 Autor Denunciar Share Postado Junho 20, 2007 certo.. eu fiz isso aqui:<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", "teste2.php", true);xmlHttp.open("get", "teste2.php?login=" + document.getElementById('login').value, true);// xmlHttp.send("login=" + document.getElementById("login") + "&endereco=" + document.getElementById("endereco"));xmlHttp.send(null);}function handleStateChange() {if(xmlHttp.readyState == 4) {if(xmlHttp.status == 200) {document.getElementById("resultado").innerHTML = xmlHttp.responseText;}}}</script><form action="#" name="formulario"><input type="text" name="login" id="login" class="form"><a href="#" onclick="startRequest();">Verificar disponibilidade</a></form><div id="resultado"></div>e na pagina teste2.php<?phpinclude "conexao.php";$login = $_REQUEST['login'];if ( $login <> ""){//Codigo para verificar se existe o login cadastrado$sql = mysql_query("SELECT id FROM tabela WHERE nome='$login'");$contar = mysql_num_rows($sql);if($contar > 0) { $erro = "2"; } else { $erro = "3";}} else {$erro = "1";}if ($erro == "1") { $msg="Login não informado"; }if ($erro == "2") { $msg="Login já cadastrado"; }if ($erro == "3") { $msg="Login Disponivel"; }echo $msg;?>tá funcionando legal.. o problema é que necessário o usúario clicar no botão "verificar disponibilidade" queria fazer que conforme ele fosse digitando já aparecece a resposta... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 CSML sistemas Postado Junho 20, 2007 Denunciar Share Postado Junho 20, 2007 Clicar em algo talvez não seja mesmo a melhor alternativa. você pode usar outro evento, como "onblur" do campo "login".Quanto a ir pesquisando enquanto o usuário digita, se está imaginando fazer isto no próprio campo "login", pense no seguinte: 1. quanto tempo leva para a pesquisa ser executada?2. qual o intervalo de tempo entre a digitação de dois caracteres pelo usuário?3. será viável consumir o servidor a cada caractere alterado no campo, ou será melhor ocupar o servidor apenas quando o usuário estiver certo do que quer? ;) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Zero Cool Postado Junho 28, 2007 Denunciar Share Postado Junho 28, 2007 Como posso bloquear o envio do formulario ate que os campos sejam validados ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 CSML sistemas Postado Junho 28, 2007 Denunciar Share Postado Junho 28, 2007 (editado) Use o evento "onsubmit" pra validar o formulário. Se não for válido, põe um "return false" no "onsubmit". Acho que é só isso... -_- Editado Junho 28, 2007 por CSML sistemas Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Zero Cool Postado Junho 28, 2007 Denunciar Share Postado Junho 28, 2007 (editado) já tentei eu utilizo o ajax+php para verificar c existe já o nome de usuario ou c existe o e-mail e dps utilizo a validação do DreamWeaver CS3 (ajax também --> Spry) para não dexar postar nulo os outros campos e etc.Mais c o nome ou e-mail existem (aparece a msg do exemplo do ViniciusJau) eles são submetdos do mesmo jeito contedo no banco 2 campos = :blink: :blink: :blink: tentei só com o ajax,sem a validação de preenchimento dos outros campos e não deu Editado Junho 28, 2007 por Zero Cool Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 CSML sistemas Postado Junho 28, 2007 Denunciar Share Postado Junho 28, 2007 Desculpa... não tinha percebido que haviam outros posts nesse tópico (meus, inclusive...) :ph34r: Camarada, alguma coisa está errada na lógica de sua função, que não está submetendo o formulário apenas quando todas as condições necessárias forem satisfeitas.Se puder, posta o código javascript aí... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Zero Cool Postado Junho 28, 2007 Denunciar Share Postado Junho 28, 2007 faço a verificaçao com o spry para os campos não ficarem vazios ou com valor invalido e com o ajax anterior faço a verificaçao c já existe ou o mesmo nome ou o mesmo e-mail.Verifica.php<!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>Verifica usuario</title> <script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></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", "teste2.php", true); xmlHttp.open("get", "teste.php?login=" + document.getElementById('login').value, true); //xmlHttp.send("login=" + document.getElementById("login") + "&endereco=" + document.getElementById("endereco")); xmlHttp.send(null); } function handleStateChange() { if(xmlHttp.readyState == 4) { if(xmlHttp.status == 200) { document.getElementById("resultado").innerHTML = xmlHttp.responseText; } } } function startRequest2() { createXMLHttpRequest(); xmlHttp.onreadystatechange = handleStateChange2; //xmlHttp.open("get", "teste.php", true); xmlHttp.open("get", "teste.php?email=" + document.getElementById('email').value, true); //xmlHttp.send("email=" + document.getElementById("email") + "&endereco=" + document.getElementById("endereco")); xmlHttp.send(null); } function handleStateChange2() { if(xmlHttp.readyState == 4) { if(xmlHttp.status == 200) { document.getElementById("resultado2").innerHTML = xmlHttp.responseText; } } } </script> <link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="resultado" style="position:absolute; left: 170px; top: 17px;"></div> <div id="resultado2" style="position:absolute; left: 170px; top: 58px;"></div> <form action="teste3.php" name="formulario" method="post"> <p><span id="sprytextfield1"> <input name="login" type="text" class="form" id="login" onblur="startRequest()" onkeypress="if(this.value.length > 5){startRequest()}" onkeydown="if(this.value.length > 5){startRequest()}" onkeyup="if(this.value.length > 5){startRequest();}" maxlength="15" /> <span class="textfieldRequiredMsg">A value is required.</span><span class="textfieldMinCharsMsg">Minimum number of characters not met.</span><span class="textfieldMaxCharsMsg">Exceeded maximum number of characters.</span></span></p> <p><span id="sprytextfield2"> <input type="text" name="email" id="email" onkeydown="if(this.value.length > 10){startRequest2()}" onkeypress="if(this.value.length > 10){startRequest2();}" onkeyup="if(this.value.length > 10){startRequest2();}" onblur="startRequest2()"/> <span class="textfieldRequiredMsg">A value is required.</span><span class="textfieldInvalidFormatMsg">Invalid format.</span><span class="textfieldMinCharsMsg">Minimum number of characters not met.</span><span class="textfieldMaxCharsMsg">Exceeded maximum number of characters.</span></span></p> <p> <input type="submit" name="btnenvia" id="btnenvia" value="Enviar" /> </p> </form> <script type="text/javascript"> <!-- var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "none", {minChars:5, maxChars:15, hint:"Nome de usuario", validateOn:["blur"]}); var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2", "email", {hint:"E-mail", minChars:5, maxChars:50, validateOn:["blur"]}); //--> </script> </body> </html> e o teste.php responsavel pela verificação c já existe <?php require_once('Connections/conexao.php'); ?> <?php if($_REQUEST['login'] != ''){ $login = $_REQUEST['login']; if($login <> ""){ mysql_select_db($database_conexao, $conexao); $sql = "SELECT Id FROM usuarios WHERE Usuario = '$login'"; $sql_exe = mysql_query($sql, $conexao) or die(mysql_error()); $linha_sql = mysql_fetch_assoc($sql_exe); $contar = mysql_num_rows($sql_exe); //Codigo para verificar se existe o login cadastrado if($contar > 0) { $erro = "2"; } else { $erro = "3"; } } else { $erro = "1"; } if ($erro == "1") { $msg="<font color='#0000FF'>Nome de usuario não informado</font>"; } if($erro == "2") { $msg="<font color='#FF0000'>Nome de usuario já cadastrado<br /> Se voçê já é usuario do site,clique aqui para efetuar <a href='login.php?a=login'>login</a> ou <a href='login.php?a=rs'>recuperar a senha</a></font></font>"; } if($erro == "3") { $msg="<font color='#00FF00'>Nome de usuario disponivel</font>"; } echo $msg; } ?> <?php if($_REQUEST['email'] != ''){ $email = $_REQUEST['email']; if($email <> ""){ mysql_select_db($database_conexao, $conexao); $sql = "SELECT Id FROM usuarios WHERE Email = '$email'"; $sql_exe = mysql_query($sql, $conexao) or die(mysql_error()); $linha_sql = mysql_fetch_assoc($sql_exe); $contar = mysql_num_rows($sql_exe); //Codigo para verificar se existe o login cadastrado if($contar > 0) { $erro = "2"; } else { $erro = "3"; } } else { $erro = "1"; } if ($erro == "1") { $msg="<font color='#0000FF'>E-mail não informado</font>"; } if($erro == "2") { $msg="<font color='#FF0000'>E-mail já cadastrado<br /> Se voçê já é usuario do site,clique aqui para efetuar <a href='login.php?a=login'>login</a> ou <a href='login.php?a=rs'>recuperar a senha</a></font>"; } if($erro == "3") { $msg="<font color='#00FF00'>Email unico</font><br /> <br /> "; } echo $msg; } ?>o formulario da pagina verifica.php não é enviado caso o spry aponte algum campo errado, + caso já exista um nome ou e-mail no banco a mensagem aparece mais ele é submetido Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
ViniciusJau
Moçada, estou quebrando a cabeça aqui com um formulário...
Quando usuario tenta cadastrar no banco um nome que já existe, eu verifico através de php
e quando ele clica no botão voltar o formulário perde todo o restante do conteudo que ele havia preenchido..
Pensei em usar ajax para fazer isso porém não sei se é possivel...
será que você podem me dar um help aí...
Link para o comentário
Compartilhar em outros sites
8 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.