Crear un formulario en PHP que registre proyectos en una base de datos requiere algo más que un botón bonito: necesitas validar formularios PHP, proteger los datos y manejar errores antes de insertarlos. Aquí te muestro el flujo completo paso a paso, desde la ruta hasta el redireccionamiento final.
¿Cómo se conecta un formulario con una ruta y un controlador en PHP?
Todo arranca con un enlace que apunta a una ruta nueva. Cuando das clic y la página dice que algo no existe, el sistema te está pidiendo justo lo que falta. Ese es el ritmo natural del desarrollo: tú avanzas, el sistema reclama, tú respondes.
El orden que seguimos es claro:
- Registrar la ruta, por ejemplo
links/create, usando comillas simples para mantener legibilidad.
- Crear el archivo del controlador que responde a esa ruta.
- Crear la plantilla o template que se renderiza en pantalla, en este caso
links-create.template.
- Definir la variable de contexto, como register project, que el controlador envía a la vista.
¿Qué es un controlador en PHP? Es el archivo que recibe la petición de una ruta, procesa la lógica (como validar datos o consultar la base de datos) y decide qué plantilla mostrar al usuario.
Cada vez que refrescas el navegador, el sistema te avisa qué pieza falta. Y ahí está lo interesante: aprendes a leer esos errores como una guía, no como un problema [01:30].
¿Cómo recuperar datos de un formulario con POST en PHP?
El formulario lo copiamos desde el diseño preparado y lo pegamos en la plantilla. Después lo hacemos dinámico para que conserve los valores escritos por el usuario y muestre errores cuando algo falle.
Para recuperar lo que el usuario envía, usamos la variable predefinida $_POST de PHP. La idea es sencilla: si existe el campo, tómalo; si no, déjalo vacío.
php
$title = $_POST['title'] ?? '';
$url = $_POST['url'] ?? '';
$description = $_POST['description'] ?? '';
Estos valores se asignan al atributo value de cada input y al contenido del textarea, de modo que el formulario recuerde lo que ya escribiste si hay un error de validación. Mientras no envíes nada, los campos aparecen vacíos. Una vez envías, esas variables se llenan y puedes trabajar con ellas [03:45].
¿Por qué verificar el método POST antes de procesar?
Dentro del controlador, la primera condición pregunta si la petición llegó por POST. Si la respuesta es sí, significa que el usuario realmente envió el formulario y no solo abrió la página. Esa verificación evita procesar datos inexistentes y es la base para encadenar el resto de validaciones.
¿Cómo validar formularios PHP y mostrar errores al usuario?
La validación que aplicamos es simple pero efectiva. Guardamos los errores en un array llamado $errors y vamos agregando mensajes según cada condición.
Las reglas que revisamos son tres:
- Título vacío: si
$title está vacío, registramos el error correspondiente.
- URL vacía o inválida: primero comprobamos si está vacía; si no, validamos su formato con
filter_var($url, FILTER_VALIDATE_URL).
- Descripción vacía: si falta la descripción, también la añadimos al array de errores.
¿Cómo valido si una URL es correcta en PHP? Usa filter_var($url, FILTER_VALIDATE_URL). Esta función devuelve la URL si tiene formato válido o false si no, lo que te permite rechazar entradas como "Hello" o textos sin protocolo.
Si el array de errores está vacío, todo pasó la validación y procedemos a guardar. Si no, los imprimimos en pantalla con un foreach que recorre cada mensaje:
php
if (!empty($errors)) {
foreach ($errors as $error) {
echo $error;
}
}
Este patrón te da control total sobre qué mostrar y dónde. Y lo más importante: el usuario entiende exactamente qué corregir [05:50].
¿Cómo insertar datos validados en MySQL desde PHP?
Cuando la validación pasa, ejecutamos la consulta SQL. Trabajamos con la clase DB y su método query para insertar los tres campos en la tabla links.
sql
INSERT INTO links (title, url, description) VALUES (?, ?, ?)
Los valores que pasamos son las variables $title, $url y $description que ya validamos arriba. Después de insertar, hacemos un redirect a la página principal de proyectos para que el usuario vea su registro reflejado.
El flujo completo se ve así:
- El formulario envía datos por POST.
- El controlador detecta el método y recupera los valores.
- Las condicionales validan título, URL y descripción.
- Si hay errores, se imprimen y el usuario corrige.
- Si no hay errores, se inserta en la base de datos y se redirige.
¿Qué prueba confirma que el formulario funciona?
Al dar clic en create sin llenar nada, el sistema responde: "el título es requerido, la URL también". Si escribes "Hello" como URL, te avisa que es inválida. Si pegas una URL real, agregas descripción y envías, el redirect te lleva al listado con el nuevo proyecto registrado.
Este avance es grande en términos de seguridad y calidad de los datos. Una validación simple, con condicionales claros y un array de errores, ya te protege de entradas vacías o mal formadas antes de tocar la base de datos.
Ahora te toca a ti: replica este mismo flujo en tu módulo de blog. ¿Qué validaciones adicionales agregarías para tu caso? Cuéntamelo en los comentarios.