Ir para conteúdo

POWERED BY:

Arquivado

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

Marcones Borges

Verificar se usuário já existe antes de cadastrar

Recommended Posts

Boa noite, tenho um formulário de cadastro.

 

Gostaria de verificar se o numero de registro já existe antes de cadastrar...

 

como eu poderia fazer?


$sql = 'INSERT INTO inscricao (nome, status, registro, funcao, valor )
                               VALUES(:nome, :status, :registro,  :funcao, :valor)';

            $stm = $conexao->prepare($sql);
            $stm->bindValue(':nome', $nome);
            $stm->bindValue(':status', $status);
            $stm->bindValue(':registro', $registro);
            $stm->bindValue(':funcao', $funcao);
            $stm->bindValue(':valor', $valor);                             
            $retorno = $stm->execute();

            if ($retorno):
                echo "<div class='alert alert-success' role='alert'>Registro inserido com sucesso, aguarde você está sendo redirecionado ...</div> ";
            else:
                echo "<div class='alert alert-danger' role='alert'>Erro ao inserir registro!</div> ";
            endif;

            echo "<meta http-equiv=refresh content='0;URL=index.php'>";
        endif;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de inserir, você precisa executar um consulta no banco, se já existir aquele registro você retorna um erro, caso contrário, você faz a inserção. Ex:

$registro = $_POST['registro']; // recebe do formulário
$sql = "SELECT * FROM Tabela WHERE registro = '$registro'";
// executa sua query aqui
// Depois valide, se a consulta retornar algum resultado, é porque já existe, então não poderá cadastrar, Ok? 
// o resto é contigo

Testa aí.

Compartilhar este post


Link para o post
Compartilhar em outros sites
10 horas atrás, marcosmarcolin disse:

Antes de inserir, você precisa executar um consulta no banco, se já existir aquele registro você retorna um erro, caso contrário, você faz a inserção. Ex:


$registro = $_POST['registro']; // recebe do formulário
$sql = "SELECT * FROM Tabela WHERE registro = '$registro'";
// executa sua query aqui
// Depois valide, se a consulta retornar algum resultado, é porque já existe, então não poderá cadastrar, Ok? 
// o resto é contigo

Testa aí.

Entendi + ou menos mais não funcionou da forma que adaptei em meu código. 

 

$search = "SELECT * FROM Tabela WHERE registro = '$registro'";    
            if(@mysql_num_rows($search) > 0){
            
            }else{            

            

$sql = 'INSERT INTO inscricao (nome, status, registro, funcao, valor )                               

VALUES(:nome, :status, :registro,  :funcao, :valor)';            $stm = $conexao->prepare($sql);            

$stm->bindValue(':nome', $nome);            
$stm->bindValue(':status', $status);            
$stm->bindValue(':registro', $registro);            
$stm->bindValue(':funcao', $funcao);            
$stm->bindValue(':valor', $valor);                                         
$retorno = $stm->execute();            

if ($retorno):                
echo "<div class='alert alert-success' role='alert'>Registro inserido com sucesso, aguarde você está sendo redirecionado ...</div> ";            
else:                
echo "<div class='alert alert-danger' role='alert'>Erro ao inserir registro!</div> ";            

endif;            
echo "<meta http-equiv=refresh content='0;URL=index.php'>";        
endif;

};
	

 

veja como ficou, e eu não fechei o if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não executou seu SELECT, apenas montou ele na variável $search.

Para você verificar o retorno mysqli_num_rows($search), precisa executar a query -> mysqli_query($con, $search).

 

Eu não utilizo PDO, vou dar o exemplo estruturado mesmo.

$registro = $_POST['registro']; // recebe do formulário
$searcha = mysqli_query($con, "SELECT * FROM minha_tabela WHERE registro = '$registro'");
$num_rows = mysqli_num_rows($search);

if(!$num_rows > 0){ // não for maior que zero
	// executa o INSERT 
}else{
	// informe que tal registro já existe
}

É isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, marcosmarcolin disse:

Você não executou seu SELECT, apenas montou ele na variável $search.

Para você verificar o retorno mysqli_num_rows($search), precisa executar a query -> mysqli_query($con, $search).

 

Eu não utilizo PDO, vou dar o exemplo estruturado mesmo.


$registro = $_POST['registro']; // recebe do formulário
$searcha = mysqli_query($con, "SELECT * FROM minha_tabela WHERE registro = '$registro'");
$num_rows = mysqli_num_rows($search);

if(!$num_rows > 0){ // não for maior que zero
	// executa o INSERT 
}else{
	// informe que tal registro já existe
}

É isso.

