Volver a Proyectos

🎛️ Supercontrolador

Panel de administración que gestiona cualquier tabla sin escribir una línea de código por entidad

Proyecto académico Agnóstico de tabla 6 versiones

Escala del Proyecto

4Controladores
6Versiones
0Código por tabla

Descripción General

La idea de este ejercicio es la más elegante de todos los proyectos académicos: construir un panel de administración que funcione con cualquier tabla de la base de datos sin escribir código específico para ninguna.

El truco está en preguntarle a MySQL por su propia estructura. SHOW TABLES genera el menú de navegación automáticamente. Un SELECT * … LIMIT 1 devuelve una fila cuyas claves son los nombres de las columnas: con eso se pintan las cabeceras de la tabla y se construye el formulario de inserción campo a campo.

El resultado son cuatro controladores y un enrutador de doce líneas. Añadir una tabla nueva a la base de datos hace que aparezca sola en el menú, con su listado y su formulario funcionando. Cero código adicional.

Tecnologías Utilizadas


PHP

MySQL / mysqli

SHOW TABLES

CSS3

Enrutador propio

Los Cuatro Controladores

poblar_menu.php

Ejecuta SHOW TABLES y genera un enlace por tabla, marcando con la clase activo la que se está consultando.

read.php

Pinta la tabla de datos en dos pasadas: primero un LIMIT 1 del que extrae las claves del array asociativo como cabeceras, y luego todas las filas como valores.

insertar.php

Construye el formulario dinámicamente recorriendo esas mismas claves: un campo por columna, sin conocer la tabla de antemano.

procesa_insertar.php

Monta el INSERT recorriendo $_POST, sustituyendo el campo id por NULL para que lo asigne la base de datos.

Arquitectura

El index.php es a la vez plantilla y enrutador: incluye la conexión, pinta el menú y decide qué controlador cargar según el parámetro ?operacion=. Sin operación, muestra el listado. La tabla activa viaja en ?tabla=.

V0.6-Mejoras esteticas/back/
├── index.php                  # plantilla + enrutador
├── controladores/
│   ├── poblar_menu.php        # SHOW TABLES → menú
│   ├── read.php               # listado dinámico
│   ├── insertar.php           # formulario generado
│   └── procesa_insertar.php   # INSERT universal
├── inc/                        # conexion_bd.php
└── css/

Progresión del Ejercicio

  • V0.1Panel de control. Primera estructura del backoffice.
  • V0.2Explotamos. Listado dinámico de los datos de cualquier tabla.
  • V0.3Controlador insert. Formulario de inserción generado desde el esquema.
  • V0.4Capricho de usabilidad. Mejoras de navegación, como marcar la tabla activa.
  • V0.5Procesar insert. Construcción del INSERT universal.
  • V0.6Mejoras estéticas. Acabado visual del panel.

Qué Aprendí

  • Que una base de datos sabe describirse a sí misma, y que SHOW TABLES más las claves de un array asociativo bastan para generar una interfaz completa.
  • Que el patrón table-agnostic es exactamente lo que hace phpMyAdmin, y que entenderlo cambia cómo miras cualquier panel de administración.
  • Que un enrutador puede caber en doce líneas y seguir siendo un enrutador.
  • Que la genericidad tiene un coste: este panel no valida tipos de dato ni relaciones, porque no sabe nada de la tabla que está gestionando. La flexibilidad se paga con la ausencia de reglas de negocio.
  • Y su límite de seguridad: el nombre de la tabla llega por $_GET y se concatena directamente en la consulta, igual que los valores del formulario. Es una inyección SQL evidente y una herramienta que jamás debe exponerse fuera de un entorno local. Es el contraste directo con los proyectos posteriores del portafolio, donde uso sentencias preparadas sin excepción.

Mi Rol

Autor del ejercicio. Práctica individual de la asignatura de programación en el lado del servidor.

Estado del Proyecto

Ejercicio académico completado, con las seis versiones en el repositorio de apuntes. Herramienta de aprendizaje, no apta para producción.

Código y Enlaces

Ruta dentro del repositorio: Apuntes/010-Programción en el lado del servidor/011-Supercontrolador/