How to insert in one table and after inserting in another (with foreign key)?

Asked

Viewed 38 times

-1

Good afternoon,

How can I do a simultaneous INSERT? I want you to insert the data from one table into the other table as well!

Database: MYSQL

Insertion script:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
	<title>Cadastro de Processos</title>
	<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
	<link rel="stylesheet" type="text/css" href="css/custom.css">
	<style type="text/css">
	<!--
.loader {
	margin: 0 auto;
  border: 12px solid #000000;
  border-radius: 50%;
  border-top: 7px solid black;
  border-right: 7px solid grey;
  border-bottom: 7px solid black;
  border-left: 7px solid grey;
  width: 50px;
  height: 50px;
  -webkit-animation: spin 2s linear infinite;
  animation: spin 1s linear infinite;
}

@-webkit-keyframes spin {
  0% { -webkit-transform: rotate(0deg); }
  100% { -webkit-transform: rotate(360deg); }
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.center1 {
	text-align: center;
}
<!---->
</style>
</head>
<body>
	<div class='container box-mensagem-crud'>
		<?php 
		require 'conexao.php';

		$conexao = conexao::getInstance();


		$acao  = (isset($_POST['acao'])) ? $_POST['acao'] : '';

	
		$numero = $_POST['numero'];
		$assunto = $_POST['assunto'];
		$requerente = $_POST['requerente'];
		$status = $_POST['status'];
		$informe = $_POST['informe'];
		$data = $_POST['data'];
		
		if ($acao == 'incluir'):
		
 

		$processos = "INSERT INTO processos(numero, assunto, requerente, status)
			VALUES(:numero, :assunto, :requerente, :status)";


			$stm = $conexao->prepare($processos);
			$stm->bindValue(':numero', $numero);			
			$stm->bindValue(':assunto', $assunto);
			$stm->bindValue(':requerente', $requerente);
			$stm->bindValue(':status', $status);
			$retorno = $stm->execute();
			
			if ($retorno){
			
			$informes = "INSERT INTO informes(informe, data)
			VALUES (:informe, :data)";
			
			$tsm = $conexao->prepare($informes);
			$tsm->bindValue(':informe', $informe);
			$tsm->bindValue(':data', $data);
			$lol = $tsm->execute();
			}
			
			if ($lol):
			
				echo "<div class='center1' role='alert'>Processo inserido com sucesso, aguarde você está sendo redirecionado...</div> ";
				echo "<div class='loader'</div>";
		    else:
		    	echo "<div class='center1' role='alert'>Erro ao inserir processo, aguarde!</div>";
				echo "<div class='loader'</div>";
			endif;

			echo "<meta http-equiv=refresh content='4;URL=listarprocessos.php'>";

			
		endif;
		
				?>
		

	</div>
</body>
</html>

Table Processes:

inserir a descrição da imagem aqui

Table Informes:

inserir a descrição da imagem aqui

1 answer

0


By PHP, you can get the last entered value:

$ultimo_valor_inserido = mysql_insert_id();

by the Sqlserver there is the @@IDENTITY: o @@IDENTITY retorna o último ID inserido no banco.

You can also give an input in the first table and then a select MAX to take the last ID and save in the 2 table.

  • And how would I apply this in the INSERT of the reports? $informes = "INSERT INTO informes(enter, date, '$ultimo_valor_inserted')? VALUES (:enter, :date, :'$ultimo_valor_inserted)";

  • //Sentença de inserção do elemento &#xA;$ssql = "INSERT INTO cliente (nome_cliente, BI, morada, email) VALUES ('xxx Nome empresa', 'B3331113', 'Rua Corona 2', '[email protected]')"; &#xA;&#xA;//inserto-o na base de dados &#xA;if (mysql_query($ssql,$connectid)){ &#xA;&#xA; //recebo o último id<br>&#xA; $ultimo_id = mysql_insert_id($connectid); &#xA; echo $ultimo_id; &#xA;}else{ &#xA; echo "A inserção não se realizou"; &#xA;}

  • did not understand how this is applied in the insertion of the other table, pardon!

  • you first insert, then create a variable that takes mysql_insert_id(); then in the other Insert you pass this variable. Search how to use mysql_insert_id();

  • you can enter and after a select max searching for the last value by inserting too

Browser other questions tagged

You are not signed in. Login or sign up in order to post.