1-Banner Dinámico
Creando el Banner Dinámico para un Sitio Web de Hotel
En este post, voy a compartir cómo implementé la sección de banner para el sitio web de un hotel, haciendo que las imágenes sean completamente dinámicas y administrables desde una base de datos.
Estructura de la Base de Datos
Comencé creando una tabla simple en MySQL para almacenar las imágenes del banner:
CREATE TABLE `banner` ( `id` int(11) NOT NULL, `img` text NOT NULL, `fecha` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Esta tabla contiene:
Un ID autoincremental
La ruta de la imagen
La fecha de creación/actualización
Arquitectura MVC
Implementé el patrón Modelo-Vista-Controlador (MVC) para organizar el código:
1. Modelo (ModeloBanner.php)
class ModeloBanner{ static public function mdlMostrarBanner($tabla){ $stmt = Conexion::conectar()->prepare("SELECT * FROM $tabla"); $stmt->execute(); return $stmt->fetchAll(); $stmt->close(); $stmt = null; } }
2. Controlador (ControladorBanner.php)
class ControladorBanner{ static public function ctrMostrarBanner(){ $tabla = "banner"; $respuesta = ModeloBanner::mdlMostrarBanner($tabla); return $respuesta; } }
3. Vista (HTML con Bootstrap)
<div id="carouselBanner" class="carousel slide" data-bs-ride="carousel"> <div class="carousel-inner"> <?php foreach ($banner as $key => $value): ?> <div class="carousel-item <?= $key == 0 ? 'active' : '' ?>"> <img src="<?= $servidor.$value["img"] ?>" class="d-block w-100" alt="Banner"> </div> <?php endforeach; ?> </div> <!-- Controles e indicadores --> <button class="carousel-control-prev" type="button" data-bs-target="#carouselBanner" data-bs-slide="prev"> <span class="carousel-control-prev-icon"></span> </button> <button class="carousel-control-next" type="button" data-bs-target="#carouselBanner" data-bs-slide="next"> <span class="carousel-control-next-icon"></span> </button> <div class="carousel-indicators"> <?php foreach ($banner as $index => $value): ?> <button type="button" data-bs-target="#carouselBanner" data-bs-slide-to="<?= $index ?>" class="<?= $index == 0 ? 'active' : '' ?>"></button> <?php endforeach; ?> </div> </div>
Lecciones Aprendidas
Configuración de rutas: Es crucial configurar correctamente las rutas en el controlador de rutas para que todos los recursos se carguen adecuadamente.
Estructura MVC: Separar la lógica en modelo, vista y controlador hace el código más mantenible y escalable.
Bootstrap Carousel: Utilicé el componente Carousel de Bootstrap 5 para crear un slider responsive con controles e indicadores.
Conexión a BD: Implementé una clase de conexión reutilizable que maneja caracteres UTF-8 para soportar contenido internacional.
Dinamismo: Ahora las imágenes del banner pueden cambiarse simplemente actualizando la base de datos, sin necesidad de modificar el código.
Comentarios
Publicar un comentario