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!