Dúvida do PHP com mysql:
Tenho uma rotina em php que está funcionando, gravando os dados numa tabela. Agora surgiu a necessidade de fazer dois testes antes da gravação, e eu não estou conseguindo ter idéia de como fazer, por isso vou postar no próprio código pra ver se entendem. O primeiro teste, é ver se o número escolhido, já foi selecionado (variável numero), e caso isso ocorra, não gravar. O outro teste é impedir que o mesmo usuário (usuário apostador)faça mais de uma aposta. Segue código:
<?php
require_once 'init.php';
// pega os dados do formuário
$data_hora = isset($_POST['data_hora']) ? $_POST['data_hora'] : null;
$apostador = isset($_POST['apostador']) ? $_POST['apostador'] : null; // quero que esse apostador não se repita. Se já estiver na tabela, avisar e sair.
$telefone = isset($_POST['telefone']) ? $_POST['telefone'] : null;
$numero = isset($_POST['numero']) ? $_POST['numero'] : null; // quero que cheque esse número na tabela existente, e caso exista, retornar para inserir outro.
// validação (bem simples, só pra evitar dados vazios)
if (empty($data_hora) || empty($apostador) || empty($telefone) || empty($numero))
{
echo "Volte e preencha todos os campos";
exit;
}
$hoje = date("d-m-Y H:i");
$limite = ('08-03-2019 16:35');
if (strtotime($hoje) >= strtotime($limite)){
echo "Esgotado o horario limite. Aguarde para o próximo sorteio!";
exit;
}
// a data vem no formato dd/mm/YYYY
// então precisamos converter para YYYY-mm-dd
// insere no banco
$PDO = db_connect();
// Acredito que esse teste deva ser feito aqui, antes de gravar, mas é só um palpite, pois tô mais perdido do que padre (alguns) em boate
//verificar se apostador e numero já existem na tabela, e caso exista, retornar o fluxo
$sql = "INSERT INTO palpites(data_hora, apostador, telefone, numero) VALUES(:data_hora, :apostador, :telefone, :numero)";
$stmt = $PDO->prepare($sql);
$stmt->bindParam(':data_hora', $data_hora);
$stmt->bindParam(':apostador', $apostador);
$stmt->bindParam(':telefone', $telefone);
$stmt->bindParam(':numero', $numero);
if ($stmt->execute())
{
header('Location: index.php');
}
else
{
echo "Erro ao cadastrar";
print_r($stmt->errorInfo());