0
PHP + MySQL: insertCarlos SantosLabMM 4 - NTC - DeCA - UAAula PHP+MySQL 03, 09-05-2012
inserção simples numa tabelaPara inserir um novo registo numa tabela:  • criar um formulário com os campos necessários  • ...
php -> bdPara inserir um novo registo numa tabela:  • $qFami = "INSERT INTO Tabela (campo1, campo2, campo3)    VALUES (val...
base para exemplos
inserir uma nova família - formFamilia.php<html><body>  <form action="insert_familia.php" method="post">    Nome Família: ...
inserir uma nova família - insert_familia.php$nomeFamilia = $_POST[“nomeFamilia”];//Validação de dados de entrada em falta...
feedbackMostrar feedback na página de inserção  • a utilizar com moderação na estrutura indicada anteriormente  • tende a ...
php -> bdEstas operações podem ser todas realizadas na mesma página!  • no início testa se há dados por post: isset(...) (...
inserir um novo mariachi - formMariachi.php<html><body>  <form action="insert_mariachi.php" method="post">    Nome: <input...
inserir um novo mariachi - formMariachi.php<html><body>  <form action="insert_mariachi.php" method="post">    Nome: <input...
inserir um novo mariachi - formMariachi.php<html><body>  <form action="insert_mariachi.php" method="post">    Nome: <input...
drop down menuPara adicionar um drop down menu num formulário é necessário:  • criar um recordset com os valores das chave...
inserir um novo mariachi - formMariachi.php<?php   $qFami = "SELECT * FROM Familia";   $rsFami = mysql_query($qFami , $con...
inserir um novo mariachi - formMariachi.php<form action="insert_mariachi.php" method="post">  Família:  <select name="Fami...
inserir um novo mariachi$nome = $_POST[“nome”];$alcunha = $_POST[“alcunha”];$Familia_idFamilia = $_POST[“Familia_idFamilia...
problemas com encoding?na inserção na BD  • utf8_encode($_POST[...])na visualização na página  • utf8_decode($row_rs[...])
E para inserir um novo relacionamento?
Inserção em tabelas de M:NRegras a seguir  • criar um recordset com elementos do lado M  • criar um recordset com elemento...
Erros em PHPNão é tão fácil de ver...   • http://www.php.net/manual/en/function.error-reporting.php   • error_reporting(E_...
Upcoming SlideShare
Loading in...5
×

PHP MySQL Aula 03

1,068

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,068
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
127
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "PHP MySQL Aula 03"

  1. 1. PHP + MySQL: insertCarlos SantosLabMM 4 - NTC - DeCA - UAAula PHP+MySQL 03, 09-05-2012
  2. 2. inserção simples numa tabelaPara inserir um novo registo numa tabela: • criar um formulário com os campos necessários • se necessário, validar dados por javascript • submeter dados por POST • receber dados e, se necessário, voltar a validar • inserir dados na tabela da BD
  3. 3. php -> bdPara inserir um novo registo numa tabela: • $qFami = "INSERT INTO Tabela (campo1, campo2, campo3) VALUES (valor1, valor2, valor3)"; POST querystring(?) form.php insert.php result.php
  4. 4. base para exemplos
  5. 5. inserir uma nova família - formFamilia.php<html><body> <form action="insert_familia.php" method="post"> Nome Família: <input type="text" name="nomeFamilia" /> <input type="submit" /> </form></body></html>As chaves primárias com auto-incremento não são pedidas e nãoprecisam de um campo no formulário.
  6. 6. inserir uma nova família - insert_familia.php$nomeFamilia = $_POST[“nomeFamilia”];//Validação de dados de entrada em falta$query="INSERT INTO Familia (nomeFamilia) VALUES ($nomeFamilia)";if (!mysql_query($query,$connection)) { // tratar condição de erro} else { // o que fazer se correr bem?}
  7. 7. feedbackMostrar feedback na página de inserção • a utilizar com moderação na estrutura indicada anteriormente • tende a criar situações com um passo extra de navegaçãoRedirecionar para outra página automaticamente • página do próprio sítio web onde o utilizador pode continuar a navegar “normalmente” • header(Location: proxPagina.php); • a própria página do formulário de inserção permitindo adicionar mais elementos de um modo muito simples • feedback pode ser passado por querystring
  8. 8. php -> bdEstas operações podem ser todas realizadas na mesma página! • no início testa se há dados por post: isset(...) (+ verificações de segurança) • se há dados faz a inserção e dá feedback • se não há dados mostra o formulário POST form.php
  9. 9. inserir um novo mariachi - formMariachi.php<html><body> <form action="insert_mariachi.php" method="post"> Nome: <input type="text" name="nome" /> Alcunha: <input type="text" name="alcunha" /> Família: <input type="text" name="Familia_idFamilia" /> <input type="submit" /> </form></body></html>Isto tem sentido?
  10. 10. inserir um novo mariachi - formMariachi.php<html><body> <form action="insert_mariachi.php" method="post"> Nome: <input type="text" name="nome" /> Alcunha: <input type="text" name="alcunha" /> Família: <input type="text" name="Familia_idFamilia" /> <input type="submit" /> </form></body></html> Nunca se pede ao utilizador para inserir valores de chaves! Nos formulários, para as chaves estrangeiras de uma tabela, têm que ser criados elementos de interação adequados!
  11. 11. inserir um novo mariachi - formMariachi.php<html><body> <form action="insert_mariachi.php" method="post"> Nome: <input type="text" name="nome" /> Alcunha: <input type="text" name="alcunha" /> Família: <select name="Familia_idFamilia”> <option value="1">Menezes</option> <option value="2">Rodriguez</option> <option value="3">Costa</option> </select> <input type="submit" /> </form></body></html> E os elementos de interação têm que ser dinâmicos porque a informação pode mudar na BD!
  12. 12. drop down menuPara adicionar um drop down menu num formulário é necessário: • criar um recordset com os valores das chave primária e respetivos labels para o drop down menu • num ciclo, adicionar todas as opção ao elemento do tipo select, sendo: • o value é o valor da chave primária • o texto é o label extraído da BD
  13. 13. inserir um novo mariachi - formMariachi.php<?php $qFami = "SELECT * FROM Familia"; $rsFami = mysql_query($qFami , $connection);?><form action="insert_mariachi.php" method="post"> Família: <select name="Familia_idFamilia”> <?php while ($row_rsFami = mysql_fetch_assoc($rsFami)){ $option = ‘<option value=”‘ . $row_rsFami[“idFamilia"] . ’”>’ . $row_rsFami[“nomeFamilia"] . ‘</option>’; echo $option } ?> </select>
  14. 14. inserir um novo mariachi - formMariachi.php<form action="insert_mariachi.php" method="post"> Família: <select name="Familia_idFamilia”> <option value="0" selected>Escolha uma família</option> <?php while ($row_rsFami = mysql_fetch_assoc($rsFami)){ $option = ‘<option value=”‘ . $row_rsFami[“idFamilia"] . ’”>’ . $row_rsFami[“nomeFamilia"] . ‘</option>’; echo $option } </select> ?> Neste caso é obrigatório validar se o utilizador escolheu uma opção e nunca tentar inserir se isso não aconteceu!
  15. 15. inserir um novo mariachi$nome = $_POST[“nome”];$alcunha = $_POST[“alcunha”];$Familia_idFamilia = $_POST[“Familia_idFamilia”];//Validação de dados de entrada em falta$query="INSERT INTO Mariachi (nome, alcunha, Familia_ifFamilia) VALUES ($nome, $alcunha, $Familia_idFamilia)";if (!mysql_query($query,$connection)) { // tratar condição de erro} else { // o que fazer se correr bem?}
  16. 16. problemas com encoding?na inserção na BD • utf8_encode($_POST[...])na visualização na página • utf8_decode($row_rs[...])
  17. 17. E para inserir um novo relacionamento?
  18. 18. Inserção em tabelas de M:NRegras a seguir • criar um recordset com elementos do lado M • criar um recordset com elementos do lado N • no formulário • utilizar esses recordsets para construir os drop down menus para cada uma das chaves estrageiras da tabela
  19. 19. Erros em PHPNão é tão fácil de ver... • http://www.php.net/manual/en/function.error-reporting.php • error_reporting(E_ALL); //em desenvolvimento
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×