Ir para conteúdo

POWERED BY:

Arquivado

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

samueldev

Evitar registro duplicado

Recommended Posts

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.