SlideShare uma empresa Scribd logo
PHP + MySQL: insert, update e delete
Carlos Santos
LabMM 4 - NTC - DeCA - UA
Aula 21, 15-05-2013
Inserção complexa
Como inserir um novo CD na seguinte BD?
Formulário de inserção
Possí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
E os estilos a associar ao CD?
• relação de muitos para muitos
• na introdução o utilizador pode querer introduzir vários estilos
Formulário de inserção
Possí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
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 elemento
check 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 nas
checkboxes do formulário
• mais info: http://www.html-form-guide.com/php-form/php-form-
checkbox.html
Na inserção em PHP
Para 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 cada
uma das checkboxes selecionadas pelo utilizador no formulário
Remover registos
A remoção de um registo não pode violar as regras de integridade
referencial 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…)
Remover registos
Remoção de registos com a passagem de parâmetro/valor na Query
String
• 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?
Remover registos
apagar_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 = mysqli->query($query);
//Feedback final
Editar registos
Ediçã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ção
Para 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
Editar registos
O que é que tem de mudar entre um formulário para adicionar um registo
e 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 pré-preenchidos com os valores atuais do
registo
Formulário
Passos 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 = mysqli->query($query);
Inserções em múltiplas tabelas
No formulário para adicionar um CD queremos permitir escolher um
interprete 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”

Mais conteúdo relacionado

PDF
PHP MySQL Aula 04
PDF
Aplicativos II - MySQL_part1
PPTX
Workshop Totvs Report
PPTX
TOTVS LINHA RM TREINAMENTO SQL
DOCX
Teclas de atalho do windows 8
PDF
Sql com sql server básico - Bóson treinamentos
PDF
Computador ,Você Conhece
PPTX
Hands on Labs - SQL Server 2008
PHP MySQL Aula 04
Aplicativos II - MySQL_part1
Workshop Totvs Report
TOTVS LINHA RM TREINAMENTO SQL
Teclas de atalho do windows 8
Sql com sql server básico - Bóson treinamentos
Computador ,Você Conhece
Hands on Labs - SQL Server 2008

Mais procurados (14)

PDF
Teclas de-atalho-access
DOCX
Principais atalhos do windows
PDF
PDF
Teclas de atalho
DOCX
Teclas de atalho para o microsoft word
DOCX
Atalhos de teclado
PDF
Teclas de atalho
PPTX
Workshop totvs report
PPTX
Curso de PostgreSQL: Um pouco Além dos Comandos
PDF
Aula 05 banco de dados em asp.net (site do administrador - alterar e excluir)
PPTX
Criando um banco de dados com MySQL Workbench
PPTX
Norato Framework
PDF
Etec ai -32- teclas de atalho
PDF
Formulários para Plone: um passeio pelo framework z3c.form
Teclas de-atalho-access
Principais atalhos do windows
Teclas de atalho
Teclas de atalho para o microsoft word
Atalhos de teclado
Teclas de atalho
Workshop totvs report
Curso de PostgreSQL: Um pouco Além dos Comandos
Aula 05 banco de dados em asp.net (site do administrador - alterar e excluir)
Criando um banco de dados com MySQL Workbench
Norato Framework
Etec ai -32- teclas de atalho
Formulários para Plone: um passeio pelo framework z3c.form
Anúncio

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

