Catálogo de películas en PHP [SOLUCIONADO]

Construir un **catálogo de películas** utilizando **PHP** es una de las prácticas más habituales y educativas que los desarrolladores web pueden afrontar, ya sea para aprender o para crear una base de datos real. Primeramente, es crucial tener conocimiento sobre la estructura básica de una aplicación web, además de la configuración de un servidor local que soporte PHP y una base de datos MySQL.

### Implementación de un sistema básico de catálogo
Para iniciar, hay que establecer la conexión con la base de datos. Una buena práctica es externalizar el código de conexión para incluirlo cuando sea necesario, así pues, se crea un fichero `conexion.php`.

<?php
$servidor = "localhost";
$usuario = "root";
$contraseña = "";
$base_de_datos = "catalogo_peliculas";

$con = new mysqli($servedor, $usuario, $contraseña, $base_de_datos);

if ($con->connect_error) {
    die("Conexión fallida: " . $con->connect_error);
}
?>

Una vez establecida la conexión, el siguiente paso es la creación de la tabla que almacenará la información de las películas. Para ello, se puede ejecutar una consulta SQL que genere la tabla deseada.

CREATE TABLE `peliculas` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `titulo` varchar(255) NOT NULL,
  `director` varchar(255) NOT NULL,
  `genero` varchar(100) NOT NULL,
  `anio` year(4) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Con la **base de datos** en su lugar, es esencial diseñar un **formulario de inserción de datos**. Es notable pensar en todas las comprobaciones y medidas de seguridad, como la validación de entradas y la prevención de inyecciones de SQL.

<form action="insertar.php" method="post">
    <input type="text" name="titulo" placeholder="Título de la película">
    <input type="text" name="director" placeholder="Director">
    <input type="text" name="genero" placeholder="Género">
    <input type="text" name="anio" placeholder="Año">
    <input type="submit" name="enviar" value="Añadir Película">
</form>

El script `insertar.php` gestionará la inserción de nuevos registros en la base de datos.

<?php
include "conexion.php";

if(isset($_POST['enviar'])) {
    $titulo = $con->real_escape_string($_POST['titulo']);
    $director = $con->real_escape_string($_POST['director']);
    $genero = $con->real_escape_string($_POST['genero']);
    $anio = $con->real_escape_string($_POST['anio']);

    $sql = "INSERT INTO peliculas (titulo, director, genero, anio) VALUES ('$titulo', '$director', '$genero', '$anio')";
    
    if($con->query($sql) === TRUE) {
        echo "Película añadida con éxito";
    } else {
        echo "Error: " . $sql . "<br>" . $con->error;
    }
}

$con->close();
?>

Con la inserción en orden, es turno de listar las **películas existentes** en la base. Para esto, concatenar y mostrar los datos recuperados es la rutina usual de cualquier catálogo que se precie.

<?php
include "conexion.php";

$sql = "SELECT id, titulo, director, genero, anio FROM peliculas";
$resultado = $con->query($sql);

if ($resultado->num_rows > 0) {
    echo "<table><tr><th>Título</th><th>Director</th><th>Género</th><th>Año</th></tr>";
    while($fila = $resultado->fetch_assoc()) {
        echo "<tr><td>".$fila["titulo"]."</td><td>".$fila["director"]."</td><td>".$fila["genero"]."</td><td>".$fila["anio"]."</td></tr>";
    }
    echo "</table>";
} else {
    echo "0 resultados";
}

$con->close();
?>

### Optimización y mejoras funcionales
Además de la funcionalidad básaje, es importante hacer que este catálogo sea aún más útil y amigable. Puede incluirse **paginación**, **búsqueda** y **filtros** para mejorar la **experiencia del usuario**. La interfaz resulta crucial y es en donde un diseño responsive y atractivo marca la diferencia.

Un **sistema de autenticación para administradores** es otra función que eleva la calidad y seguridad del catálogo, limitando quizás la inserción y edición de las películas a usuarios con las credenciales apropiadas.

Implementando un sistema CRUD (Create, Read, Update, Delete), los datos del catálogo pueden mantenerse actualizados y manejados convenientemente. Por simplicidad, aquí solo abarcamos la creación y lectura, pero el ciclo se completa implementando la edición y eliminación de registros.

<!-- Añadir funcionalidades CRUD para Edición y Eliminación -->
<?php
// Imaginemos que estamos en el archivo editar.php
// ...

// Ejemplo para actualizar un registro ya existente
$titulo_actualizado = "Nuevo Título";
$sql = "UPDATE peliculas SET titulo = '{$titulo_actualizado}' WHERE id = 1";
// Ejecutar la consulta...

// Ejemplo para eliminar un registro
$sql = "DELETE FROM peliculas WHERE id = 2";
// Ejecutar la consulta...
?>

### Sugerencias y consejos útiles
El código presentado forma la espina dorsal de un **catálogo sencillo** y debe ser mejorado y actualizado conforme las demandas del proyecto lo requieran. La optimización para motores de búsqueda (SEO) no solo radica en la semántica del contenido, sino también en la experiencia de usuario, el tiempo de carga y la accesibilidad del sitio web.

Utilizar librerías como Bootstrap u otras puede facilitar la implementación de un diseño atractivo y funcional. Además, el correcto uso de etiquetas meta y la estructura semántica de HTML con H2, H3, etc., contribuirá a que el catálogo sea más agradable para los buscadores.

El uso de AJAX y frameworks o librerías de JavaScript como Vue.js o React puede hacer que la interfaz sea más dinámica sin necesidad de recargar la página, mejorando así la experiencia del usuario, pero estas decisiones conllevan un análisis detalle y general de las necesidades del proyecto y los recursos disponibles.

Finalmente, en temas de seguridad es indispensable implementar medidas que protejan la información y la integridad del catálogo. Esto incluye la sanitización de inputs, el uso de **sentencias preparadas** para las consultas a la base de datos y la gestión cuidadosa de sesiones y permisos.

Crear un catálogo de películas en PHP es sin duda una tarea retadora pero gratificante que ofrece un amplio espacio para aprender, experimentar y, sobre todo, crear una aplicación práctica y real. Con los conocimientos básicos de PHP y un poco de creatividad, es posible construir una herramienta poderosa y personalizable que no solo serve como entretenimiento sino como una parte resolutiva de más amplios sistemas de gestión de contenido.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad