PHP + MySQL: insert, update e deleteCarlos SantosLabMM 4 - NTC - DeCA - UAAula 21, 15-05-2013
Inserção complexaComo inserir um novo CD na seguinte BD?
Formulário de inserçãoPossível estrutura para o formulário:• campo de texto: título CD• drop down menu: editora• drop down...
Formulário de inserçãoPossível estrutura para o formulário:• campo de texto: título CD• drop down menu: editora• drop down...
Formulário de inserção (HTML)drop down menus (select ... option)• value = valor da chave primária (id) do elemento• label ...
Na inserção em PHPPara cada instrução só é possível inserir um registo e numa única tabela!• Inserir novo registo na tabel...
Remover registosA remoção de um registo não pode violar as regras de integridadereferencial da BD• se adequado, substituir...
Remover registosRemoção de registos com a passagem de parâmetro/valor na QueryString• id do registo a remover (apagar_fami...
Remover registosapagar_familia.php?id=3• verificar a passagem do parâmetro/valor na Query String• validar se é possível apa...
Editar registosEdição de registos com a passagem de parâmetro/valor na Query String• id do registo a editar (editar_famili...
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• adic...
Inserções em múltiplas tabelasNo formulário para adicionar um CD queremos permitir escolher uminterprete já existente ou a...
Próximos SlideShares
Carregando em…5
×

LabMM4 (T21 - 12/13) - insert, delete e update

1.290 visualizações

Publicada em

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.290
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
49
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

LabMM4 (T21 - 12/13) - insert, delete e update

  1. 1. PHP + MySQL: insert, update e deleteCarlos SantosLabMM 4 - NTC - DeCA - UAAula 21, 15-05-2013
  2. 2. Inserção complexaComo inserir um novo CD na seguinte BD?
  3. 3. Formulário de inserçãoPossí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 introduzir vários estilos
  4. 4. Formulário de inserçãoPossí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ário de inserção (HTML)drop 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 nascheckboxes do 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!• mysqli->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 cadauma 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 estadoinativo (através dum campo booleano na tabela)• é necessário adequar todas as queries para terem em conta o estado dosregistos (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 mesmoapagar 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 -> perfisutilizadores• 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 tenhauma 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 = mysqli->query($query);//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 paraediçãoPara uma maior segurança na edição de registos da BD• Verificar sempre se o utilizador possui as necessárias permissões -> perfisutilizadores• 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 enã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 naBD!• pode optar-se por ter um campo do tipo hidden no formulário paraarmazenar o valor da chave primária• os campos devem aparecer pré-preenchidos com os valores atuais doregisto
  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 downmenus)• 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 tabelaSET campo1 = "valor1", campo2 = valor2WHERE chavePrimária = valorChavePrimária;;$rsUpdate = mysqli->query($query);
  13. 13. Inserções em múltiplas tabelasNo formulário para adicionar um CD queremos permitir escolher uminterprete já existente ou adicionar um novo• no formulário:manter o drop down para escolher um interpreteadicionar um campo de texto para indicar um novo interprete• no script de inserçãoverificar se foi introduzido algo no campo do novo interpretese foi -> verificar se esse interprete já existe na BDse existir -> usar o ID (PK) do interprete já existentese não existir -> inserir novo interprete na tabela “interprete”obter o ID (PK) dessa inserçãose não foi -> utilizar a opção selecionada no dropdown menuinserir o novo CD na tabela “cd”

×