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
Quando tento definir o cliente_id como not null retorna erro 1452 - Cannot add or update a child row: a foreign key constraint fails.
index.php:
<?php
session_start();?><!DOCTYPE html><htmllang="pt-br"><head><metacharset="utf-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width, initial-scale=1"><linkrel="stylesheet"href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"crossorigin="anonymous"><linkrel="stylesheet"type="text/css"href="css/bootstrap-datetimepicker.min.css"><title>Sistema - Agendamento</title><body><divclass="container-fluid"><divclass="jumbotron"><h1class="text-center">Agendamento</h1><br></div><br><formclass="form-horizontal"action="processa.php"method="POST"><divclass="col-sm-3 col-sm-offset-3"><label>Nome</label><inputclass="form-control"type="text"name="nome"placeholder="Digite seu nome"required></div><divclass="col-sm-3"><label>Telefone</label><inputclass="form-control"type="text"name="telefone"placeholder="Digite seu telefone"required></div><divclass="col-sm-6 col-sm-offset-3"><label>Serviços</label><selectname="servicos"class="form-control"><optionvalue=""selected=>Selecione um serviço</option><option>Teste</option><option>Teste</option><option>Teste</option><option>Teste</option><option>Teste</option></select></div><divclass="col-sm-6 col-sm-offset-3"><label>Data e hora</label><divclass="input-group date data_formato"data-date-format="dd/mm/yyyy HH:ii:ss"><inputclass="form-control"type="text"name="data"placeholder="Data do serviço"><spanclass="input-group-addon"><spanclass="glyphicon glyphicon-th"></span></span></div></div><divclass="col-sm-offset-3 col-sm-6"><br><buttontype="submit"class="btn btn-success">Agendar</button><aclass="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><divclass="col-sm-6 col-sm-offset-3"id="div_conteudo"><!-- div onde será exibido o conteúdo--><imgid="loader"src="loader.gif"style="display:none;margin:0 auto;"></div></div><scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script><scriptsrc="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"crossorigin="anonymous"></script><scriptsrc="js/bootstrap-datetimepicker.min.js"></script><scriptsrc="js/locales/bootstrap-datetimepicker.pt-BR.js"></script><scripttype="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 camposif(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 inseridoif(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");}}?>
Pergunta
vini_agrof
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.
Quando tento definir o cliente_id como not null retorna erro 1452 - Cannot add or update a child row: a foreign key constraint fails.
index.php:
processa.php:
conexao.php:
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.