PHP + MySQL: insert, update e deleteCarlos SantosLabMM 4 - NTC - DeCA - UAAula PHP+MySQL 04, 10-05-2012
inserção complexaComo inserir um novo CD na seguinte BD?
FormulárioPossível estrutura para o formulário:  • campo de texto: título CD  • drop down menu: editora  • drop down menu:...
FormulárioPossível estrutura para o formulário:  • campo de texto: título CD  • drop down menu: editora  • drop down menu:...
Formuláriodrop down menus (select ... option)  • value = valor da chave primária (id) do elemento  • label text = descriçã...
na inserção em PHPPara cada instrução só é possível inserir um registo e numa única tabela!  • Inserir novo registo na tab...
Remover registosA remoção de um registo não pode violar as regras de integridadereferencial da BD  • se adequado, substitu...
Remover registosRemoção de registos com a passagem de parâmetro/valor na QueryString  • id do registo a remover (apagar_fa...
Remover registosapagar_familia.php?id=3  • verificar a passagem do parâmetro/valor na Query String  • validar se é possível...
Editar registosEdição de registos com a passagem de parâmetro/valor na Query String  • id do registo a editar (editar_fami...
Editar registosO que é que tem de mudar entre um formulário para adicionar um registoe um formulário para editar um regist...
FormulárioPassos para construir um formulário de edição:  • construir um recordset com os valores do registo em edição  • ...
Inserções em múltiplas tabelasNo formulário para adicionar um CD pretende-se permitir escolher uminterprete já existente o...
Upcoming SlideShare
Loading in …5
×

PHP MySQL Aula 04

1,443 views
1,355 views

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,443
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
110
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

PHP MySQL Aula 04

  1. 1. PHP + MySQL: insert, update e deleteCarlos SantosLabMM 4 - NTC - DeCA - UAAula PHP+MySQL 04, 10-05-2012
  2. 2. inserção complexaComo inserir um novo CD na seguinte BD?
  3. 3. FormulárioPossível estrutura para o formulário: • campo de texto: título CD • drop down menu: editora • drop down menu: interprete • drop down menu: classificaçãoE os estilos a associar ao CD? • relação de muitos para muitos • na introdução o utilizador pode querer selecionar logo vários estilos
  4. 4. FormulárioPossível estrutura para o formulário: • campo de texto: título CD • drop down menu: editora • drop down menu: interprete • drop down menu: classificação • check boxes: estilos
  5. 5. Formuláriodrop down menus (select ... option) • value = valor da chave primária (id) do elemento • label text = descrição do elementocheck boxes • <INPUT TYPE=”checkbox” name=”campo[ ]” value=”idvalue1”>label1 <INPUT TYPE=”checkbox” name=”campo[ ]” value=”idvalue2”>label2 • nos resultados do post: • $_POST[“campo”] é um array com todos os valores selecionados no formulário • mais info: http://www.html-form-guide.com/php-form/php-form- checkbox.html
  6. 6. na inserção em PHPPara cada instrução só é possível inserir um registo e numa única tabela! • Inserir novo registo na tabela “cd” • “titulo”, “editora_id”, “interprete_id” e “classificacao_id” • obter chave primária do novo CD e guardar! • mysql_insert_id() - chamar logo a seguir ao insert • Para cada estilo escolhido: • inserir um novo registo na tabela “cd_estilo” • utilizar sempre o id do CD introduzido anteriormente e o id de cada uma das checkboxes selecionadas pelo utilizador no formulário
  7. 7. Remover registosA remoção de um registo não pode violar as regras de integridadereferencial da BD • se adequado, substituir a remoção pela colocação do registo num estado inativo (através dum campo booleano na tabela) • é necessário adequar todas as queries para terem em conta o estado dos registos (para os mostrar ou não…)
  8. 8. Remover registosRemoção de registos com a passagem de parâmetro/valor na QueryString • id do registo a remover (apagar_familia.php?id=3) • confirmar previamente a remoção por JS (client-side) -> “Quer mesmo apagar a família X?”Para uma maior segurança na remoção de registos da BD • verificar sempre se o utilizador possui as necessárias permissões -> perfis utilizadores • não expor na Query String o parâmetro/valor que possibilita a edição -> variáveis sessão ($_SESSION[“parametro”] = valor) • qual a diferença entre uma variável “normal” e uma variável de sessão?
  9. 9. Remover registosapagar_familia.php?id=3 • verificar a passagem do parâmetro/valor na Query String • validar se é possível apagar (existe alguma chave estrangeira que tenha uma referência a este valor?) • apagar o registo • dar feedback ao utilizador sobre o sucesso (ou não) da remoção!!$idFam = $_GET["id"];//Validações!$query = "DELETE FROM Familia WHERE idFamilia =".$idFam;$rsFami = mysql_query($query , $connection);//Feedback final
  10. 10. Editar registosEdição de registos com a passagem de parâmetro/valor na Query String • id do registo a editar (editar_familia.php?id=5) • o id é obtido através do URL que se constrói na interface de escolha para ediçãoPara uma maior segurança na edição de registos da BD • Verificar sempre se o utilizador possui as necessárias permissões -> perfis utilizadores • Não expor na Query String o parâmetro/valor que possibilita a edição -> variáveis sessão
  11. 11. Editar registosO que é que tem de mudar entre um formulário para adicionar um registoe um formulário para editar um registo? • num formulário para adicionar • não há um campo para a chave primária porque esse valor não existe e não é escolhido pelo utilizador (auto incremento) • por defeito, os campos devem estar vazios • num formulário para editar • o valor da chave primária é essencial para atualizar o registo correto na BD! • pode optar-se por ter um campo do tipo hidden no formulário para armazenar o valor da chave primária • os campos devem aparecer preenchidos com os valores atuais do registo
  12. 12. FormulárioPassos para construir um formulário de edição: • construir um recordset com os valores do registo em edição • adicionar todos os elementos como no formulário de inserção (drop down menus) • inicializar todos os campos com os valores do registo em edição • adicionar um hidden field com o valor da chave primária do registo$query = "UPDATE tabela SET campo1 = "valor1", campo2 = valor2 WHERE chavePrimária = valorChavePrimária;;$rsUpdate = mysql_query($query , $connection);
  13. 13. Inserções em múltiplas tabelasNo formulário para adicionar um CD pretende-se permitir escolher uminterprete já existente ou adicionar um novo • no formulário: manter o drop down para escolher um interprete adicionar um campo de texto para indicar um novo interprete • no script de inserção verificar se foi introduzido algo no campo do novo interprete se foi -> verificar se esse interprete já existe na BD se existir -> usar o ID (PK) do interprete já existente se não existir -> inserir novo interprete na tabela “interprete” obter o ID (PK) dessa inserção se não foi -> utilizar a opção selecionada no dropdown menu inserir o novo CD na tabela “cd”

×