GET y POST en PHP + MySQL (procedural con execute())

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.

1) Conceptos (GET vs POST)

Para esta clase (didáctico):
• Haremos crear usuario con GET para que vean el envío en la URL.
• Haremos crear venta con POST (forma típica real).
• También haremos crear venta asíncrona (fetch + JSON).

2) Requisitos (para que los archivos funcionen)

Estos ejemplos asumen que ya existen en tu proyecto:

Si tus columnas no se llaman exactamente igual, ajusta el SQL (por ejemplo, si tu tabla ventas incluye cliente_id).

3) Lo que agregaremos hoy (archivos nuevos)

/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

4) Cómo leer GET y POST en PHP

GET se lee con $_GET:

$nombre = $_GET['nombre'] ?? '';

POST se lee con $_POST:

$nombre = $_POST['nombre'] ?? '';
¿Qué significa ???
Si la variable no existe, se usa el valor por defecto (por ejemplo cadena vacía).

5) SELECT para llenar SELECTs (combo de usuarios/productos)

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; }

Idea: el SELECT llena un <select> con opciones reales desde la BD.

6) Archivos del proyecto (copiar/pegar)

Copia cada archivo exactamente en su ruta. Primero crea las carpetas si no existen: /pages y /assets/js.

2.1 pages/usuario_form_get.php

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.

Volver
2.2 pages/usuario_save_get.php

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)
  


Resultado: guardar usuario (GET)

2.3 pages/venta_form_post.php

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).