PDF
LabMM4 (T18 - 12/13) - Navegação e insert
PDF
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
ODP
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...
PDF
LabMM4 (T16 - 12/13) - PHP + MySQL
PDF
PHP MySQL Aula 07
PPTX
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
PDF
Aula 01 PHP+MySQL - LabMM4
PDF
PHP MySQL Aula 03
PDF
Apontamentos psi m18
PDF
Apresentação formação web - up marketing digital - módulo ii - 2º fds
PDF
LabMM4 (T22 - 12/13) - segurança
PPTX
Banco de dadados MySQL com PHP
PDF
Aprender PHP e mySQL (UFCD0155)
PPTX
MySQL - Instalação e Alguns comandos de Banco de Dados
ODP
Oficina WEB Design Lecom - PHP e MySQL
PDF
Apostila PhP com Wamp 3a Parte
PDF
PHP e Mysql - INSERT
PDF
PHP e Mysql - INSERT
PDF
Aula 09 - PHP e formularios em HffffffffffTML.pdf
LabMM4 (T18 - 12/13) - Navegação e insert
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...
LabMM4 (T16 - 12/13) - PHP + MySQL
PHP MySQL Aula 07
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 01 PHP+MySQL - LabMM4
PHP MySQL Aula 03
Apontamentos psi m18
Apresentação formação web - up marketing digital - módulo ii - 2º fds
LabMM4 (T22 - 12/13) - segurança
Banco de dadados MySQL com PHP
Aprender PHP e mySQL (UFCD0155)
MySQL - Instalação e Alguns comandos de Banco de Dados
Oficina WEB Design Lecom - PHP e MySQL
Apostila PhP com Wamp 3a Parte
PHP e Mysql - INSERT
PHP e Mysql - INSERT
Aula 09 - PHP e formularios em HffffffffffTML.pdf
Anúncio

Mais de Carlos Santos (20)

PDF
Modelo de CBL transversal ao 1º ano do ciclo de estudos do Mestrado em Comuni...
PPTX
Dataficação no Ensino Superior: Reflexões sobre Ética, Impacto e Transformaç...
PPTX
Dataficação no Ensino Superior: Reflexões sobre Ética, Impacto e Transformaç...
PDF
Is AI the Spice of our future?
PPTX
Mentoria entre pares de estudantes para estudantes
PDF
1º Encontro Científico TCEdu
PDF
Tecnologias da Comunicação em Educação 2018: Aula inicial
PPTX
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
PDF
AVILA Crew – Uma experiência de tutoria de alunos para alunos
PDF
chmod 777 education
PPTX
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
PDF
Tecnologias da Comunicação em Educação: trabalho prático
PPTX
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
PDF
chmod 777 education
PDF
SAPO Campus towards a
 Smart Learning Environment
PDF
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
PDF
A technological approach to Open and Social Learning: 
the SAPO Campus project
PDF
SAPO Campus: Gamification em contexto educativo
PDF
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
PDF
T20_LM3: APIs e Scoreoid
Modelo de CBL transversal ao 1º ano do ciclo de estudos do Mestrado em Comuni...
Dataficação no Ensino Superior: Reflexões sobre Ética, Impacto e Transformaç...
Dataficação no Ensino Superior: Reflexões sobre Ética, Impacto e Transformaç...
Is AI the Spice of our future?
Mentoria entre pares de estudantes para estudantes
1º Encontro Científico TCEdu
Tecnologias da Comunicação em Educação 2018: Aula inicial
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunos
chmod 777 education
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Tecnologias da Comunicação em Educação: trabalho prático
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
chmod 777 education
SAPO Campus towards a
 Smart Learning Environment
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
A technological approach to Open and Social Learning: 
the SAPO Campus project
SAPO Campus: Gamification em contexto educativo
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
T20_LM3: APIs e Scoreoid

Último (20)

