📝 Contenido:
En este tutorial aprenderás a crear un sistema de votación tipo “me gusta / no me gusta” en PHP y MySQL, sin frameworks. Es ideal para sitios web donde los usuarios pueden valorar contenido como publicaciones, productos o artículos.
🗂️ Estructura de Archivos:
/votacion
├── conexion.php
├── index.php
├── votar.php
└── tabla.sql
🧱 Paso 1: Crear la base de datos
tabla.sql
:
CREATE TABLE contenidos (
id INT AUTO_INCREMENT PRIMARY KEY,
titulo VARCHAR(100),
me_gusta INT DEFAULT 0,
no_me_gusta INT DEFAULT 0
);
INSERT INTO contenidos (titulo) VALUES ('Artículo 1'), ('Artículo 2');
🔗 Paso 2: Conexión a la base de datos
conexion.php
:
<?php
$conexion = new mysqli("localhost", "root", "", "votacion");
if ($conexion->connect_error) {
die("Conexión fallida: " . $conexion->connect_error);
}
?>
📄 Paso 3: Página principal
index.php
:
<?php include 'conexion.php'; ?>
<h2>Votación "Me gusta / No me gusta"</h2>
<?php
$resultado = $conexion->query("SELECT * FROM contenidos");
while ($fila = $resultado->fetch_assoc()) {
echo "<h3>{$fila['titulo']}</h3>";
echo "<form action='votar.php' method='POST'>";
echo "<input type='hidden' name='id' value='{$fila['id']}'>";
echo "<button name='accion' value='like'>👍 Me gusta ({$fila['me_gusta']})</button>";
echo "<button name='accion' value='dislike'>👎 No me gusta ({$fila['no_me_gusta']})</button>";
echo "</form><hr>";
}
?>
✅ Paso 4: Procesar votos
votar.php
:
<?php
include 'conexion.php';
$id = (int)$_POST['id'];
$accion = $_POST['accion'];
if ($accion === 'like') {
$conexion->query("UPDATE contenidos SET me_gusta = me_gusta + 1 WHERE id = $id");
} elseif ($accion === 'dislike') {
$conexion->query("UPDATE contenidos SET no_me_gusta = no_me_gusta + 1 WHERE id = $id");
}
header("Location: index.php");
?>
🧠 Consideraciones:
- Se puede mejorar con sistema de sesiones o IP para evitar votos múltiples.
- También puedes agregar AJAX para evitar recargar la página.
- Funciona perfectamente en PHP puro sin frameworks.