Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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;>
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> "; 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**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.
>
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
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.
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.phpPorque vais inventar a roda se ela já existe? Simples faz isso do banco, coluna chamada id e marca com chave primaria e
AUTO_INCREMENT
E quando vais inserir algum dado o banco vai criar um id automaticamente e vai ser único
// 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;
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:
// executa sua query aqui // Depois valide, se a consulta retornar algum resultado, é porque já existe, então não poderá cadastrar, Ok? // o resto é contigoTesta aí.