PDF
DOENÇAS SEXUALMENTE TRANSMISSIVEIS E SUAS POLARIDADES
DOC
PPP 2024 (2) (2) feito EM REELABORAÇÃO MORENA ( ABRIL 2024).doc
PPSX
A epistemologia de Wilheim G Leibniz.ppsx
PDF
[Slides] A Literatura no ENEM 2017 (1).pdf
PPTX
norma regulamentadora numero vinte nr 20
PPTX
QuestõesENEMVESTIBULARPARAESTUDOSEAPRENDIZADO.pptx
PPT
HISTOLOGIA VEGETAL - tecidos vegetais.ppt
PDF
Combate a Incêndio - Hidrantes,Mangotinhos, Mangueiras de Incêndio, Acessóri...
PPTX
Pedagogia em Ambientes Não Escolares.pptx
PDF
Um dia na casa do Mensageiro (que a paz e benção de Deus estejam com ele)
PDF
A provisão de jojuador (ramadã) islamismo
PDF
manual-orientacao-asb_5a8d6d8d87160aa636f63a5d0.pdf
PPTX
16. MODERNISMO - PRIMEIRA GERAÇÃO - EDIÇÃO 2021 (1).pptx
PDF
Ebook - Matemática_Ensino_Médio_Saeb_V1.pdf
PDF
edital-de-chamamento-publico-no-3-2025.pdf
PDF
ESPELHOS DA ALMA A PSICOLOGIA POR TRÁS DOS CONTOS DE FADAS.pdf
PPTX
Biologia celular: citologia, é o estudo da célula, a unidade básica da vida.
PDF
EXPRESSÕES IDIOMÁTICAS - LÍNGUA PORTUGUESA
PPTX
TREINAMENTO DE INSPETOR DE ANDAIMES.pptx
PDF
O retorno a origem (islã Islamismo)
DOENÇAS SEXUALMENTE TRANSMISSIVEIS E SUAS POLARIDADES
PPP 2024 (2) (2) feito EM REELABORAÇÃO MORENA ( ABRIL 2024).doc
A epistemologia de Wilheim G Leibniz.ppsx
[Slides] A Literatura no ENEM 2017 (1).pdf
norma regulamentadora numero vinte nr 20
QuestõesENEMVESTIBULARPARAESTUDOSEAPRENDIZADO.pptx
HISTOLOGIA VEGETAL - tecidos vegetais.ppt
Combate a Incêndio - Hidrantes,Mangotinhos, Mangueiras de Incêndio, Acessóri...
Pedagogia em Ambientes Não Escolares.pptx
Um dia na casa do Mensageiro (que a paz e benção de Deus estejam com ele)
A provisão de jojuador (ramadã) islamismo
manual-orientacao-asb_5a8d6d8d87160aa636f63a5d0.pdf
16. MODERNISMO - PRIMEIRA GERAÇÃO - EDIÇÃO 2021 (1).pptx
Ebook - Matemática_Ensino_Médio_Saeb_V1.pdf
edital-de-chamamento-publico-no-3-2025.pdf
ESPELHOS DA ALMA A PSICOLOGIA POR TRÁS DOS CONTOS DE FADAS.pdf
Biologia celular: citologia, é o estudo da célula, a unidade básica da vida.
EXPRESSÕES IDIOMÁTICAS - LÍNGUA PORTUGUESA
TREINAMENTO DE INSPETOR DE ANDAIMES.pptx
O retorno a origem (islã Islamismo)

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

  • 1. PHP + MySQL: insert, update e delete Carlos Santos LabMM 4 - NTC - DeCA - UA Aula 21, 15-05-2013
  • 2. Inserção complexa Como inserir um novo CD na seguinte BD?
  • 3. Formulário de inserção Possí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 E os estilos a associar ao CD? • relação de muitos para muitos • na introdução o utilizador pode querer introduzir vários estilos
  • 4. Formulário de inserção Possí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. 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 elemento check 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 nas checkboxes do formulário • mais info: http://www.html-form-guide.com/php-form/php-form- checkbox.html
  • 6. Na inserção em PHP Para 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 cada uma das checkboxes selecionadas pelo utilizador no formulário
  • 7. Remover registos A remoção de um registo não pode violar as regras de integridade referencial 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. Remover registos Remoção de registos com a passagem de parâmetro/valor na Query String • 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. Remover registos apagar_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 = mysqli->query($query); //Feedback final
  • 10. Editar registos Ediçã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ção Para 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. Editar registos O que é que tem de mudar entre um formulário para adicionar um registo e 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 pré-preenchidos com os valores atuais do registo
  • 12. Formulário Passos 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 = mysqli->query($query);
  • 13. Inserções em múltiplas tabelas No formulário para adicionar um CD queremos permitir escolher um interprete 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”