Relação de foreing key
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
Curtidas 0
Melhor post
Fernando C
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
GOSTEI 1
Mais Respostas
Vinicius
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 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.
GOSTEI 0