-1
I could use a hand with that. I’m trying to input data into the database using two tables related to Foreign key, but I can’t do it when there are more than two tables. I even managed to do it with two, but putting a third, I’m not getting it. I’ll show the codes:
FORM
<?php include "pagina-ini.php"; ?>
<form class="form-signin" id="fale_conosco" name="fale_conosco" action="form_grupo_estudo_proc.php" method="post">
<h3>Formulário de inscrição para os Grupos de Estudo</h3>
<br>
<div class="row">
<div class="col-12">
Grupo de Estudo:
</div>
</div>
<div class="row">
<div class="col-12">
<select class="form-control text-uppercase npi" name="nome_grupo" id="nome_grupo">
<option value=""></option>
<option value="grupo1">Aspectos atuais do Direito do Consumidor</option>
<option value="grupo2">Bioética e Biodireito IV</option>
<option value="grupo4">Direito Civil e proteção dos vulneráveis</option>
<option value="grupo5">Minorias e Grupos Vulneráveis</option>
<option value="grupo6">Processo penal contemporâneo</option>
<option value="grupo7">Projeto Diálogos Fundamentais</option>
<option value="grupo8">Raízes da desigualdade à luz da literatura</option>
</select>
</div>
</div>
<br>
<div class="row">
<div class="col-12">
Nome:
</div>
</div>
<div class="row">
<div class="col-12">
<input class="form-control text-uppercase npi" type="text" id="txt_nome" name="nome" maxLength="48" required>
</div>
</div>
<br>
<div class="row">
<div class="col-12">
E-mail:
</div>
</div>
<div class="row">
<div class="col-12">
<input class="form-control text-lowercase npi" type="text" id="txt_email" name="email" maxLength="48" required pattern="[^@]+@[^@]+\.[a-zA-Z]{2,6}">
</div>
</div>
<br>
<div class="row">
<div class="col-12">
Celular:
</div>
</div>
<div class="row">
<div class="col-12">
<input class="form-control text-lowercase npi" type="text" id="celular" name="celular" maxLength="11" pattern="^\([1-9]{2}\) (?:[2-8]|9[1-9])[0-9]{3}\-[0-9]{4}$" required>
</div>
</div>
<br>
<div class="row">
<div class="col-12">
Período Letivo:
</div>
</div>
<div class="row">
<div class="col-12">
<select class="form-control text-uppercase npi" name="periodo_letivo" id="periodo_letivo">
<option value=""></option>
<option value="periodo1">2021/1</option>
<option value="periodo2">2021/2</option>
</select>
</div>
</div>
<br>
<div class="row">
<div class="col-12">
Matrícula:
</div>
</div>
<div class="row">
<div class="col-12">
<input class="form-control text-lowercase npi" type="text" id="matricula" name="matricula" maxLength="5" pattern="^\[0-9]\" required>
</div>
</div>
<br>
<div class="row">
<div class="col-12">
Situação:
</div>
</div>
<div class="row">
<div class="col-12">
<select class="form-control text-uppercase npi" name="situacao" id="situacao">
<option value=""></option>
<option value="ativo">Ativo</option>
<option value="inativo">Inativo</option>
</select>
</div>
</div>
<br>
<div class="row">
<div class="col-12">
<br>
<img src="lib/captcha.php?l=150&a=50&tf=20&ql=5">
<br>
<!--
Digite os caracteres da imagem
</div>
</div>
<div class="row">
<div class="col-12">
<input class="form-control npi" type="text" id="txt_captcha" name="txt_captcha" maxLength="5" required>
</div>
</div>
-->
<br>
<button class="btn btn-primary" type="submit" id="but_enviar" name="but_enviar" value="Enviar">Enviar</button>
</form>
<?php include "pagina-ter.php"; ?>
<?php
/*
include "lib/html.php";
page_begin("fale_conosco", "fale_conosco_proc.php");
p_begin("");
div_begin("", "align=center");
img("img/logo_fale_conosco.jpg", "border=0");
br();
label("FALE CONOSCO", true);
div_end();
br();
label("Telefone: 31 3769-1919", false);
br();
br();
label("Ramais:", false);
br();
label("1. Diretoria", false);
br();
label("2. Secretaria", false);
br();
label("3. Financeiro", false);
br();
label("4. Biblioteca", false);
br();
label("5. Coordena��o de Curso", false);
//br();
//label("6. N�cleo de Extens�o e Pesquisa", false);
br();
label("7. TI", false);
br();
label("8. Patrim�nio", false);
br();
label("9. Procuradora Institucional", false);
br();
br();
label("Nome", false);
br();
text("txt_nome", 48, 94, "u", false, "", "", "");
br();
br();
label("E-mail", false);
br();
text("txt_email", 48, 94, "l", false, "", "", "");
br();
br();
label("Assunto", false);
br();
text("txt_assunto", 48, 94, "u", false, "", "", "");
br();
br();
label("Mensagem", false);
br();
text_area("txta_mensagem", 16, 72, false, "", "");
br();
br();
img("lib/captcha.php?l=150&a=50&tf=20&ql=5", "");
br();
label("Digite os caracteres da imagem", false);
br();
text("txt_captcha", 5, 20, "", false, "", "", "");
br();
br();
but_submit("but_enviar", "Enviar");
but_reset("but_limpar", "Limpar");
p_end();
page_end();
*/
?>
SQL
CREATE TABLE grupos_estudo_inscricoes (
codigo int(11) NOT NULL AUTO_INCREMENT,
nome varchar(60) NOT NULL,
email varchar(48) NOT NULL,
celular varchar(13) NOT NULL,
matricula varchar(13) NOT NULL,
primary key (codigo)
);
CREATE TABLE grupos_estudo (
codigo_grupos int(11) NOT NULL AUTO_INCREMENT,
nome_grupo varchar(60) NOT NULL,
cod_grupos_estudo_insc int(11) NOT NULL,
primary key (codigo_grupos),
FOREIGN KEY(cod_grupos_estudo_insc) REFERENCES grupos_estudo_inscricoes(codigo)
);
CREATE TABLE grupos_estudo_sistema (
codigo_sistema int(11) NOT NULL AUTO_INCREMENT,
periodo_letivo varchar(7) NOT NULL,
situacao varchar(8) NOT NULL,
cod_grupos_sistema int(11) not null,
primary key (codigo_sistema),
FOREIGN KEY(cod_grupos_sistema) REFERENCES grupos_estudo_inscricoes(codigo)
);
FILE THAT RECEIVES THE FORM DATA AND INSERTS THE DATA INTO THE DATABASE
<?php
session_start();
include "bd.php";
//include "lib/util.php";
//include "../lib/phpmailer/phpmailer.php";
if ($_POST["but_enviar"] != "")
{
$gravar = true;
if ($_POST["nome"] == "")
{
$gravar = false;
window_alert("Nome inv�lido(a) !");
history_back();
}
if ($_POST["email"] == "")
{
$gravar = false;
window_alert("E-mail inv�lido(a) !");
history_back();
}
if ($_POST["nome_grupo"] == "")
{
$gravar = false;
window_alert("Escolha de grupo obrigatória!");
history_back();
}
if ($_POST["celular"] == "")
{
$gravar = false;
window_alert("Telefone inválido!");
history_back();
}
if ($_POST["matricula"] == "")
{
$gravar = false;
window_alert("Matrícula inválida!");
history_back();
}
if ($_POST["situacao"] == "")
{
$gravar = false;
window_alert("Situação deve ser escolhida!");
history_back();
}
/*
if (($_POST["txt_captcha"] == "") || ($_POST["txt_captcha"] != $_SESSION["u_captcha"]))
{
$gravar = false;
window_alert("Caracteres inv�lidos !");
history_back();
}
if ($gravar == true)
{
$dr = dt_date();
$hr = dt_time();
*/
// Dados do formulário
$grupos = $_POST['nome_grupo'];
$nome = $_POST['nome'];
$email = $_POST['email'];
$celular = $_POST['celular'];
$periodo_letivo = $_POST['periodo_letivo'];
$matricula = $_POST['matricula'];
$situacao = $_POST['situacao'];
$query = "INSERT INTO grupos_estudo_inscricoes(nome, email, celular, matricula) VALUES($nome', '$email', '$celular', '$matricula')";
mysqli_query($con, $query);
$grupos_estudo_inscricoes = mysqli_insert_id($con);
$query = "INSERT INTO grupos_estudo(nome_grupo, cod_grupos_estudo_insc) VALUES('$grupos','$grupos_estudo_inscricoes')";
mysqli_query($con, $query);
$grupos_estudo = mysqli_insert_id($con);
$query = "INSERT INTO grupos_estudo_sistema( periodo_letivo, situacao, cod_grupos_sistema) VALUES('$periodo_letivo', '$situacao', '$grupos_estudo' )";
mysqli_query($con, $query);
/*
if(!$con){
echo "não conectou com o banco<br>";
} else{
echo "conexão feita e ";
}
if($query){
echo "gravou ";
}else{
echo "não gravou";
}
*/
}
?>
Well, if I’m confused, I send a picture. I thank you in advance for the help.
PS: I recommend using TRANSACTION, https://dev.mysql.com/doc/refman/8.0/en/commit.html. So if an insertion fails, they are all undone.
– Inkeliz
I think I get it. I’ll try again here. Thanks for the tip.
– Wanderson Silva
I tried here and did not record the data in the database. I think I had already done this way that spoke and changed to the one I posted here. 'Cause as I posted here, I’m getting the wrong id, that’s not it?
– Wanderson Silva
From what I saw of the code, that was the problem. You can use https://www.php.net/manualen/mysqli.error.phpto know the exact error.
– Inkeliz
I’ll check here. Thanks again.
– Wanderson Silva
The connection works. Just do not save the data in the database.
– Wanderson Silva
The
mysqli_error
returns the last error, put aprintf("%s \n", mysqli_query($con))
, so you’ll see the error message.– Inkeliz
Friend, I found this error: Errormessage: Cannot add or update a Child Row: a Foreign key Constraint fails (
grupos_estudos
.grupos_estudo_sistema
, CONSTRAINTgrupos_estudo_sistema_ibfk_1
FOREIGN KEY (cod_grupos_sistema
) REFERENCESgrupos_estudo_inscricoes
(codigo
))– Wanderson Silva