Questions with insert

1

I have form to insert into three different tables:

<form name="customer_details" method="POST" onsubmit="return form_validation()" >
<h5><strong>Utente</strong></h5> <input type="text" id="nome" name="nome" placeholder="Primeiro e último nome" style="width:300px" required />
<h5><strong>Nº Utente</strong></h5> <input type="text" id="codigoutente" name="codigoutente" style="width:80px" required />
<h5><strong>Valência</strong></h5>
<select name="codvalencia" required>
       <option></option>
	 <?php  
$sql = "SELECT * FROM centrodb.Valencia ORDER BY Valencia ASC"; 
		$qr = mysqli_query($conn, $sql); 
		while($ln = mysqli_fetch_assoc($qr)){ 
		echo '<option value="'.$ln['CodValencia'].'"> '.$ln['Valencia'].'</option>';  
		}
	 ?>   
</select>
<h5><strong>Responsável</strong></h5> <input type="text" id="Responsavel" name="Responsavel" style="width:350px" required />
<h5><strong>Contato</strong></h5> 
<div class="input-group">
<span class="input-group-addon">351</span> <input type="text" class="input" id="Contato" name="Contato" style="width:150px" required />
</div>
<input type="submit" value="Registo"/>
</form>

Code to insert:

$nome = $_POST['nome']; 
$codigoutente = $_POST['codigoutente']; 
$codvalencia = $_POST['codvalencia']; 
$Responsavel = $_POST['Responsavel'];
$Contato = $_POST['Contato']; 

$stmt = $conn->prepare("INSERT INTO UtentesCons ('nome','codvalencia','codigoutente') VALUES ('$nome','$codvalencia','$codigoutente')");    
mysqli_stmt_execute($stmt);

$stmt1 = $conn->prepare("INSERT INTO Responsaveis ('Responsavel','IdUtente') VALUES ('$Responsavel','$codigoutente')");    
mysqli_stmt_execute($stmt1);
$last_id = $conn->insert_id;

$stmt2 = $conn->prepare("INSERT INTO ContatoRes ('IdUtente','IdResponsavel','Contato') VALUES ('$codigoutente','$last_id','351$Contato')");    
mysqli_stmt_execute($stmt2);

So far, it's working properly. Now I've added another form before input of submit :

<input id="botao" style="float: right;" class="botao1" onclick="addresp()" value="Adicionar Responsável"/>
 
<div id="novoresp">

</div>


<div class="teste" id="respform" hidden> 

<h5><strong>Responsável</strong></h5> <input type="text" id="Responsavel" name="Responsavel" style="width:350px"/>

<h5><strong>Contato</strong></h5> 
<div class="input-group">
<span class="input-group-addon">351</span> <input type="text" class="input" id="Contato" name="Contato" style="width:150px"/>
</div>	
</div>

If you have more than one new person in charge, form novoresp would also insert the same tables in the first form, in these two:

$stmt1 = $conn->prepare("INSERT INTO Responsaveis ('Responsavel','IdUtente') VALUES ('$Responsavel','$codigoutente')");    
mysqli_stmt_execute($stmt1);
$last_id = $conn->insert_id;

$stmt2 = $conn->prepare("INSERT INTO ContatoRes ('IdUtente','IdResponsavel','Contato') VALUES ('$codigoutente','$last_id','351$Contato')");    
mysqli_stmt_execute($stmt2); 
    
asked by anonymous 20.12.2018 / 18:12

2 answers

1

I came to the solution by creating two for , in the second and third insert , and making insert_id into array , as the Responsavel and Contato of form :

$nome = $_POST['nome']; 
$codigoutente = $_POST['codigoutente']; 
$codvalencia = $_POST['codvalencia']; 
$Responsavel = $_POST['Responsavel'];
$Contato = $_POST['Contato']; 

$stmt = $conn->prepare("INSERT INTO UtentesCons ('nome','codvalencia','codigoutente') VALUES ('$nome','$codvalencia','$codigoutente')");
mysqli_stmt_execute($stmt);

for ($i=0;$i<count($_POST["Responsavel"]);$i++) { 
$Responsavel = $_POST['Responsavel'][$i];

$stmt1 = $conn->prepare("INSERT INTO Responsaveis ('Responsavel','IdUtente') VALUES ('$Responsavel','$codigoutente')");
mysqli_stmt_execute($stmt1);
$last_id_array[] = $conn->insert_id;
}

