terça-feira, 10 de fevereiro de 2015

Formulário dinâmico com PHP e Mysql



À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&atilde;o inseridos:</p>
<form name="form1" method="post" action=" form_dinam.php ">
  <label>
  <input name="cx" type="text" id="cx" size="10">
  </label>
&nbsp;&nbsp;
<label>
<input type="submit" name="Submit" value="Submit">
</label>
</form>
<p>&nbsp;</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.