samueldev 0 Denunciar post Postado Setembro 24, 2013 Fiz o seguinte código para cadastro function valida_envia(){ //valido o nome if (document.cadastro.nome.value.length==0){ // alert("Tem que escrever seu Nome Completo.") document.cadastro.nome.focus() return 0; } var Option=false; Option=validaOption(document.cadastro.sexo_professor); if (Option==false) return false; //se for falso, sai da validação else { o submit ocorre aqui cadastro.submit();//se não cadastra, } } function validaOption(obj){ totOp=obj.length; var i=0, totsel=0; for (i=0;i<totOp;i++) { if (obj.checked==false) totsel+=1; } if (totsel==totOp) { alert("Selecione seu sexo"); return false; } } //FORMULARIO <form method="POST" action="--/arquivo.php" name="cadastro"> NOME<br> <input type="text" name="nome"> </select><font color="red">*</font></label><br/><br /> <label for="sexo_professor" >Sexo: <input type="radio" name="sexo_professor" value="M" id="masc" />Masculino <input type="radio" name="sexo_professor" value="F" id="femi" />Feminino <input type="radio" name="sexo_professor" value="O" id="outros" /> Outros<font color="red">*</font></br> <div id="teste" style="display:none;"> <br/> <input stype="button" value="Enviar" onClick="valida_envia();" name="enviar" /> </form> MINHA DUVIDA Gostaria de fazer uma verificação no banco de dados, e se tiver um nome igual a esse n permitir cadastro, e aparecer uma mensagem na tela do formulario que ñão é possivel cadastrar pois o nome ja existe.. ajudinha galera Compartilhar este post Link para o post Compartilhar em outros sites
BrendonPawn 2 Denunciar post Postado Setembro 24, 2013 Eu uso esse método:$query = mysql_query("SELECT * FROM tabela WHERE usuario='$nome'");if(mysql_num_rows(query) > 0):return false;else:return true;endif; Compartilhar este post Link para o post Compartilhar em outros sites
samueldev 0 Denunciar post Postado Setembro 24, 2013 Eu uso esse método: $query = mysql_query("SELECT * FROM tabela WHERE usuario='$nome'"); if(mysql_num_rows(query) > 0):return false; else:return true; endif; Gostaria que aparecesse na pagina do usuario uma mensagem de erro, como poderia fazer isto ? Compartilhar este post Link para o post Compartilhar em outros sites
GCAS 11 Denunciar post Postado Setembro 25, 2013 Ola caro behind, td bem?! seguinte cara, ja ouviu em um mecanismo chamado AJAX?! então é algo muito útil.mas a query é a seguinte: Select nome from tabela where nome = '$var_nome' Compartilhar este post Link para o post Compartilhar em outros sites
GCAS 11 Denunciar post Postado Setembro 25, 2013 Ok amigo, agora vamos a solução: Vai ser dividida em duas partes: um arquivo em JS e um em PHP. O primeiro, vai enviar os dados via ajax e prcessar a resposta; o segundo, vai ser o intermediário, que irá processar a query desejada. Primeiro passo javascript: - primeira parte, verificar se o browser tem suporte a ajax: function v_ajax(){ /*parte que vai ver se roda ajax*/ try { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { try { ajax = new ActiveXObject("Msxml2.XMLHTTP"); } catch(ex) { try { ajax = new XMLHttpRequest(); } catch(exc) { alert("Esse browser não tem recursos para uso do Ajax"); ajax = null; } } } // parte que vai "processar" a requisição ajax return ajax; } Sim, coloquei uma função. Pode ser solto, mas não ficaria legal. Feito isso, agora é invocar uma função rdyState(), segue código function rdy_state(met, pag, msg_loading, par, id){ //com base na operação, resolver o melhor metodo var rtext = v_ajax(); rtext.open(met, pag, true); rtext.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); rtext.onreadystatechange = function(){ if (rtext.readyState == 1){ box.innerHTML = msg_loading; } if (rtext.readyState == 4){ //função que vc irá usar para retorno de dados } } //var txt = rtext.onreadystatechange(); rtext.send(par); } Função postada, agora explicar os parâmetros met = metodo(get ou post) pag = página que terá o script em php que irá processar a query msg_loading = enquanto carrega, aparecerá uma mensagem (que vc escolher) par = parâmetro que será informado na função que for invocar a "rdy_state()" id = id da div que irá "recepcionar" a mensagem Ok, temos as funções principais. Já "implantadas" no arquivo, vamos ao passo a passo: primeiro, temos que usar uma função para chamar a "rdy_state()", então vamos: function valida(){ //usarei dados ficticios, apenas para ilustrar. var nome = document.forms[0].nome.value; //agora preencherei os parâmetros met = "POST"; pag = "script.php"; msg_loading = "carregando"; par = "nome="+nome; id = "div_resposta"; //parâmetros devidamente preenchidos, vamos invocar a função rdy_state(met, pag, msg_loading, par, id); } Feita a invocação iremos partir para o script em php. Pelo que li, vc quer apenas o nome, então vamos lá: //pressuponho que a conexão com o banco está feita, logo vamos para o script. $sel = "select distinct nome from tabela where nome = ' ".$nome." ' "; $execucao = mysql_query($sel); $total = mysql_num_rows($execucao); if($total > 0){ echo "já tem"; }else{ echo "pode usar"; } //fim do script Existe também a resposta em XML, porém esta é um pouco trabalhosa, porém é mais flexível com os dados. Para o retorno, imaginaremos o nome "retorno_dado(ajax)". no lugar daquele comentário da rdy_state(). retorno_dado(ajax){ var bacia = document.getElementById("div_do_form"); var res = ""; if(ajax == "já tem"){ res = "não pode efetuar o cadastro, favor escolha outro nome"; }else{ res = "<input type='button' value='cadastrar' onClick='cadastrar()'>"; } bacia.InnerHTML = res; } Eh meu caro a princípio eh isso. Escolhi ajax, por ser mais "bonitinho" e mais prático, porém, poderia usar o método de apertar o submit e após o processo validar de forma "síncrona", porém ficaria meio trabalhoo para o usuário. Outra coisa, existem maneiras mais simples de implementar via ajax, caso opte por trabalhar mais esse script, fiz esse apenas como um exemplo de como proceder, veja no site W3schools.com - lá encontrará muito material de qualdade sobre o assunto. Espero ter ajudado, qualquer coisa grite :D Compartilhar este post Link para o post Compartilhar em outros sites
BrendonPawn 2 Denunciar post Postado Setembro 25, 2013 Gostaria que aparecesse na pagina do usuario uma mensagem de erro, como poderia fazer isto ? $query = mysql_query("SELECT * FROM tabela WHERE usuario='$nome'"); if(mysql_num_rows(query) > 0){ echo "Desculpe, já existe um usuário com este login!"; return false; } else{ echo "Nome de usuário disponível!"; //seu codigo que salva os dados do cadastrado } Compartilhar este post Link para o post Compartilhar em outros sites
samueldev 0 Denunciar post Postado Setembro 25, 2013 Ok amigo, agora vamos a solução: Vai ser dividida em duas partes: um arquivo em JS e um em PHP. O primeiro, vai enviar os dados via ajax e prcessar a resposta; o segundo, vai ser o intermediário, que irá processar a query desejada. Primeiro passo javascript: - primeira parte, verificar se o browser tem suporte a ajax: function v_ajax(){ /*parte que vai ver se roda ajax*/ try { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { try { ajax = new ActiveXObject("Msxml2.XMLHTTP"); } catch(ex) { try { ajax = new XMLHttpRequest(); } catch(exc) { alert("Esse browser não tem recursos para uso do Ajax"); ajax = null; } } } // parte que vai "processar" a requisição ajax return ajax; } Sim, coloquei uma função. Pode ser solto, mas não ficaria legal. Feito isso, agora é invocar uma função rdyState(), segue código function rdy_state(met, pag, msg_loading, par, id){ //com base na operação, resolver o melhor metodo var rtext = v_ajax(); rtext.open(met, pag, true); rtext.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); rtext.onreadystatechange = function(){ if (rtext.readyState == 1){ box.innerHTML = msg_loading; } if (rtext.readyState == 4){ //função que vc irá usar para retorno de dados } } //var txt = rtext.onreadystatechange(); rtext.send(par); } Função postada, agora explicar os parâmetros met = metodo(get ou post) pag = página que terá o script em php que irá processar a query msg_loading = enquanto carrega, aparecerá uma mensagem (que vc escolher) par = parâmetro que será informado na função que for invocar a "rdy_state()" id = id da div que irá "recepcionar" a mensagem Ok, temos as funções principais. Já "implantadas" no arquivo, vamos ao passo a passo: primeiro, temos que usar uma função para chamar a "rdy_state()", então vamos: function valida(){ //usarei dados ficticios, apenas para ilustrar. var nome = document.forms[0].nome.value; //agora preencherei os parâmetros met = "POST"; pag = "script.php"; msg_loading = "carregando"; par = "nome="+nome; id = "div_resposta"; //parâmetros devidamente preenchidos, vamos invocar a função rdy_state(met, pag, msg_loading, par, id); } Feita a invocação iremos partir para o script em php. Pelo que li, vc quer apenas o nome, então vamos lá: //pressuponho que a conexão com o banco está feita, logo vamos para o script. $sel = "select distinct nome from tabela where nome = ' ".$nome." ' "; $execucao = mysql_query($sel); $total = mysql_num_rows($execucao); if($total > 0){ echo "já tem"; }else{ echo "pode usar"; } //fim do script Existe também a resposta em XML, porém esta é um pouco trabalhosa, porém é mais flexível com os dados. Para o retorno, imaginaremos o nome "retorno_dado(ajax)". no lugar daquele comentário da rdy_state(). retorno_dado(ajax){ var bacia = document.getElementById("div_do_form"); var res = ""; if(ajax == "já tem"){ res = "não pode efetuar o cadastro, favor escolha outro nome"; }else{ res = "<input type='button' value='cadastrar' onClick='cadastrar()'>"; } bacia.InnerHTML = res; } Eh meu caro a princípio eh isso. Escolhi ajax, por ser mais "bonitinho" e mais prático, porém, poderia usar o método de apertar o submit e após o processo validar de forma "síncrona", porém ficaria meio trabalhoo para o usuário. Outra coisa, existem maneiras mais simples de implementar via ajax, caso opte por trabalhar mais esse script, fiz esse apenas como um exemplo de como proceder, veja no site W3schools.com - lá encontrará muito material de qualdade sobre o assunto. Espero ter ajudado, qualquer coisa grite :D Boim, dia, Gostei muito deste post, mas tentei fazer uma aplicação no meu exemplo e não consegui, não tenho muito contato com ajax, , será que poderia me enviar um exemplo com esta aplicação ? email: samuelsilvawb@gmail.com Desde já agradeço $query = mysql_query("SELECT * FROM tabela WHERE usuario='$nome'"); if(mysql_num_rows(query) > 0){ echo "Desculpe, já existe um usuário com este login!"; return false; } else{ echo "Nome de usuário disponível!"; //seu codigo que salva os dados do cadastrado } Olá bom dia, POr esse código consigo realizar a verificacão, porém, queria uma maneira que fosse executado na hora que o usuario estivesse cadastrando o email .. Compartilhar este post Link para o post Compartilhar em outros sites
BrendonPawn 2 Denunciar post Postado Setembro 25, 2013 use funções classes/consultar.class.php class Conexao { public $host = 'hostsql'; public $usuario = 'usuariosql'; public $senha = 'senhasql'; public $db = 'bancodedados'; function conectar() { $conexao = mysql_connect($this->host,$this->usuario,$this->senha); mysql_select_db($this->db,$conexao); } } class Verificar { public $usuario; public $email; function verificarUsuario($usuario) { $conectar = new Conexao(); $conectar->conectar(); $query = mysql_query("SELECT * FROM tabela WHERE usuario='".$usuario."'"); //editar tabela $contar = mysql_num_rows($query); if($contar>0) { return false; } else { return true; } } function verificarEmail($email) { $conectar = new Conexao(); $conectar->conectar(); $query = mysql_query("SELECT * FROM tabela WHERE email='".$email."'"); //editar tabela $contar = mysql_num_rows($query); if($contar>0) { return false; } else { return true; } }} Usando na página require("classes/consultar.class.php");$info = new Verificar();if($info->verificarUsuario("Brendon")==true) echo "usuario disponivel";else echo "ja existe";if($info->verificarEmail("brendon.samp@hotmail.com")==true) echo "email disponivel";else echo "ja existe"; Compartilhar este post Link para o post Compartilhar em outros sites
GCAS 11 Denunciar post Postado Setembro 26, 2013 Amanhã mandarei um exemplo :D Compartilhar este post Link para o post Compartilhar em outros sites
samueldev 0 Denunciar post Postado Setembro 26, 2013 use funções classes/consultar.class.php Usando na página Bom dia, fazendo a aplicação deste exemplo, percebi que ia gerar alguns erros no meu arquivo por conta das instâncias aqui feita , vou tentar modificar e postarei se conseguir Compartilhar este post Link para o post Compartilhar em outros sites
GCAS 11 Denunciar post Postado Setembro 26, 2013 Olá behind já enviei os arquivos.para a galerinha iniciante, vou postar os exemplos (em ajax puro), há formas mais "elegantes" de se implementar, porém por ser ago simples, usarei algo inspirado na metodologia POP (Programação Orientada a Preguiça). arquivo scpt.js (javascript que contém o ajax) /*parte que vai ver se roda ajax*/ function v_ajax(){ /*parte que vai ver se roda ajax*/ try { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { try { ajax = new ActiveXObject("Msxml2.XMLHTTP"); } catch(ex) { try { ajax = new XMLHttpRequest(); } catch(exc) { alert("Esse browser não tem recursos para uso do Ajax"); ajax = null; } } } // parte que vai "processar" a requisição ajax return ajax; } /*lance do ready state*/ function rdy_state(met, pag, msg_loading, par, id, tpo){ var rtext = v_ajax(); var box = document.getElementById(id); rtext.open(met, pag, true); rtext.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); rtext.onreadystatechange = function(){ if (rtext.readyState == 1){ box.innerHTML = msg_loading; } if (rtext.readyState == 4){ resposta(rtext.responseText); } } rtext.send(par); } //terminada a parte de processamento de ajax, agora as funções normais function ver_disp(){ var nome = document.form_nome.nome.value; //agora enviar para a função processar (ajax) var pag = "query.php"; var met = "POST"; var msg_loading = "loading"; var par = "nome="+nome; var id = "res_div"; rdy_state(met, pag, msg_loading, par, id); } function resposta(resp){ var cont = document.getElementById("res_div"); cont.innerHTML = resp; } index.php (formulário) <html> <head> <title> form com ajax </title> </head> <script language="javascript" src="scpt.js"></script> <body> <table> <tr> <td> form em ajax para mostrar restrição à nomes repetidos.<br> É apenas um exemplo bem simplório, não usarei classe(OO) no que for usar php - apenas código "estrutural".<br> Em javascript, usarei apenas o javascript puro não usarei jQuery.<br> Caso queram ver mais exemplos, acessem:<a href="http://gcasweb.orgfree.com" target= "_blank">gcasweb.orgfree.com</a> </td> </tr> <form action="#" method = "post" name="form_nome"> <tr> <td> nome: <input type="text" name="nome"><br> <a href="javascript:ver_disp();">ver disponibilidade</a> <div id="res_div"></div> </td> </tr> </form> </table> </body> </html> query.php (já contém a conexão com o banco e a query de seleção), mudar as credencias do banco de dados ;) <?php //conectar ao banco $con = mysql_connect("localhost", "root", ""); $dbind = mysql_select_db("test", $con) or die ('merda no banco'); $nome = $_REQUEST['nome']; //agora a query para coletar dados $sel = "select nome_pess from pessoa where nome_pess='".$nome."'"; $exec = mysql_query($sel); if(mysql_num_rows($exec) > 0){ echo "escolha outro nome esse ".$nome." se encontra em uso"; }else{ echo "<input type='button' name='coloca' value='cadastra' onclick = \"alert('a inserção fica por sua conta :D')\">"; } ?> banco de dados (rode essa query no banco) --criar a tabela pessoa create table pessoa( cod_pess_pk int not null auto_increment, nome_pess varchar(15) not null unique, primary key(cod_pess_pk); ); Espero ter ajudado :) Compartilhar este post Link para o post Compartilhar em outros sites