No artigo de hoje, desenvolveremos a página deleta_foto.php, que tem a finalidade de excluir a referência da foto no banco de dados e eliminá-la do diretório: fotos, responsável pelo armazenamento das fotos do sistema.
Relação dos artigos desta série:
- Sistema de publicação de fotos com comentários (sugestões)
- Sistema de publicação de fotos com comentários (planejamento)
- Sistema de publicação de fotos com comentários (postar fotos)
- Sistema de publicação de fotos com comentários (alterar dados e foto)
Neste artigo também finalizaremos as páginas da área administrativa que trabalharão com as fotos. Vamos lá.
Iniciaremos abrindo ou criando a páginadeleta_foto.php da área administrativa. Com ela aberta ou criada, vamos criar um Recordset que conterá os dados do registro que será excluído do banco de dados e a referência da imagem que precisamos deletar no diretório fotos.
Para tal, siga este caminho: Painel Application > Bindings (Ctrl + F10); clique no botão de mais (+) e em seguida na opção: Recordset (Query); como exemplificado na imagem abaixo:
Após esse percurso, teremos o painel: Recordset, e o configuraremos como mostrado na imagem abaixo:

Explicando:
Name: o nome do nosso recordset (rsDeletaDadosFoto). Dica: utilize o prefixo: rs. Para uma melhor identificação de tudo que se trata do recordset.
Connection: escolha a conexão que criamos (connSisFotos) no artigo anterior a esse.
Table: tabela (fotos) onde se localiza os dados.
Columns: resgataremos todas as colunas da tabela.
Filter: Para termos os dados específico do registro em questão, precisamos filtrar nosso Recordset, então, vamos filtrá-lo pela coluna: foto_id, pois nela está armazenado a identificação única de cada registro; dizemos que a coluna (foto_id) precisa ser igual (=) a variável de URL foto_id. O que significa dizer, que o registro a ser exibido será aquele em que, um identificador na URL seja idêntico ao localizado na coluna foto_id.
Agora faremos uma pergunta ao administrador do sistema, tipo: Confirma a exclusão da foto: xxx? Caso, ele realmente deseja excluir os dados e a foto, basta clicar no botão (Sim) de confirmação. Além desse botão no formulário, teremos um campo do tipo hidden que armazenará a identificação (id) do registro no banco de dados.
Veja um print parcial da página no Dreamweaver:

Vamos desenvolver este formulário como mostrado na imagem acima. Primeiro a pergunta, para criá-la, basta arrastar o campo foto_titulo da tabela fotos no painel Bindings Ctrl + F10. O resultado será como o código abaixo:
Confirma a exclusão da foto: <?php echo $row_rsDeletaDadosFoto["foto_titulo"]; ?>?
Após, crie um formulário na página. Para criá-lo, vá até a aba Forms e clique na primeira opção da esquerda para a direita. Em seguida, insira um button, 12º opção da esquerda para a direita, e configure-o como exemplificado na imagem abaixo:

Insira um campo do tipo hidden, terceria opção da esquerda para a direita, e o configure como mostrado abaixo:

Para setar o value como exibido acima, proceda assim: clique botão Bind To Dynamic Source (o raiozinho) e selecione o campo foto_id do recordset (rsDeletaDadosFoto) que criamos. Veja a imagem de exemplo:

Esse campo do tipo hidden, tem duas funções; garantir que deletamos o registro correto e nos possibilita excluir o registro mediante uma confirmação.
Agora configuraremos o behavior Delete Record. Ele está disponível na aba Application, sendo a décima opção da esquerda para a direita, veja a imagem com sua localização:
Ao clicar na opção, teremos o painel Delete Record, veja ele configurado na imagem abaixo:

Explicando:
First check if variable is defined - Essa opção que nos possibilita desenvolvermos a confirmação da exclusão. Pois, o behavior (Delete Record) somente será executado se a variável foto_id existir. E como a definimos como uma variável do tipo Form Variable, sua existência é ocasionada quando o formulário é submetido, ou seja, quando o usuáiro clicar no botão Sim.
Connection - Nossa conexão (connSisFotos) ao banco de dados.
Table - Tabela (fotos) que armazena o registro que gostaríamos de deletá-lo.
Primary key column - Campo da tabela (foto_id) que armazena a chave primária da tabela.
Primary key value - Variável (foto_id) do tipo Form Variable, que contém o identificador idêntico ao armazenado no campo foto_id da tabela. Este valor é armazenado no campo do tipo hidden que criamos.
After deleting, go to: Página (index.php) que virá após a exclusão do registro.
Bom, até este momento, já deletamos o registro no banco de dados, agora, precisamos incrementar o script gerado pelo Dreamweaver para excluirmos a foto do diretório: fotos. Para realizar tal incrementação, vamos proceder assim:
1º - Passar o código do Recordset - rsDeletaDadosFoto, para cima do script de Delete Record. Observe:

2º - Agora, localize esta parte do script, veja:

E após esses códigos, acrescentaremos uma variável - $nomeFoto, que armazenará o nome da foto que desejamos excluir e a função unlink que apaga um arquivo. Veja o código incrementado:

Nota - A função unlink necessita apenas que digamos a ela o nome do arquivo, que o restante ela faz (deletar o arquivo), mas no exemplo acima, além do nome do arquivo, adicionei também o diretório (../fotos/) em que ele (arquivo) se localiza.
Pronto. Finalizamos o desenvolvimento de mais uma página.
Dica: Acrescente um botão ou link para o cancelamento da exclusão, assim, quando o administrador clicar no botão/link ele será redirecionado para a página inicial do admin por exemplo.
Aqui está a página completa: deleta_foto.html
É isso aí pessoal, espero que tenham gostado. Um abraço e até o próximo.











15 Comentários
Qual a sua opinião?