Aprender PHP do Zero - Parte 10

Durante toda essa jornada, você aprendeu a programar em PHP mesmo usando apenas o Android! 🚀

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

Enviar um comentário