đ️ 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!
