Trabalhando com Bancos de Dados em PHP (Parte III) | Criatividade, Tutoriais Photoshop e Templates
Criatividade, Tutoriais Photoshop e Templates > Tutoriais > Trabalhando com Bancos de Dados em PHP (Parte III)
02-05-2012, em Tutoriais, por Diogo Espinha
Depois de termos passado por vários artigos introdutórios ao PHP, e depois de lhe termos apresentado alguns artigos anteriores Como enviar Dados para o Browser com PHP, Como passar informação entre páginas em PHP (Parte I) e Como passar informação entre páginas em PHP (Parte II) vamos-lhe apresentar o artigo Trabalhando com Bancos de Dados em PHP (Parte II) onde iremos continuar a abordar o básico de manuseamento de bancos de dados, como manipular os dados, vários métodos para trabalhar e criar bancos de dados eficientemente e como utilizar os dados guardados nos bancos de dados. Se você se interessa por essa área, não pode perder este e os seguintes artigos onde iremos passo-a-passo ensiná-lo como manusear bancos de dados correctamente e eficientemente. Não perca também os artigos anteriores relacionados com o tema, Trabalhando com Bancos de Dados em PHP (Parte I) e Trabalhando com Bancos de Dados em PHP (Parte II). Os websites da era moderna são incrivelmente poderosos e munidos de funcionalidades que permitem que sejam flexiveis e autónomos, e muita dessa capacidade provém da utilização de bancos de dados onde são guardados dados para utilização posterior.
Agora que já inserimos dados em tabelas, chegou a altura de perceber como é que os dados que inserimos no banco de dados e nas suas tabelas podem ser lidos e utilizados nos scripts e consequentemente apresentar os dados processados no navegador do visitante. Isto é feito através da declaração SELECT, seguida pelo nome da coluna. A declaração em si passa por definir qual a tabela com que vamos trabalhar utilizando o FROM <nome da tabela>. A título de exemplo, você pode obter todos os nomes de albums presentes na tabela albums inserindo o seguinte código na zona de execução de código SQL:
SELECT album_name FROM albums
Como poderá verificar pela imagem, tem à sua disposição opções para editar o conteúdo que obtivemos através da query SQL, desta forma você poderá ter 100% certezas que o conteúdo dentro da tabela em questão está correto, e caso não esteja, pode corrigi-lo imediatamente. Ainda dentro do SELECT, poderá utilizar o WHERE que irá restringir a pesquisa por exemplo a obter albums apenas do artista X. Neste caso vamos obter os albums de Michael Jackson:
SELECT album_name FROM albums WHERE artist_id = 2
E aqui está o album This is It de Michael Jackson. À semelhança do que aconteceu anteriormente, também aqui tem opções de edição do conteúdo obtido!
Irá acontecer que durante um script ou em algum ponto da programação você irá necessitar de alterar o conteúdo de uma entrada no banco de dados, e para isso irá utilizar a declaração UPDATE. Imaginemos que você quer adicionar o ano de lançamento de um album ao nome do album, então iria necessitar de atualizar o campo album_name na tabela albums. Isto é feito da seguinte forma:
UPDATE albums SET album_name = "This it It (2009)" WHERE album_name = "This is It"
Como poderá verificar temos a confirmação que a alteração foi efectuada com sucesso. No entanto, podemos sempre fazer uma consulta ao banco de dados e verificar se realmente a alteração está feita de acordo com o que pretendemos, utilizando o SELECT:
Está confirmada a alteração!
Por vezes você irá necessitar de seleccionar informação a partir de várias tabelas e juntar essa informação. No exemplo que vamos fazer já de seguida, iremos seleccionar o nome do artista e os seus albums, e estas informações estão em tabelas diferentes. Uma das opções é efectuar duas consultas ao banco de dados para obter os dados:
SELECT artist_name FROM artistas WHERE artist_id = 2;
SELECT album_name FROM albums WHERE artist_id = 2;
Ou em alternativa poderemos utilizar a declaração JOIN para seleccionar a partir das duas tabelas ao mesmo tempo. Para isso, siga o exemplo abaixo:
SELECT artist_name, album_name FROM artistas JOIN albums USING (artist_id) WHERE artist_id = 2;
Como poderá verificar pela imagem, a consulta ao banco de dados foi efectuada com sucesso. Embora este processo possa à primeira vista parecer complicado, ele não é assim tão complicado. O primeiro passo na nossa consulta utilizando o JOIN é definir quais os campos que quer obter com a consulta, que neste caso foram artist_name e album_name. De seguida definimos qual a tabela a trabalhar, neste caso artists. Neste momento poderá estar a questionar-se porquê utilizar a tabela artists se o campo album_name nao está nessa tabela? É aqui que entra o JOIN e inclui uma nova tabela na consulta, neste caso a tabela albums.
Neste caso particular iremos ter 2 tabelas juntas em uma só, temporariamente. Isto permite que a pesquisa seja efectuada sem erros e que consiga obter 2 campos de tabelas diferentes com uma só consulta. Há que salientar que é necessário fazer uma junção entre as tabelas, e neste caso isso foi feito utilizando o campo artist_id que existe em ambas as tabelas. Lendo a consulta JOIN albums USING (artist_id) , juntar a tabela albums utilizando o campo artist_id. Descomplicou!
A declaração DELETE é bastante simples de se compreender e consequentemente utilizar. Por vezes será necessário você remover entradas no seu banco de dados, ou por estarem erradas, ou por não serem mais necessárias, ou porque simplesmente não as quer lá. Então isso é feito através da declaração DELETE – veja um exemplo abaixo:
DELETE FROM albums WHERE album_name = "This it It (2009)" LIMIT 1
fazendo uma consulta podemos verificar que o album This is It de Michael Jackson já não se encontra na tabela albums:
A declaração DELETE começa com o DELETE FROM que define qual vai ser a tabela que vai sofrer a alteração, neste caso a tabela albums, e de seguida define o WHERE que vai determinar qual o campo a ser apagado. Neste caso apagámos o album This is It (2009) de Michael Jackson, e há que deixar uma nota extremamente importante que poderá salvaguardar o seu trabalho no futuro – no final da declaração está presente o LIMIT 1 que faz com que seja possivel apenas apagar 1 registo, evitando assim que acidentalmente apague toda uma tabela, irá ser apagado apenas um registo mesmo que haja correspondência com mais do que um registo.
Depois de escrever a consulta, o phpMyadmin irá através de uma popup box perguntar-lhe se quer realmente efectuar a operação e apagar a entrada e este é o ultimo passo entre apagar ou não apagar, portanto aconselho sempre a rever a sua consulta e só se tiver a certeza do que está a apagar, então avance e finalize a operação.