You are on page 1of 5

Inserindo e Listando registros

Dando prosseguimento à aula anterior, agora precisaremos construir uma rotina que faça a inserção
no banco de dados “Escola”. A ação agora é inserir o aluno na tabela alunos quando o usuário clicar
no botão “Cadastrar”. Este botão, se observarmos o código do formulário, é o seguinte:

<input type="submit" name="enviar" id="enviar" value="Cadastrar" />

Observe que seu nome de variável é o que está associado ao atributo “name” que, neste exemplo, é
“enviar”. Como o formulário é do tipo “post”, obtemos da seguinte maneira se o usuário clicou ou
não no botão “Cadastrar”:

if (isset($_POST['enviar']) && $_POST['enviar'] && $_POST['aluno']!="") {

O comando “isset” significa está “setado”? Ou melhor, ele existe? A segunda parcela do
condicional ($_POST['enviar']) refere-se ao fato de que quando o usuário clica no botão de envio,
automaticamente o valor do botão, neste caso “Cadastrar”, é atribuído à variável “enviar”
($_POST[‘enviar’]), fazendo com que $_POST[‘enviar’] seja “true”. A terceira parcela do
condicional ($_POST['aluno']!="") serve para garantir que se o usuário não digitar um nome de
aluno, o programa não cadastre um valor vazio no banco de dados.

Uma vez que a condição seja verdadeira, faz-se a inserção no banco:
$sql="insert into alunos values(null, '$_POST[aluno]', '$_POST[prof]')";
$query = mysql_query($sql);
if ($query) echo "Cadastro efetuado com sucesso";
}

Veja que utilizamos a sintaxe padrão SQL para inserir os dados. O valor ‘null’ do primeiro campo
deve-se ao fato de o campo id da tabela alunos ser do tipo auto_increment, não necessitando,
portanto, passar um valor específico como 1, 2,3, etc. Coloque este código antes do formulário
HTML (tag <form>) para que sempre que inserirmos um dado, a tabela de exibição dos alunos seja
atualizada sem que precisemos dar um refresh (F5) na página.

Abaixo do formulário, deve-se colocar a rotina para exibir os dados cadastrados, conforme abaixo:

<table width="50%" border="0" cellspacing="2" cellpadding="0" align="center"
class="tabela">
<tr>
<th>Aluno</th>
<th>Professor</th>
<th>Excluir</th>
<th>Alterar</th>
</tr>
<?
$sql = "SELECT alunos.nome as aluno, professores.nome as professor FROM alunos
inner join professores on alunos.idProf = professores.id";
$query = mysql_query($sql);
while ($linha=mysql_fetch_array($query)) {
echo
"<tr><td>$linha[aluno]</td><td>$linha[professor]</td><td>Excluir</td><td>Alterar
</td></tr>";
}
?>
Primeiramente, abrimos uma tabela para que possamos exibir os dados de forma tabular. Logo
abaixo do fechamento do formulário (</form>), este código deve ser inserido:

<table width="50%" border="0" cellspacing="2" cellpadding="0" align="center"
class="tabela">
<tr>
<th>Aluno</th>
<th>Professor</th>
<th>Excluir</th>
<th>Alterar</th>
</tr>

Aqui, preparamos a tabela para ser exibida. Observe que esta primeira parte não precisa estar dentro
do código PHP visto que é HTML puro. Agora, resta-nos embutir o código PHP dentro da tabela
HTML para que possamos exibir os dados de maneira adequada:

<?
$sql = "SELECT alunos.nome as aluno, professores.nome as professor FROM alunos
inner join professores on alunos.idProf = professores.id";
$query = mysql_query($sql);
while ($linha=mysql_fetch_array($query)) {
echo
"<tr><td>$linha[aluno]</td><td>$linha[professor]</td><td>Excluir</td><td>Alterar
</td></tr>";
}
?>

Veja que qualquer consulta ao banco, seja inserção, alteração, exclusão ou listagem, passa pelo
mesmo processo. A única das quatro operações que difere quanto ao código PHP é a listagem que
faz-se necessário um laço – estrutura while – para que possamos exibir todos os registros da tabela
alunos. Agora, juntando tudo, temos:

<?
$servidor = mysql_connect("localhost", "root", "");
$banco = mysql_select_db("web09", $servidor);
$sql = "select * from professores";
$consulta = mysql_query($sql);

if (isset($_POST['enviar']) && $_POST['enviar'] && $_POST['aluno']!="") {
$sql="insert into alunos values(null, '$_POST[aluno]', '$_POST[prof]')";
$query = mysql_query($sql);
if ($query) echo "Cadastro efetuado com sucesso";
}
?>
<form id="meuform" name="meuform" method="post" action="">
<table width="300" border="0" align="center" cellpadding="2"
cellspacing="0">
<tr>
<td width="61" align="right"><label for="aluno">Aluno:</label></td>
<td width="181"><input type="text" name="aluno" id="aluno"
/></td>
<td width="46">&nbsp;</td>
</tr>
<tr>
<td align="right"><label for="prof">Professor:</label></td>
<td><select name="prof" id="prof">
<?
while ($linha=mysql_fetch_array($consulta))
echo '<option
value="'.$linha['id'].'">'.$linha['nome'].'</option>';
?>
</select>
</td>
<td><input type="submit" name="enviar" id="enviar" value="Cadastrar"
/></td>
</tr>
</table>
</form>
<table width="50%" border="0" cellspacing="2" cellpadding="0" align="center"
class="tabela">
<tr>
<th>Aluno</th>
<th>Professor</th>
<th>Excluir</th>
<th>Alterar</th>
</tr>
<?
$sql = "SELECT alunos.id, alunos.nome as aluno, professores.nome as professor
FROM alunos inner join professores on alunos.idProf = professores.id";
$query = mysql_query($sql);
while ($linha=mysql_fetch_array($query)) {
echo
"<tr><td>$linha[aluno]</td><td>$linha[professor]</td><td>Excluir</td><td>Alterar
</td></tr>";
}
?>

