Compra de productes: diferència entre les revisions
| Línia 10: | Línia 10: | ||
exit; | exit; | ||
} | } | ||
</pre>A més de requerir la [[Connexions a la BD (A5.2)#Connexió d'escriptura|connexió d'escriptura]] a la BD i el fitxer funcions.php on es troba la funcio [[Funcions de la pràctica 5.2#Funció calcularPreus|calcularPreus]]<pre> | |||
require_once "./connexioBD/connexioRW.php"; | |||
// Requerim un fitxer on definim la funció per calcular els preus i descomptes | |||
require_once "funcions.php"; | |||
</pre> | </pre> | ||
Revisió del 23:47, 30 des 2025
Compra de productes
A l'aplicació s'implementa la funcionalitat de comprar els productes dins del cistell. La funció d'aquesta funcionalitat és desar la compra i els seus detalls a la BD.
Inicialització de la sessió i connexió a la BD
Sempre que es treballa amb sessions, el primer que hem de fer és iniciar-la abans d'escriure el codi HTML
session_start();
En aquest cas, si el cistell no està definit (o està buit) no el crearem, sinó que redirigirem a l'usuari al catàleg
if (!isset($_SESSION['cistell']) || empty($_SESSION['cistell'])) { // En cas que s'accedeixi a la pàgina amb el cistell buit
header("Location: cataleg.php"); exit;}
A més de requerir la connexió d'escriptura a la BD i el fitxer funcions.php on es troba la funcio calcularPreus
require_once "./connexioBD/connexioRW.php"; // Requerim un fitxer on definim la funció per calcular els preus i descomptes require_once "funcions.php";
Inici de la transacció
En aquest cas realitzarem tot el procés mitjançant una transacció. Una transacció ens permet rectificar tot el que s'ha fet abans de que es produis un error.
En aquest codi estarem insertant i actualitzant molts registres a la BD, i no volem que un registre es mantingui quan realment ha sigut una compra incorrecte i no s'ha pogut processar correctament
Gràcies a una transacció, en cas de que certes operacions es realitzin correctament, en cas d'haver-hi algun error en alguna futura, totes les que s'han realitzat correctament seran desfetes.
$pdo->beginTransaction();
A més, iniciarem una variable per calcular el total de compra i una array on desarem els detalls dels productes
$total_compra = 0; // Definim el total de la compra $detalls_compra = []; // Definim una array on especificarem els detalls de cada compra (quantitat, preu, etc)