🎛️ Supercontrolador
Panel de administración que gestiona cualquier tabla sin escribir una línea de código por entidad
Escala del Proyecto
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
Ejecuta SHOW TABLES y genera un enlace por tabla, marcando con
la clase activo la que se está consultando.
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.
Construye el formulario dinámicamente recorriendo esas mismas claves: un campo por columna, sin conocer la tabla de antemano.
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
INSERTuniversal. - V0.6Mejoras estéticas. Acabado visual del panel.
Qué Aprendí
- Que una base de datos sabe describirse a sí misma, y que
SHOW TABLESmá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
$_GETy 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/