Send an ALERT to a UNIQUE field in Mysql

Asked

Viewed 293 times

1

I have a field in the BD set as Unique, to avoid duplicate registration. Works perfectly. I wonder if there is a way to personalize this message, with an Alert, for example.

My code:

<?php

require 'conexao.php';

$nome               =           addslashes ($_POST['nome']);
$foto1              =           addslashes ($_POST['foto1']);
$cpf                =           addslashes ($_POST['cpf']);
$rg                 =           addslashes ($_POST['rg']);
$email              =           addslashes ($_POST['email']);
$telefone           =           addslashes ($_POST['telefone']);
$endereco           =           addslashes ($_POST['endereco']);
$bairro             =           addslashes ($_POST['bairro']);
$cidade             =           addslashes ($_POST['cidade']);
$estado             =           addslashes ($_POST['estado']);
$observacoes        =           addslashes ($_POST['observacoes']);
$curso              =           addslashes ($_POST['curso']);

$sql = "INSERT INTO cursoest set nome = :nome, foto1 = :foto1, cpf = :cpf, rg = :rg, email = :email, telefone = :telefone, endereco = :endereco, bairro = :bairro, cidade = :cidade, estado = :estado, observacoes = :observacoes, curso = :curso";

$stmt = $PDO->prepare( $sql );
$stmt->bindParam( ':nome', $nome );
$stmt->bindParam( ':foto1', $foto1 );
$stmt->bindParam( ':cpf', $cpf );
$stmt->bindParam( ':rg', $rg );
$stmt->bindParam( ':email', $email );
$stmt->bindParam( ':telefone', $telefone );
$stmt->bindParam( ':endereco', $endereco );
$stmt->bindParam( ':bairro', $bairro );
$stmt->bindParam( ':cidade', $cidade );
$stmt->bindParam( ':estado', $estado );
$stmt->bindParam( ':observacoes', $observacoes );
$stmt->bindParam( ':curso', $curso );
$result = $stmt->execute();

if ( ! $result )
    {
var_dump( $stmt->errorInfo() );
exit;
    }
echo '<script type="text/javascript">alert("Matrícula realizada com sucesso!");</script>';
echo "<script>window.location = 'matriculaok.html';</script>";
//echo $stmt->rowCount() . "Matrícula realizada com sucesso!";

?>

From what I’ve researched, I could put a PDO:errorInfo? How to do?

  • 1

    Take that var_dump() check the error code is 1062 and display the message otherwise say you had an error ... something like "contact the administrator" do not forget to log this error.

  • I did something here hasty, ended up having the result I expected... But it should not be in the most correct way. I would like you to explain to me!

1 answer

0


I resolved so:

<?php

require 'conexao.php';

$nome               =           addslashes ($_POST['nome']);
$foto1              =           addslashes ($_POST['foto1']);
$cpf                =           addslashes ($_POST['cpf']);
$rg                 =           addslashes ($_POST['rg']);
$email              =           addslashes ($_POST['email']);
$telefone           =           addslashes ($_POST['telefone']);
$endereco           =           addslashes ($_POST['endereco']);
$bairro             =           addslashes ($_POST['bairro']);
$cidade             =           addslashes ($_POST['cidade']);
$estado             =           addslashes ($_POST['estado']);
$observacoes        =           addslashes ($_POST['observacoes']);
$curso              =           addslashes ($_POST['curso']);

$sql = "INSERT INTO cursoest set nome = :nome, foto1 = :foto1, cpf = :cpf, rg = :rg, email = :email, telefone = :telefone, endereco = :endereco, bairro = :bairro, cidade = :cidade, estado = :estado, observacoes = :observacoes, curso = :curso";

$stmt = $PDO->prepare( $sql );
$stmt->bindParam( ':nome', $nome );
$stmt->bindParam( ':foto1', $foto1 );
$stmt->bindParam( ':cpf', $cpf );
$stmt->bindParam( ':rg', $rg );
$stmt->bindParam( ':email', $email );
$stmt->bindParam( ':telefone', $telefone );
$stmt->bindParam( ':endereco', $endereco );
$stmt->bindParam( ':bairro', $bairro );
$stmt->bindParam( ':cidade', $cidade );
$stmt->bindParam( ':estado', $estado );
$stmt->bindParam( ':observacoes', $observacoes );
$stmt->bindParam( ':curso', $curso );
$result = $stmt->execute();

if ( ! $result )
    {
echo '<script type="text/javascript">alert("CPF já cadastrado em nosso Banco de Dados!");</script>';
echo '<script type="text/javascript">window.history.back(-1);</script>';
exit;
    }

echo '<script type="text/javascript">alert("Matrícula realizada com sucesso!");</script>';
echo "<script>window.location = 'matriculaok.html';</script>";
//echo $stmt->rowCount() . "Matrícula realizada com sucesso!";

?>
  • 1

    The intention is good, but how do you ensure that the value of $result actually got false because of a repeated value and not because of any other problem? i.e.: reference failure, connection problem etc.

  • You’re right, my friend. As I explained above, I made for "Greek" see, not to lose the contract... rs... if you have a suggestion for research, I will be eternally grateful.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.