Fiz direto no mysql UNIQ no registro, agora preciso que ele em vez de mostrar erro dê um echo noticia como faço?

 

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'registro'' in 
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra ser UNIQ, precisar ser auto incremento ou então md5, hash, etc... Caso não, algum momento poderá repetir, aí irá estourar o erro.

 

Interprete o erro: Duplicate entry '' for key 'registro''

Após tornar o campo UNIQ, não poderá inserir mais valor duplicado nesta coluna, que é o que está acontecendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, tentando via código, mais ainda esta dando erro....


// Verifica se foi solicitada a inclusão de dados
        if ($acao == 'incluir'):

        $cpf = $_POST['cpf'];
        
        $sql = "SELECT cpf FROM inscricao WHERE cpf = '$cpf' ";
        $result = $conexao->prepare($sql);
        if ($result->num_rows) {
            echo ("Não pode cadastrar porque existe cadastrado");
            
        } else {
        
            $sql = 'INSERT INTO inscricao (nome, status, registro, tipo, area, campo, funcao, valor, ago, usuario, recibo, foto, cpf)
                               VALUES(:nome, :status, :registro, :tipo, :area, :campo, :funcao, :valor, :ago, :usuario, :recibo, :foto, :cpf)';

            $stm = $conexao->prepare($sql);
            $stm->bindValue(':nome', $nome);
            $stm->bindValue(':status', $status);
            $stm->bindValue(':registro', $registro);
            $stm->bindValue(':tipo', $tipo);
            $stm->bindValue(':area', $area);
            $stm->bindValue(':campo', $campo);
            $stm->bindValue(':funcao', $funcao);
            $stm->bindValue(':valor', $valor);
            $stm->bindValue(':ago', $ago);
            $stm->bindValue(':usuario', $usuario);        
            $stm->bindValue(':recibo', $recibo);
            $stm->bindValue(':foto', $foto);
            $stm->bindValue('cpf', $cpf);
            $retorno = $stm->execute();                
            if ($retorno):
                echo "<div class='alert alert-success' role='alert'>Inscrição realizada com sucesso, aguarde você está sendo redirecionado ...</div> ";
            else:
                echo "<div class='alert alert-danger' role='alert'>Erro ao inserir registro!</div> ";
            endif;
            echo "<meta http-equiv=refresh content='5;URL=buscar_ministro.php'>";
        }            
        endif;

Quem poder me ajude...

Erro: property: PDOStatement::$num_rows in C:\xampp\htdocs\inscricao\Areas\action_cliente.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque vais inventar a roda se ela já existe? Simples faz isso do banco, coluna chamada id e marca com chave primaria e

AUTO_INCREMENT

Material de estudo

E quando vais inserir algum dado o banco vai criar um id automaticamente e vai ser único

Compartilhar este post


Link para o post
Compartilhar em outros sites
// Verifica se foi solicitada a inclusão de dados
        if ($acao == 'incluir'):

        $cpf = $_POST['cpf'];
        
        $sql = "SELECT cpf FROM inscricao WHERE cpf = '$cpf' ";
        $result = $conexao->prepare($sql);
		$row = $result->num_rows;

        if ($row > 0) {
            echo "Não pode cadastrar porque existe cadastrado";
        } else {
        
            $sql = 'INSERT INTO inscricao (nome, status, registro, tipo, area, campo, funcao, valor, ago, usuario, recibo, foto, cpf)
                               VALUES(:nome, :status, :registro, :tipo, :area, :campo, :funcao, :valor, :ago, :usuario, :recibo, :foto, :cpf)';

            $stm = $conexao->prepare($sql);
            $stm->bindValue(':nome', $nome);
            $stm->bindValue(':status', $status);
            $stm->bindValue(':registro', $registro);
            $stm->bindValue(':tipo', $tipo);
            $stm->bindValue(':area', $area);
            $stm->bindValue(':campo', $campo);
            $stm->bindValue(':funcao', $funcao);
            $stm->bindValue(':valor', $valor);
            $stm->bindValue(':ago', $ago);
            $stm->bindValue(':usuario', $usuario);        
            $stm->bindValue(':recibo', $recibo);
            $stm->bindValue(':foto', $foto);
            $stm->bindValue('cpf', $cpf);
            $retorno = $stm->execute();                
            if ($retorno):
                echo "<div class='alert alert-success' role='alert'>Inscrição realizada com sucesso, aguarde você está sendo redirecionado ...</div> ";
            else:
                echo "<div class='alert alert-danger' role='alert'>Erro ao inserir registro!</div> ";
            endif;
            echo "<meta http-equiv=refresh content='5;URL=buscar_ministro.php'>";
        }            
        endif;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
×

Informação importante

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