Relação de foreing key
16/07/2020
0
Bom dia à todos,
Estou tentando desenvolver um sistema de agendamentos de horários, há algumas semanas tento resolver um problema de relação de tabela.
Tenho duas principais tabelas, AGENDAMENTOS e CLIENTE, meu objetivo é identificar o agendamento do cliente através do login, não sendo necessário o mesmo ter que digitar o nome para um agendamento.
Os dados de inserção são processados por meio de um formulário.
Estou tentando relacionar o cliente_id da tabela de CLIENTE para a tabela de AGENDAMENTOS.
Segue os códigos para melhor entendimento.
processa.php:
Estou tentando desenvolver um sistema de agendamentos de horários, há algumas semanas tento resolver um problema de relação de tabela.
Tenho duas principais tabelas, AGENDAMENTOS e CLIENTE, meu objetivo é identificar o agendamento do cliente através do login, não sendo necessário o mesmo ter que digitar o nome para um agendamento.
Os dados de inserção são processados por meio de um formulário.
Estou tentando relacionar o cliente_id da tabela de CLIENTE para a tabela de AGENDAMENTOS.
Segue os códigos para melhor entendimento.
CREATE TABLE IF NOT EXISTS `u748203187_agenda`.`cliente` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `nome` VARCHAR(45) NULL DEFAULT NULL, `login` VARCHAR(45) NULL DEFAULT NULL, `senha` VARCHAR(45) NULL DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARACTER SET = latin1
CREATE TABLE IF NOT EXISTS `u748203187_agenda`.`agendamentos` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `nome` VARCHAR(220) NULL DEFAULT NULL, `telefone` VARCHAR(45) NULL DEFAULT NULL, `servicos` VARCHAR(220) NULL DEFAULT NULL, `data` DATETIME NULL DEFAULT NULL, `cliente_id` INT(11) UNSIGNED NULL DEFAULT NULL, PRIMARY KEY (`id`), INDEX `fk_agendamentos_cliente_idx` (`cliente_id` ASC), CONSTRAINT `fk_agendamentos_cliente` FOREIGN KEY (`cliente_id`) REFERENCES `u748203187_agenda`.`cliente` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB AUTO_INCREMENT = 9 DEFAULT CHARACTER SET = latin1
<?php session_start(); ?> index.php: <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <link rel="stylesheet" type="text/css" href="css/bootstrap-datetimepicker.min.css"> <title>Sistema - Agendamento</title> <body> <div class="container-fluid"> <div class="jumbotron"> <h1 class="text-center">Agendamento</h1><br> </div><br> <form class="form-horizontal" action="processa.php" method="POST"> <div class="col-sm-3 col-sm-offset-3"> <label>Nome</label> <input class="form-control" type="text" name="nome" placeholder="Digite seu nome" required> </div> <div class="col-sm-3"> <label>Telefone</label> <input class="form-control" type="text" name="telefone" placeholder="Digite seu telefone" required> </div> <div class="col-sm-6 col-sm-offset-3"> <label>Serviços</label> <select name="servicos" class="form-control"> <option value="" selected=>Selecione um serviço</option> <option>Teste</option> <option>Teste</option> <option>Teste</option> <option>Teste</option> <option>Teste</option> </select> </div> <div class="col-sm-6 col-sm-offset-3"> <label>Data e hora</label> <div class="input-group date data_formato" data-date-format="dd/mm/yyyy HH:ii:ss"> <input class="form-control" type="text" name="data" placeholder="Data do serviço"> <span class="input-group-addon"> <span class="glyphicon glyphicon-th"></span> </span> </div> </div> <div class="col-sm-offset-3 col-sm-6"><br> <button type="submit" class="btn btn-success">Agendar</button> <a class="btn btn-primary btn_carrega_conteudo" href='#' id="pagina">Ver agendamentos</a><br><br> <?php if(isset($_SESSION['msg'])){ echo $_SESSION['msg']; unset($_SESSION['msg']); } ?> </div> </form> <div class="col-sm-6 col-sm-offset-3" id="div_conteudo"><!-- div onde será exibido o conteúdo--> <img id="loader" src="loader.gif" style="display:none;margin: 0 auto;"> </div> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> <script src="js/bootstrap-datetimepicker.min.js"></script> <script src="js/locales/bootstrap-datetimepicker.pt-BR.js"></script> <script type="text/javascript"> $('.data_formato').datetimepicker({ weeKStart: 1, todayBtn: 1, autoclose: 1, todayHighlight: 1, startView: 2, forceParse: 0, showMeridian: 1, language: "pt-BR", startDate: '-0d' }); $(document).ready(function(){// Ao carregar a página faça o conteudo abaixo $('.btn_carrega_conteudo').click(function(){// Ao clicar no elemento que contenha a classe .btn_carrega_conteudo faça... var carrega_url = this.id; //Carregar url pegando os dados pelo ID carrega_url = carrega_url+'_listar.php'; //Carregar a url e o conteudo da página $.ajax({ //Carregar a função ajax embutida no jQuery url: carrega_url, //Variável DATA armazena o conteúdo da requisição success: function(data){//Caso a requisição seja completada com sucesso faça... $('#div_conteudo').html(data);// Incluir o conteúdo dentro da DIV }, beforeSend: function(){//Antes do envio do cabeçalho faça... $('#loader').css({display:"block"});//carregar a imagem de load }, complete: function(){//Após o envio do cabeçalho faça... $('#loader').css({display:"none"});//esconder a imagem de load } }); }); }); </script> </body> </html>
processa.php:
<?php session_start(); //Incluir a conexão com o BD include_once("conexao.php"); //Receber os dados do formulário $data = $_REQUEST['data']; $servicos = $_REQUEST['servicos']; $nome = $_REQUEST['nome']; $telefone = $_REQUEST['telefone']; //Converter a data e hora para o formato do BD. $data = explode(" ", $data); list($date, $hora) = $data; $data_sem_barra = array_reverse(explode("/", $date)); $data_sem_barra = implode("-", $data_sem_barra); $data_sem_barra = $data_sem_barra . " " . $hora; //Validação dos campos if(empty($_POST['nome']) || empty($_POST['data']) || empty($_POST['servicos'])){ $_SESSION['msg'] = "<div class='alert alert-warning'>Preencha os campos corretamente</div>"; header("Location: index.php"); }else{ //Salvar no BD $result_data = "INSERT INTO agendamentos(servicos, data, nome, telefone) VALUES ('$servicos','$data_sem_barra','$nome','$telefone')"; $resultado_data = mysqli_query($conn, $result_data); //Verificar se salvou no banco de dados através do "mysqli_insert_id" que verifica se existe o ID do ultimo dado inserido if(mysqli_insert_id($conn)){ $_SESSION['msg'] = "<div class='alert alert-success'>Agendamento efetuado com sucesso</div>"; header("Location: index.php"); }else{ $_SESSION['msg'] = "<div class='alert alert-danger'>Erro ao efetuar o agendamento</div>"; header("Location: index.php"); } } ?>
Vinicius
Curtir tópico
+ 0
Responder
Post mais votado
16/07/2020
se entendi bem, falta vc inserir na tabela de agendamentos o id do cliente.
se sua duvida é como obter esse id, vc o captura qdo o cliente se logar, usando uma variavel de sessão.
veja um exemplo pratico aqui:
http://trocadicas.blogspot.com/2018/08/como-exibir-as-preferencias-do-usuario.html
se sua duvida é como obter esse id, vc o captura qdo o cliente se logar, usando uma variavel de sessão.
veja um exemplo pratico aqui:
http://trocadicas.blogspot.com/2018/08/como-exibir-as-preferencias-do-usuario.html
Fernando C
Responder
Mais Posts
16/07/2020
Vinicius
se entendi bem, falta vc inserir na tabela de agendamentos o id do cliente.
se sua duvida é como obter esse id, vc o captura qdo o cliente se logar, usando uma variavel de sessão.
veja um exemplo pratico aqui:
http://trocadicas.blogspot.com/2018/08/como-exibir-as-preferencias-do-usuario.html
se sua duvida é como obter esse id, vc o captura qdo o cliente se logar, usando uma variavel de sessão.
veja um exemplo pratico aqui:
http://trocadicas.blogspot.com/2018/08/como-exibir-as-preferencias-do-usuario.html
Fernando eu inseri o cliente_id na tabela de agendamento, mas vou estudar a questão da session, assim que resolver eu posto aqui. Achei que não seria possível armazenar uma session no banco de dados, muito obrigado pela atenção.
Responder
Clique aqui para fazer login e interagir na Comunidade :)