Este projeto demonstra a integração completa de Upload de Arquivos, Programação Orientada a Objetos (POO) e persistência de dados com o PDO (PHP Data Objects), o padrão de segurança para interagir com bancos de dados em PHP.
- PDO e SQLite: O projeto usa o PDO para se conectar a um banco de dados SQLite (que é um arquivo único, perfeito para desenvolvimento). Isso ensina o uso de Statements Preparados (melhor segurança contra SQL Injection).
- POO: Duas classes são usadas para organizar a lógica:
Database.php: Gerencia a conexão e a inicialização da tabela.GalleryManager.php: Gerencia a lógica de upload de arquivo e as operações de INSERT/SELECT no banco.
- Upload e Metadados: Salva o arquivo da imagem no sistema de arquivos e o título/descrição/caminho no banco de dados.
- Frontend: Exibe a galeria buscando os metadados do banco via AJAX (fetch GET).
- Backend: PHP 7.4+ (POO, PDO, Manipulação de Arquivos).
- Banco de Dados: SQLite (via PDO).
- Frontend: HTML5, JavaScript Vanilla,
fetchAPI e Tailwind CSS.
php-pdo-gallery/
├── index.html
├── api.php
├── Database.php
├── GalleryManager.php
├── README.md
├── .gitignore
├── 📁 uploads/
└── gallery.sqlite
- Um ambiente de servidor web com PHP.
- A extensão PDO SQLite precisa estar habilitada no seu
php.ini(geralmenteextension=pdo_sqliteouextension=php_pdo_sqlite.dll).
-
Crie a estrutura de pastas.
-
Crie a pasta de uploads:
mkdir src/uploads -
Defina as permissões: Garanta que a pasta
src/uploadse a pastasrc/(onde o arquivogallery.sqliteserá criado) tenham permissão de escrita para o usuário do servidor web (ex:chmod 777 src/uploads/echmod 777 src/).O arquivo
gallery.sqliteserá criado automaticamente na primeira vez que você carregar a página, graças à lógica noDatabase.php.
Utilize o servidor embutido do PHP para testes (a partir da raiz do projeto):
php -S localhost:80011. Acesse a aplicação no navegador. 2. Preencha o Título e a Descrição. 3. Selecione uma imagem (JPG, PNG ou GIF). 4. Clique em "Fazer Upload" (POST). 5. O PHP: Salvará o arquivo na pasta src/uploads/. Inserirá os metadados na tabela images do arquivo src/gallery.sqlite. 6. A galeria recarregará (fetch GET) e exibirá a nova imagem, com seus metadados vindo do banco de dados. Você pode inspecionar o arquivo gallery.sqlite com ferramentas como DB Browser for SQLite para ver a tabela images e seus dados.
Contribuições são sempre bem-vindas!
Sinta-se à vontade para abrir uma issue com sugestões ou enviar um pull request com melhorias.
📧 Entre em contato pelo LinkedIn
💻 Desenvolvido por Onivaldo Miquelino