Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
netocazuza

fazer dois testes antes de gravar na tabela

Question

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 estou 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());

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Tenta assim:

<?php
//...

$PDO = db_connect();


$stmt = $PDO->prepare('SELECT * FROM palpites WHERE apostador = :apostador');
$stmt->execute([':apostador' => $apostador]);
if (!empty($stmt->fetchAll())) {
	echo "Esse apostador já apostou";
	exit;
}

$stmt = $PDO->prepare('SELECT * FROM palpites WHERE numero = :numero');
$stmt->execute([':numero' => $numero]);
if (!empty($stmt->fetchAll())) {
	echo "Esse numero já foi apostado por alguém";
	exit;
}



$sql = "INSERT INTO palpites(data_hora, apostador, telefone, numero) VALUES(:data_hora, :apostador, :telefone, :numero)";
$stmt = $PDO->prepare($sql);

//...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148417
    • Total Posts
      643832
×
×
  • Create New...