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 : 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]')"; if ($query) "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: $sql = "SELECT alunos.nome as aluno, professores.nome as professor FROM alunos inner join professores on alunos.idprof = professores.id"; "<td>$linha[aluno]</td><td>$linha[professor]</td><td>excluir</td><td>alterar </td>";
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: 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"; "<td>$linha[aluno]</td><td>$linha[professor]</td><td>excluir</td><td>alterar </td>"; 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); $sql="insert into alunos values(null, '$_POST[aluno]', '$_POST[prof]')"; if ($query) "Cadastro efetuado com sucesso"; <form id="meuform" name="meuform" method="post" action=""> <table width="300" border="0" align="center" cellpadding="2" cellspacing="0"> <td width="61" align="right"><label for="aluno">aluno:</label></td> <td width="181"><input type="text" name="aluno" id="aluno" <td width="46"> </td> <td align="right"><label for="prof">professor:</label></td> <td><select name="prof" id="prof"> while ($linha=mysql_fetch_array($consulta)) '<option value="'.$linha['id'].'">'.$linha['nome'].'</option>';
</select> </td> <td><input type="submit" name="enviar" id="enviar" value="cadastrar" </table> </form> $sql = "SELECT alunos.id, alunos.nome as aluno, professores.nome as professor FROM alunos inner join professores on alunos.idprof = professores.id"; "<td>$linha[aluno]</td><td>$linha[professor]</td><td>excluir</td><td>alterar </td>"; 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: "<td>$linha[aluno]</td><td>$linha[professor]</td><td><a href='?id=".$linha['id']."&action=excluir'>excluir</a></td><td>alterar</td> "; 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 tr 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) "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: "<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>"; 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); $sql="update alunos set nome='$_post[aluno]', idprof='$_post[prof]' where id='$_get[id]'"; if ($query) "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"> <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 width="46"> </td> <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=""; "<option value='$linha2[id]' $comp>$linha2[nome]</option>"; </select> </td>
<td><input type="submit" name="enviar" id="enviar" value="cadastrar" </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.