• +34 685 967 885
  • +34 695 898 191
  • antgarprats@gmail.com
  • Antonio García Prats

sistema de reseñas con php

Sistema de reseñas con PHP

Un sistema de reseñas con php es una funcionalidad que permite a los usuarios expresar su opinión sobre productos, servicios o cualquier tipo de contenido en un sitio web. Los usuarios suelen calificar algo mediante un sistema de puntuación (por ejemplo, estrellas de 1 a 5) y añadir comentarios escritos.

El objetivo principal de incluir un sistema de reseñas con php en un sitio web es mejorar la interacción de los usuarios con la plataforma, construir confianza y recopilar datos útiles para mejorar productos o servicios. Además, las reseñas son un factor clave para la toma de decisiones de otros usuarios.

Un sistema de reseñas se basa en:

1. Interfaz de usuario: Para que los usuarios puedan calificar y escribir su opinión.

2. Base de Datos: Para almacenar las reseñas.

3. Lógica de Servidor: Para procesar, guardar y mostrar las reseñas.

4. Seguridad: Para evitar abusos como spam.

La arquitectura básica:

-Frontend: La interfaz con HTML, CSS (en este caso, Bootstrap para diseño profesional) y JavaScript.

-Backend: Lógica de PHP para manejar las solicitudes.

-Base de Datos: MySQL para almacenar las reseñas.

Código Completo del Sistema de Reseñas

A continuación, te proporciono un sistema de reseñas básico y funcional.

1. Estructura de Base de Datos

Primero, crea la base de datos y la tabla:

CREATE DATABASE sistema_resenas;

USE sistema_resenas;

CREATE TABLE resenas (
    id INT AUTO_INCREMENT PRIMARY KEY,
    usuario VARCHAR(255) NOT NULL,
    calificacion INT NOT NULL,
    comentario TEXT NOT NULL,
    fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2. Formulario HTML y Estilo con Bootstrap

Archivo: index.php

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Sistema de Reseñas</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
    <div class="container mt-5">
        <h1 class="text-center">Sistema de Reseñas</h1>
        
        <!-- Formulario para agregar reseñas -->
        <form action="procesar_resena.php" method="POST" class="mt-4">
            <div class="mb-3">
                <label for="usuario" class="form-label">Nombre:</label>
                <input type="text" id="usuario" name="usuario" class="form-control" required>
            </div>
            <div class="mb-3">
                <label for="calificacion" class="form-label">Calificación (1 a 5):</label>
                <input type="number" id="calificacion" name="calificacion" class="form-control" min="1" max="5" required>
            </div>
            <div class="mb-3">
                <label for="comentario" class="form-label">Comentario:</label>
                <textarea id="comentario" name="comentario" class="form-control" rows="4" required></textarea>
            </div>
            <button type="submit" class="btn btn-primary">Enviar Reseña</button>
        </form>
        
        <!-- Mostrar las reseñas -->
        <div class="mt-5">
            <h2>Reseñas:</h2>
            <?php
            $conn = new mysqli('localhost', 'root', '', 'sistema_resenas');
            if ($conn->connect_error) {
                die("Error de conexión: " . $conn->connect_error);
            }

            $sql = "SELECT * FROM resenas ORDER BY fecha DESC";
            $result = $conn->query($sql);

            if ($result->num_rows > 0) {
                while ($row = $result->fetch_assoc()) {
                    echo "<div class='card mb-3'>
                            <div class='card-body'>
                                <h5 class='card-title'>Usuario: " . htmlspecialchars($row['usuario']) . "</h5>
                                <p class='card-text'>Calificación: " . $row['calificacion'] . " / 5</p>
                                <p class='card-text'>" . htmlspecialchars($row['comentario']) . "</p>
                                <p class='text-muted'>Fecha: " . $row['fecha'] . "</p>
                            </div>
                          </div>";
                }
            } else {
                echo "<p>No hay reseñas aún.</p>";
            }

            $conn->close();
            ?>
        </div>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

3. Lógica para Procesar y Guardar las Reseñas

Archivo: procesar_resena.php

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $usuario = $_POST['usuario'];
    $calificacion = $_POST['calificacion'];
    $comentario = $_POST['comentario'];

    $conn = new mysqli('localhost', 'root', '', 'sistema_resenas');
    if ($conn->connect_error) {
        die("Error de conexión: " . $conn->connect_error);
    }

    $stmt = $conn->prepare("INSERT INTO resenas (usuario, calificacion, comentario) VALUES (?, ?, ?)");
    $stmt->bind_param("sis", $usuario, $calificacion, $comentario);

    if ($stmt->execute()) {
        header("Location: index.php?success=1");
    } else {
        echo "Error: " . $stmt->error;
    }

    $stmt->close();
    $conn->close();
} else {
    header("Location: index.php");
}
?>

Explicación Línea a Línea

1. Base de Datos

  • CREATE TABLE resenas: Define una tabla para almacenar las reseñas.
  • id: Clave primaria para identificar cada reseña.
  • usuario: Almacena el nombre del usuario.
  • calificacion: Puntuación dada por el usuario.
  • comentario: Texto de la reseña.
  • fecha: Marca temporal automática.

2. HTML y Bootstrap

  • form action="procesar_resena.php": Envia los datos del formulario al script PHP.
  • name="...": Atributo usado para acceder a los datos en PHP.
  • class="form-control": Estilo de Bootstrap para formularios.

3. PHP para Guardar Reseñas

  • $_POST: Recoge los datos enviados por el formulario.
  • mysqli: Conecta con la base de datos.
  • prepare(): Protege contra ataques SQL Injection.
  • bind_param(): Asocia los valores a la consulta SQL.

4. Mostrar Reseñas

  • SELECT * FROM resenas: Recupera todas las reseñas.
  • htmlspecialchars(): Escapa caracteres especiales para evitar ataques XSS.

Este sistema está listo para integrarse y ser utilizado en tu sitio web. Solo asegúrate de ajustar los valores de conexión a la base de datos según tu configuración.

Si estás interesado en tener tu propio sistema de reseñas personalizado, no dudes en contactar conmigo a través de mi sitio web: antoniogarciaprats.es.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *