Clase previa al parcial: formularios → action a archivo → leer GET/POST → insertar en BD. Luego, el mismo guardado pero asíncrono con JS (fetch) sin recargar página.
?nombre=...). Se usa para filtros, búsqueda, navegación.Estos ejemplos asumen que ya existen en tu proyecto:
/config/db.php (credenciales)/lib/Conexion.php (class Conexion extends mysqli)/lib/Functions.php (class Functions con execute)usuarios, productos, ventascliente_id).
/pages
usuario_form_get.php
usuario_save_get.php
venta_form_post.php
venta_save_post.php
venta_save_async.php
/assets/js
ventas_async.js
GET se lee con $_GET:
$nombre = $_GET['nombre'] ?? '';
POST se lee con $_POST:
$nombre = $_POST['nombre'] ?? '';
???
Para poder seleccionar un usuario o producto en un formulario, primero hacemos un SELECT y lo recorremos con
fetch_assoc(). Si quieres evitar declarar variables una por una, usamos:
foreach ($row as $key => $value) { $$key = $value; }
<select> con opciones reales desde la BD.
Copia cada archivo exactamente en su ruta. Primero crea las carpetas si no existen:
/pages y /assets/js.
Qué hace: muestra un formulario que envía datos por GET al archivo action. El alumno verá los datos en la URL al enviar.
<?php
// pages/usuario_form_get.php
?>
Crear usuario (GET)
Crear usuario con GET
Ejemplo didáctico: al enviar verás los datos en la URL porque es método GET.
Qué hace: recibe datos por $_GET, arma un INSERT simple y lo ejecuta con
$functions->execute(). Muestra resultado y te deja volver.
<?php
// pages/usuario_save_get.php
require_once __DIR__ . '/../lib/Conexion.php';
require_once __DIR__ . '/../lib/Functions.php';
$functions = new Functions();
$nombre = trim($_GET['nombre'] ?? '');
$correo = trim($_GET['correo'] ?? '');
$rol = trim($_GET['rol'] ?? 'alumno');
if ($nombre === '' || $correo === '' || $rol === '') {
die("Faltan datos. Regresa al formulario.");
}
// INSERT simple (para clase). Más adelante se ve prepared statements.
$sql = "
INSERT INTO usuarios (nombre, correo, rol, activo)
VALUES ('$nombre', '$correo', '$rol', 1)
";
$ins = $functions->execute($sql);
?>
Resultado (GET)
Qué hace: formulario de venta con método POST.
Antes de dibujar el form hace SELECT a usuarios y productos para llenar los <select>.
Usa fetch_assoc() y el truco $$key.
<?php
// pages/venta_form_post.php
require_once __DIR__ . '/../lib/Conexion.php';
require_once __DIR__ . '/../lib/Functions.php';
$functions = new Functions();
$users = $functions->execute("SELECT id, nombre FROM usuarios WHERE activo=1 ORDER BY nombre ASC");
$prods = $functions->execute("SELECT id, nombre, precio FROM productos WHERE activo=1 ORDER BY nombre ASC");
if ($users['res'] !== 'ok') die($users['res']);
if ($prods['res'] !== 'ok') die($prods['res']);
?>
Crear venta (POST)
Crear venta con POST
Formulario típico: envía POST al archivo action. También incluye un botón para guardado asíncrono (fetch).