for ($i=0;$i<count($_POST["Contato"]);$i++) { 
$Contato = $_POST['Contato'][$i];
$last_id = $last_id_array[$i];

$stmt2 = $conn->prepare("INSERT INTO ContatoRes ('IdUtente','IdResponsavel','Contato') VALUES ('$codigoutente','$last_id','351$Contato')");
mysqli_stmt_execute($stmt2);
}
    
21.12.2018 / 09:49
1

Start talking! Is everything good, brother? So! what I would do in your case ...

You would get the data from the other responders, usually through $ _ POST . In the PHP execution code (where you enter your data) you would enter these new SE responders (ie using the IF) , Come on!

$nome = $_POST['nome']; 
$codigoutente = $_POST['codigoutente']; 
$codvalencia = $_POST['codvalencia']; 
$Responsavel = $_POST['Responsavel'];
$Contato = $_POST['Contato']; 
$NOVOresponsavel = $_POST['novoResponsavel']; //Note que aqui eu mudei o ID do form para não ficar igual ao responsavel principal, então mude no codigo HTML o id.
$NOVOcontato = $_POST['novoContato']; //Mesma situacao do $NOVOresponsavel.

if ($NOVOresponsavel != null && $NOVOcontato != null){    
$stmt = $conn->prepare("INSERT INTO UtentesCons ('nome','codvalencia','codigoutente') VALUES ('$nome','$codvalencia','$codigoutente')");    
mysqli_stmt_execute($stmt);

$stmt1 = $conn->prepare("INSERT INTO Responsaveis ('Responsavel','IdUtente') VALUES ('$Responsavel','$codigoutente')");    
mysqli_stmt_execute($stmt1);
$last_id = $conn->insert_id;

$stmt1NOVO = $conn->prepare("INSERT INTO Responsaveis ('Responsavel','IdUtente') VALUES ('$NOVOresponsavel','$codigoutente')");    
mysqli_stmt_execute($stmt1); // Vai adicionar o novo responsavel POREM com a variavel que voce pegou do novo form.


$stmt2 = $conn->prepare("INSERT INTO ContatoRes ('IdUtente','IdResponsavel','Contato') VALUES ('$codigoutente','$last_id','351$Contato')");    
mysqli_stmt_execute($stmt2);

$stmt2NOVO = $conn->prepare("INSERT INTO ContatoRes ('IdUtente','IdResponsavel','Contato') VALUES ('$codigoutente','$last_id','351$NOVOcontato')");    
mysqli_stmt_execute($stmt2); // Mesma situação do $stmt1NOVO.
} else {  //Ou seja, se não houver novo responsavel, roda o codigo normal 
$stmt = $conn->prepare("INSERT INTO UtentesCons ('nome','codvalencia','codigoutente')         VALUES ('$nome','$codvalencia','$codigoutente')");    
mysqli_stmt_execute($stmt);

$stmt1 = $conn->prepare("INSERT INTO Responsaveis ('Responsavel','IdUtente') VALUES ('$Responsavel','$codigoutente')");    
mysqli_stmt_execute($stmt1);
$last_id = $conn->insert_id;

$stmt2 = $conn->prepare("INSERT INTO ContatoRes ('IdUtente','IdResponsavel','Contato') VALUES ('$codigoutente','$last_id','351$Contato')");    
mysqli_stmt_execute($stmt2);
}

In short ... the lines of code I added were ...

$NOVOresponsavel = $_POST['novoResponsavel']; //Note que aqui eu mudei o ID do form para não ficar igual ao responsavel principal, então mude no codigo HTML o id.
$NOVOcontato = $_POST['novoContato']; //Mesma situacao do $NOVOresponsavel.

if ($NOVOresponsavel != null && $NOVOcontato != null){ 

$stmt1NOVO = $conn->prepare("INSERT INTO Responsaveis ('Responsavel','IdUtente') VALUES ('$NOVOresponsavel','$codigoutente')");    
mysqli_stmt_execute($stmt1); // Vai adicionar o novo responsavel POREM com a variavel que voce pegou do novo form.

$stmt2NOVO = $conn->prepare("INSERT INTO ContatoRes ('IdUtente','IdResponsavel','Contato') VALUES ('$codigoutente','$last_id','351$NOVOcontato')");    
mysqli_stmt_execute($stmt2); // Mesma situação do $stmt1NOVO.
} else {  //Ou seja, se não houver novo responsavel, roda o codigo normal 

I hope I have helped !! Good luck and great studies.

    
21.12.2018 / 01:57