Ir para conteúdo

Arquivado

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

henriquems1988

inserir unico registro sem duplicidade no bd

Recommended Posts

sistema de agendamento de consultas:

quero inserir um único registro de horário para cada data da agenda tipo não poderá a ver dois horário iguais na mesma data

<?php
//criar a conexão com o banco
include "sql.php";

if(isset($_POST['done'])){
    
    $evento = $_POST['consulta'];
    $dconsulta = $_POST['dia']."-".$_POST['mes']."-".$_POST['ano'];
    $paciente = $_POST['paciente'];
	$hora = $_POST['hora'];
	$local = $_POST['local'];
    $conteudo = $_POST['conteudo'];

    
    if(empty($consulta) || empty($dconsulta) || empty($conteudo) || empty($local)){
        $erro = "Opa, você deve preencher todos os campos";
    }else{        
       $sql = mysql_query("INSERT INTO `agenda`(`consulta`, `dconsulta`, `paciente`, `hora`, `local`, `conteudo`) VALUES ('$evento', '$dtevento', '$autor', '$hora', '$local', '$conteudo')") or die(mysql_error());
            if($sql){
                $erro = "Dados cadastrados com sucesso!";
              } else{
                  $erro = "Não foi possivel cadastrar os dados";
              }
    }
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta fazer uma consulta onde os campos que são "chave" sejam validados, se retornar alguma coisa já existe registro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso eu sei mas eu falo se for inserido registro de agendamento de horário em datas diferentes banco me retorna que já existe horario como vou fazer para que possa verificar para datas diferentes?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta ler com atenção o que eu disse: Basta fazer uma consulta onde os campos que são "chave" sejam validados

 

Você tem que validar todos os campos relacionados, se a hora e a data são chave:

SELECT... FROM tabela WHERE hora = 'xxx' AND data = 'yyy'

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
//criar a conexão com o banco
include "sql.php";

if(isset($_POST['done'])){
    
    $evento = $_POST['evento'];
    $dtevento = $_POST['dia']."-".$_POST['mes']."-".$_POST['ano'];
    $autor = $_POST['autor'];
	$hora = $_POST['hora'];
	$local = $_POST['local'];
    $conteudo = $_POST['conteudo'];

    
    mysql_select_db('agenda', $con);//seleciono a tabela no banco
        $sql = "SELECT * FROM `agenda` WHERE `hora` = '{$_POST['done']}' ";//monto a query
        $q = mysql_query( $sql );//executo a query
        if( mysql_num_rows( $q ) > 0 ){//se retornar algum resultado
                echo 'Horário indisponível!'; // não retorna quando existe valor no banco 
    }else{        
       $sql = mysql_query("INSERT INTO `agenda`(`evento`, `dtevento`, `autor`, `hora`, `local`, `conteudo`) VALUES ('$evento', '$dtevento', '$autor', '$hora', '$local', '$conteudo')") or die(mysql_error());
            if($sql){
                $erro = "Dados cadastrados com sucesso!";
              } else{
                  $erro = "Não foi possivel cadastrar os dados";
              }
    }
}
?>

fiz alteração mas agora ele não me retorna se existe horário no banco e efetua registro duplicado

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta utilizar switch para validar várias informações de uma vez, ele só passa se tudo for true:

Esse é um trecho de um código meu para validar se um adm tentar criar um novo usuário com um login repetido.

<?php

//consulta no bd o registro a ser comparado
$userqr = mysql_query("SELECT * FROM usuarios WHERE login ='$login_2'") or die(mysql_error());

//entra no switch							
switch(true) {

//exemplos de validação
case (empty($name_2)):
echo "<script>alert('O usuário deve conter uma nome');</script>";
echo "<script>history.go(-1);</script>";
break;
case (empty($login_2)):
echo "<script>alert('O usuário deve ter um login');</script>";
echo "<script>history.go(-1);</script>";
break;
case (empty($senha_2)):
echo "<script>alert('O usuário deve conter uma senha');</script>";
echo "<script>history.go(-1);</script>";
break;
case (mysql_num_rows($userqr) == 1):
echo "<script>alert('Já existe um usuário usando esse login');</script>";
echo "<script>history.go(-1);</script>";
break;
//nesse caso ele só passa se obedecer todos esses critérios
case (!empty($name_2)):
case (!empty($login_2)):
case (!empty($senha_2)):
case (!empty($email_2)):
case (!empty($tel)):
//esse é um critério que foi buscado no banco
case (mysql_num_rows($userqr) == ""):
//finalmente ele entra no sql
if (!mysql_query("INSERT INTO usuarios (`login`, `senha`, `adm`, `nome`) 
VALUES ('$login_2','$senha_2','$adm_2','$name_2')")) {
echo 'Não foi possível inserir no banco de dados'."<br>";
}	else {
echo "<br><br>";
echo "<script>alert('Usuário inserido com sucesso!');</script>";
echo "<meta http-equiv='refresh' content='0;URL=?action=4'>";
}  
break;
default:
break;
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

tenta utilizar switch para validar várias informações de uma vez, ele só passa se tudo for true:

Esse é um trecho de um código meu para validar se um adm tentar criar um novo usuário com um login repetido.

<?php

//consulta no bd o registro a ser comparado
$userqr = mysql_query("SELECT * FROM usuarios WHERE login ='$login_2'") or die(mysql_error());

//entra no switch							
switch(true) {

//exemplos de validação
case (empty($name_2)):
echo "<script>alert('O usuário deve conter uma nome');</script>";
echo "<script>history.go(-1);</script>";
break;
case (empty($login_2)):
echo "<script>alert('O usuário deve ter um login');</script>";
echo "<script>history.go(-1);</script>";
break;
case (empty($senha_2)):
echo "<script>alert('O usuário deve conter uma senha');</script>";
echo "<script>history.go(-1);</script>";
break;
case (mysql_num_rows($userqr) == 1):
echo "<script>alert('Já existe um usuário usando esse login');</script>";
echo "<script>history.go(-1);</script>";
break;
//nesse caso ele só passa se obedecer todos esses critérios
case (!empty($name_2)):
case (!empty($login_2)):
case (!empty($senha_2)):
case (!empty($email_2)):
case (!empty($tel)):
//esse é um critério que foi buscado no banco
case (mysql_num_rows($userqr) == ""):
//finalmente ele entra no sql
if (!mysql_query("INSERT INTO usuarios (`login`, `senha`, `adm`, `nome`) 
VALUES ('$login_2','$senha_2','$adm_2','$name_2')")) {
echo 'Não foi possível inserir no banco de dados'."<br>";
}	else {
echo "<br><br>";
echo "<script>alert('Usuário inserido com sucesso!');</script>";
echo "<meta http-equiv='refresh' content='0;URL=?action=4'>";
}  
break;
default:
break;
}

?>

boa ideia vou tentar valeu se der certo volto aqui pra te falar até mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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