Agora, salve este arquivo com o nome de cadastro.php.

Excluindo Registros
Uma técnica simples de exclusão de registros é aproveitarmos a listagem da alunos acima e embutir
um código PHP para que sempre que o usuário clique no link “excluir”, seja feita uma exclusão.
Isto é feito da seguinte forma: a primeira coisa é colocarmos um link na palavra excluir passando
dois valores como variáveis de URL (do tipo get). A primeira variável seria o ID do aluno
cadastrado. Utilizamos o ID por ser um campo único, ou seja, ao construirmos o banco, garantimos
que o campo ID não poderá ter valores repetidos. A segunda variável seria uma que indicasse que a
ação do usuário é a de exclusão de registro. Poderíamos, então, colocar o seguinte código na
listagem acima onde tem a palavra “Excluir” dentro do laço while:

<a href=”?id=$linha[id]&action=excluir”>Excluir</a>

Adaptando o código acima, reescrevemos a linha:

echo "<tr><td>$linha[aluno]</td><td>$linha[professor]</td><td><a
href='?id=".$linha['id']."&action=excluir'>Excluir</a></td><td>Alterar</td></tr>
";

Teste o código e observe que, ao passarmos o mouse sobre o link excluir, na barra de status
aparecerá o id do aluno e uma variável “action” cujo valor é “excluir”. Essa variável action (que
poderia ser qualquer outro nome, desde que respeite as regras de nomenclatura de variáveis) e a
variável id são do tipo get, pois estão sendo passadas através de um link.

Agora, precisamos fazer a ação de excluir. Uma vez que já temos o id e o que fazer com ele (action
= excluir), basta criar o trecho de código para deletar o registro. Agora, insira o seguinte código
logo acima do formulário HTML:

if (isset($_GET['action']) && $_GET['action']=="excluir") {
$sql="delete from alunos where id = '$_GET[id]'";
$query=mysql_query($sql);
if ($query) echo "Registro deletado";
}

Alterando Registros

Para alterarmos um registro, basta que passemos seu id para uma página contendo um novo
formulário muito parecido com o de inserção feito anteriormente nesta aula. No Dreamweaver, crie
um novo arquivo em PHP e salve-o como alterar.php.

No código da listagem anterior, será necessário modificá-lo para acrescentar o link para a página de
alteração, passando o id do respectivo registro a ser alterado. Isto é feito da seguinte forma:

echo "<tr><td>$linha[aluno]</td><td>$linha[professor]</td><td><a
href='?id=".$linha['id']."&action=excluir'>Excluir</a></td><td><a
href='altera.php?id=".$linha['id']."'>Alterar</td></tr>";

Substitua a linha equivalente por esta acima. Veja que acrescentamos um link para a página
altera.php passando o id do registro pela URL. Vejamos agora o que será feito na página de
alteração. É muito parecido com o que fizemos na página anterior.

<?
$servidor = mysql_connect("localhost", "root", "");
$banco = mysql_select_db("web09", $servidor);

if (isset($_POST['enviar']) && $_POST['enviar'] && $_POST['aluno']!="") {
$sql="update alunos set nome='$_POST[aluno]', idProf='$_POST[prof]' where
id='$_GET[id]'";
$query = mysql_query($sql);
if ($query) echo "Alteração efetuada com sucesso";
}

$sql = "select * from alunos where id='$_GET[id]'";
$consulta = mysql_query($sql);
$linha=mysql_fetch_array($consulta);
?>

<form id="meuform" name="meuform" method="post" action="">
<table width="300" border="0" align="center" cellpadding="2"
cellspacing="0">
<tr>
<td width="61" align="right"><label for="aluno">Aluno:</label></td>
<td width="181"><input type="text" name="aluno" id="aluno"
value="<?=$linha['nome'];?>" /></td>
<td width="46">&nbsp;</td>
</tr>
<tr>
<td align="right"><label for="prof">Professor:</label></td>
<td><select name="prof" id="prof">
<?
$sql="select * from professores";
$query=mysql_query($sql);
while ($linha2=mysql_fetch_array($query)) {
if ($linha['idProf']==$linha2['id']) $comp=" selected";
else $comp="";
echo "<option value='$linha2[id]'
$comp>$linha2[nome]</option>";
}
?>
</select>
</td>
<td><input type="submit" name="enviar" id="enviar" value="Cadastrar"
/></td>
</tr>
</table>
</form>

Teste o programa acima e observe o que acontece. Lembre-se de testá-lo a partir da página anterior
onde havia a listagem. É de lá que será escolhido o aluno a ser alterado.

Com este exercício, contemplamos todas as quatro operações básicas de manipulação com banco de
dados em PHP. Ele implementa inserção de registros, listagem, alteração e exclusão. Com isto, já
temos base para fazer o portal de notícias para a prática profissional.