Às vezes, precisamos inserir vários registros num banco de dados numa operação só (por exemplo, um cadastro de alunos, de candidatos etc.). Em vez de repetir a tediosa tarefa de recarregar o mesmo formulário várias vezes, neste tutorial vamos conhecer uma forma simples de definir, antes de carregar o formulário de cadastros, quantos registros vamos inserir e então já carregar o formulário “pronto”.
O primeiro passo é criar um formulário prévio bem simples, para definirmos quantos registros vamos inserir; o código segue abaixo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <p>Escolha quantos registros serão inseridos:</p> <form name="form1" method="post" action=" form_dinam.php "> <label> <input name="cx" type="text" id="cx" size="10"> </label> <label> <input type="submit" name="Submit" value="Submit"> </label> </form> <p> </p> </body> </html>
Observe que o formulário acima envia informações a uma 2ª página, a "form_dinam.php", que vamos criar no próximo passo.
Agora copie o código da página "form_dinam.php", substituindo os 3 “X” abaixo pelos seus dados:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>teste formulario dinamico</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <?php $conecta = mysql_connect("XXX", "XXX", "XXX") or print (mysql_error()); mysql_select_db("mural", $conecta) or die(mysql_error()); $hd=$_POST['hd']; if ($hd) { $my_matricula = $_POST['matricula']; $my_nome = $_POST['nome']; $tamanho = count($my_matricula)-1 ; for ($f=0 ; $f <= $tamanho ; $f++) { $sql = mysql_query("insert into XXX(matricula,nome) VALUES (\"".$my_matricula[$f]."\",\"".$my_nome[$f]."\")") or die(mysql_error()); } if($sql){ echo ($tamanho+1)." registros incluidos" ; } } else { $numcaixas= $_POST['cx']; //define(NUM_CAIXAS,3) ; echo "<form name=\"form1\" method=\"post\" action=\"\">" ; echo "<pre>" ; for ($f=1 ; $f <= $numcaixas ; $f++) { echo "Matricula$f : " ; echo "<input type=\"text\" name=\"matricula[]\"><br>"; echo "Nome$f : " ; echo "<input type=\"text\" name=\"nome[]\"><br><br>" ; } echo "</pre>" ; echo " <input name=\"hd\" type=\"hidden\" value=\"1\">" ; echo " <input type=\"submit\" name=\"Submit\" value=\"Submit\">" ; echo "</form>" ; } ?> </body> </html>
O código acima insere 2 campos: “matricula” e “nome” de alunos, como exemplo. Seu formulário dinâmico já estará funcionando corretamente, inclusive informando quantos registros foram inseridos.
Fonte: PHP e MySQL – Guia avançado, Claudio Adonai Muto, ed. Brasport, pgs. 109/110.
Edição feita por: Fernando C, 10/02/2015, 10:20.