📘️ Aprender PHP do Zero — Parte 10: Curtidas, Edição, Exclusão e Filtros por Categoria
✨ (Esta é a última parte da série... por enquanto!)
📚 Revisão das Partes 1 a 9
Durante toda essa jornada, você aprendeu a programar em PHP mesmo usando apenas o Android! 🚀
- Parte 1: O que é PHP e como ele funciona
- Parte 2: Variáveis, operadores e funções
- Parte 3: Conectando com banco de dados MySQL
- Parte 4: Sistema de login e sessão
- Parte 5: Painel administrativo com cadastro e listagem
- Parte 6: Edição, exclusão e UPDATE seguro
- Parte 7: Upload de imagem e foto de perfil
- Parte 8: Atualizar imagem e exibir avatar do usuário
- Parte 9: Sistema de comentários vinculado a posts
Agora na Parte 10: Vamos combinar tudo isso e levar ao próximo nível com funcionalidades reais de redes sociais:
🔥 O que você vai aprender nesta parte
- 👍 Curtidas (likes) por post
- ✏️ Editar e excluir posts/comentários
- 💼 Sistema de categorias e filtros
- ❌ Proteção com login (segurança)
- 📱 Totalmente funcional no Android com Acode, Palapa e Termux
📊 1. Estrutura de Tabelas no Banco de Dados
Adicione essas tabelas ao seu MySQL/MariaDB:
CREATE TABLE categorias (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(50)
);CREATE TABLE curtidas ( id INT AUTO_INCREMENT PRIMARY KEY, usuario_id INT, post_id INT, UNIQUE(usuario_id, post_id) );
ALTER TABLE posts ADD categoria_id INT;
📅 2. Cadastro e Seleção de Categorias
form_categoria.html:
<form method="POST" action="criar_categoria.php">
Nome da categoria: <input name="nome"><br>
<input type="submit" value="Criar categoria">
</form>
criar_categoria.php:
<?php
require "conexao.php";
$nome = $_POST["nome"];
$stmt = $conn->prepare("INSERT INTO categorias (nome) VALUES (?)");
$stmt->bind_param("s", $nome);
$stmt->execute();
echo "Categoria criada!";
?>
✍️ 3. Criar Posts com Categoria
form_post.html:
<form method="POST" action="criar_post.php">
Título: <input name="titulo"><br>
Conteúdo:<br><textarea name="conteudo"></textarea><br>
Categoria:
<select name="categoria">
<?php
require "conexao.php";
$res = $conn->query("SELECT * FROM categorias");
while ($c = $res->fetch_assoc()) {
echo "<option value='{$c['id']}'>{$c['nome']}</option>";
}
?>
</select><br>
<input type="submit" value="Publicar">
</form>
criar_post.php:
<?php
session_start();
require "conexao.php";
$titulo = $_POST["titulo"];
$conteudo = $_POST["conteudo"];
$categoria = $_POST["categoria"];
$autor = $_SESSION["usuario_id"];
$stmt = $conn->prepare("INSERT INTO posts (usuario_id, titulo, conteudo, categoria_id) VALUES (?, ?, ?, ?)");
$stmt->bind_param("issi", $autor, $titulo, $conteudo, $categoria);
$stmt->execute();
header("Location: painel.php");
?>
📃 4. Listagem e Filtro por Categoria
filtro.php:
<?php
require "conexao.php";
$res = $conn->query("SELECT * FROM categorias");
echo "<h3>Filtrar por categoria:</h3>";
while ($c = $res->fetch_assoc()) {
echo "<a href='painel.php?cat={$c['id']}'>{$c['nome']}</a><br>";
}
?>
👍 5. Curtir Posts
like_post.php:
<?php
session_start();
require "conexao.php";
$uid = $_SESSION["usuario_id"];
$pid = $_POST["post_id"];
$conn->query("INSERT IGNORE INTO curtidas (usuario_id, post_id) VALUES ($uid, $pid)");
header("Location: ver_post.php?id=$pid");
?>
No ver_post.php:
<?php
if (isset($_SESSION["usuario_id"])) {
$uid = $_SESSION["usuario_id"];
$pid = $post_id;
$checa = $conn->query("SELECT * FROM curtidas WHERE usuario_id=$uid AND post_id=$pid");
if ($checa->num_rows == 0) {
echo "<form method='POST' action='like_post.php'>
<input type='hidden' name='post_id' value='$pid'>
<input type='submit' value='Curtir 👍'>
</form>";
} else {
echo "<p>Você já curtiu 👍</p>";
}
}
$likes = $conn->query("SELECT COUNT(*) AS total FROM curtidas WHERE post_id = $post_id");
$l = $likes->fetch_assoc();
echo "<p>👍 Curtidas: {$l['total']}</p>";
?>
✏️ 6. Editar e Excluir Posts
Adicione botões "Editar" e "Excluir" no painel para o dono do post:
<?php
if ($_SESSION["usuario_id"] == $p["usuario_id"]) {
echo "<a href='editar_post.php?id={$p['id']}'>Editar</a> |
<a href='apagar_post.php?id={$p['id']}'>Excluir</a>";
}
?>
editar_post.php e salvar_edicao.php vão permitir atualizar apenas se for o autor.
🚪 7. Conclusão Final da Série
Agora você domina:
- Banco de dados, CRUD, login e upload
- Posts, comentários, curtidas e avatar
- Categorias, filtros e edição segura
- Rodar tudo localmente no Android
🗳️ E agora?
Esta foi a última parte desta temporada!
Mas você pode ajudar a criar a Parte 11 →
💬 O que você gostaria de ver na Parte 11?
- 🛒 Sistema de loja e carrinho?
- 💳 Integração com PayPal, Stripe, M-Pesa?
- 📊 Gráficos e relatórios?
- 📧 Envio de e-mails?
- 📲 APIs com PHP e apps Android?
✉️ Comente abaixo! A sua sugestão pode virar a próxima aula!