segunda-feira, 5 de outubro de 2015

Preenchendo formularios com Menu “dropdown” dinâmico com PHP, PDO e MySQL



Hoje veremos como preencher dinamicamente um formulário utilizando um menu do tipo “select” (também conhecido como “dropdown”) em PHP, utilizando PDO e banco de dados MySQL. Utilizaremos a tabela de amigos desse post: busca simples com pdo e mysql e para o menu dinâmico utilize o tutorial: menu dropdown dinamico em php com pdo. Isso tudo sem precisarmos usar nenhuma linguagem “client-side”.

O “truque” para isso é utilizar dois formulários; no 1º colocaremos o menu drop down; neste tuto o drop down exibirá os nomes dos amigos e no formulário serão exibidos os detalhes do amigo selecionado, como e-mail, data de nascimento e telefone (vc pode acrescentar outras informações, como endereço, profissão etc. – use sua imaginação).

Etapa 1 - criando o drop down dinâmico

Abra seu editor e utilize o código abaixo – repare que já adicionamos, para facilitar, um formulário simples com o “drop down”:

<?php

//aqui a conexão
include ("conexao.php");

// executa consulta à tabela
$stmt = $con->prepare("select id, nome from amigos");
$stmt->execute();

?>

Selecione o nome do amigo:
<p>

<form name="form1" method="post" action="">

   <select name="cxnome" id="cxnome">

  <?php
  while($registros = $stmt->fetch(PDO::FETCH_OBJ)){
  ?>

  <option value="<?php echo $registros->id;?>"><?php echo $registros->nome;?></option>

  <?php
  }
  ?>

    </select>
    <input type="submit" name="pesquisa" value="Pesquisar">
</form>
<br />

2.  Salve e teste no navegador. O "dropdown" já deverá estar funcionando:


Etapa II - criando o 2º formulário

3. Agora é só acrescentar uma 2ª consulta ao banco de dados e preencher um 2º formulário com os dados recuperados:

<?php
$id=$_POST['cxnome'];
if(isset($_POST['pesquisa']))
{
$stmt2 = $con->prepare("select * from amigos where id=?");
$stmt2->bindValue(1, $id);
$stmt2->execute();

while($registros2 = $stmt2->fetch(PDO::FETCH_OBJ)){
?>
</p>
<form name="form2" method="post" action="">
  <label>E-mail:
  &nbsp;&nbsp;
  <input name="cxemail" type="text" value="<?php echo $registros2->email; ?>">
  </label>
  <br />
  <label>Telefone:
  <input name="cxtel" type="text" value="<?php echo $registros2->telefone; ?>">
  </label>
  <br />
  <label>Nascimento:
  <input name="cxnasc" type="text" value="<?php echo $registros2->nascimento; ?>">
  </label>
</form>
<p>&nbsp;</p>

<?php
}
}
?>

3. Salve e teste no navegador:




4.
Agora é com você; dê um “trato” no visual e a tarefa está pronta!