Supongamos que estás desarrollando un blog o una web que necesita meter un sistema para que el usuario pueda puntuar con estrellitas del 1 al 5.

Pues vamos a ver aquí un ejemplo paso a paso en el que lo conseguirás de forma sencilla.

Esto es lo que vamos a hacer:

El objetivo es que tengas un formato base sobre el que trabajar, para adaptarlo a cualquier necesidad especial que tengas.

¿Qué necesitas?

  • Una base de datos MySQL para guardar los votos
  • El código HTML donde salen las estrellas
  • El código PHP para gestionar todo

En la base de datos MySQL crearemos una tabla de votaciones:

CREATE TABLE `votaciones` (
`elemento_votado` int(10) UNSIGNED NOT NULL,
`valoracion` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Basta con ejecutar esta consulta y la tendremos.

También la puedes crear a mano desde phpMyAdmin, por ejemplo.

La cosa es tener una tabla con dos columnas:

  • elemento_votado: Para almacenar la referencia de qué cosa estamos puntuando.
  • valoracion: para almacenar la puntuación.

Perfecto.

Le vamos a meter unos valores de ejemplo, para que veas que esto funciona de verdad.

INSERT INTO `votaciones` (`elemento_votado`, `valoracion`) VALUES (1, 4), (1, 5), (1, 2), (1, 3), (1, 5), (2, 1), (2, 1), (2, 4), (2, 2);
COMMIT;

Y ahora viene la parte más complicada, que no tiene nada de complicado.

Teniendo por un lado los datos, faltará la interfaz para mostrar dichos datos y la lógica de fondo para llevar a cabo las puntuaciones.

La lógica de puntuaciones la realizamos mediante una clase PHP, así tenemos todo profesional y bien hecho.

¿Cómo?

Pues definiendo dicha clase y añadiendo los métodos adecuados.

// Definir la clase Votación
class Votacion{
// Datos de acceso a la base de datos
private $host = 'localhost';
private $usuario = 'usuario_mysql';
private $clave = 'clave_usuario';
private $basededatos = 'base_datos';
public $db;
public function __construct(){
if(!isset($this->db)){
// Conectar a la base de datos
try {
$this->db = new mysqli($this->host, $this->usuario, $this->clave, $this->basededatos);
$this->db->set_charset("utf8");
}catch (Exception $e){
$error = $e->getMessage();
echo $error;
}
}
}
// Método para pillar la puntuación de un elemento
public function obtener_la_puntuacion_de($elemento){
// ...
}
// Método para mostrar las estrellitas
public function mostrar_estrellitas_para($elemento){
// ...
}
// Método para añadir una votación nueva
public function insertar_puntuacion($elemento_votado, $puntuacion){
// ...
}
}

Y faltarían las operaciones a realizar, que ahora añadiremos.

Por último, nos queda la interfaz para mostrar las votaciones y permitir que los usuarios puedan darle a la estrellita para votar.

Pero pegar todo aquí es una locura.

Para eso, he creado un paquete comprimido que contiene todo el código.

Y te lo voy a dejar descargar aquí:

Descargar el código PHP completo bien explicado

Espero que te sea de gran utilidad para tus proyectos.

Saludos makinauta!