Retirar productes: diferència entre les revisions
Es crea la pàgina amb «== Retirar una quantitat de productes del cistell == L'objectiu d'aquesta operació és retirar una quantitat definida per l'usuari de productes del cistell Aquesta petició arriba per part del codi del cistell i la seva acció és "retirar". Aquesta operació ens fa arribar la ID del producte a retirar i la quantitat a retirar. Primerament, verifiquem que la ID és vàlida i és un nombre<pre> // Validar ID if (!isset($_POST['id']) || !is_numeric($_POS...». |
Cap resum de modificació |
||
| Línia 14: | Línia 14: | ||
$id = (int)$_POST['id']; // Assignem la ID del producte a una variable verificant que és INT | $id = (int)$_POST['id']; // Assignem la ID del producte a una variable verificant que és INT | ||
</pre>Seguidament, verifiquem que la quantitat sigui major a 0.<pre> | </pre>Seguidament, verifiquem que la quantitat sigui major a 0. Si no ho és enviarem un missatge d’error i retornarem l’usuari al cistell, mostrant el missatge d’error<pre> | ||
// Definir i validar quantitat de productes a retirar | // Definir i validar quantitat de productes a retirar | ||
$quantitat = (int)$_POST['quantitat']; // Agafa la quantitat del producte | $quantitat = (int)$_POST['quantitat']; // Agafa la quantitat del producte | ||
Revisió del 23:02, 30 des 2025
Retirar una quantitat de productes del cistell
L'objectiu d'aquesta operació és retirar una quantitat definida per l'usuari de productes del cistell
Aquesta petició arriba per part del codi del cistell i la seva acció és "retirar". Aquesta operació ens fa arribar la ID del producte a retirar i la quantitat a retirar.
Primerament, verifiquem que la ID és vàlida i és un nombre
// Validar ID
if (!isset($_POST['id']) || !is_numeric($_POST['id'])) { // Verifiquem que el producte té una ID i que és numèrica
$_SESSION['missatge_error'] =
"ID de producte no vàlid";
header("Location: cistell.php");
exit;
}
$id = (int)$_POST['id']; // Assignem la ID del producte a una variable verificant que és INT
Seguidament, verifiquem que la quantitat sigui major a 0. Si no ho és enviarem un missatge d’error i retornarem l’usuari al cistell, mostrant el missatge d’error
// Definir i validar quantitat de productes a retirar
$quantitat = (int)$_POST['quantitat']; // Agafa la quantitat del producte if ($quantitat <= 0) { // En cas que sigui 0 o menor, no es processa la quantitat $_SESSION['missatge_error'] = "Quantitat no vàlida"; header("Location: cistell.php"); exit; }
Per últim, després de comprovar que el producte realment està en el cistell, recuperarem el nom del producte (pel missatge) i restem a la quantitat del cistell la quantitat que ens ha fet arribar l'usuari
if (isset($_SESSION['cistell'][$id])) { // Si el producte realment està en el cistell
$nom_prod = $_SESSION['cistell'][$id]['nom']; // Obtenim el nom del producte (pel missatge de confirmació) $_SESSION['cistell'][$id]['quantitat'] = $_SESSION['cistell'][$id]['quantitat'] - $quantitat; // Restem la quantitat indicada a la quantitat del cistell
En cas que retirar tots els productes del cistell fins arribar a 0, eliminarem el producte del cistell
if ($_SESSION['cistell'][$id]['quantitat'] <= 0) { // En cas que retirem tants productes fins arribar a 0
unset($_SESSION['cistell'][$id]); // S'elimina el producte del cistell }
Finalment, enviarem un missatge d'èxit dins de la sessió
$_SESSION['missatge_ok'] = "S'ha retirat $quantitat unitat(s) de $nom_prod del cistell."; // S'envia el missatge
O en cas que el producte no existeixi, enviarem un missatge d'error
} else { // En cas que el producte realment no està al cistell
$_SESSION['missatge_error'] = "El producte no està al cistell."; }
I redirigirem a l'usuari al cistell de nou
header("Location: cistell.php"); exit;
Codi sencer
// Case que funciona com a "Actualitzar" i en arribar a 0 elimina el producte del cistell
case 'retirar': // En cas que l'acció sigui retirar un producte del cistell (cridada sempre desde cistell.php)
// Validar ID
if (!isset($_POST['id']) || !is_numeric($_POST['id'])) { // Verifiquem que el producte té una ID i que és numèrica
$_SESSION['missatge_error'] =
"ID de producte no vàlid";
header("Location: cistell.php");
exit;
}
$id = (int)$_POST['id']; // Assignem la ID del producte a una variable verificant que és INT
// Definir i validar quantitat de productes a retirar
$quantitat = (int)$_POST['quantitat']; // Agafa la quantitat del producte
if ($quantitat <= 0) { // En cas que sigui 0 o menor, no es processa la quantitat
$_SESSION['missatge_error'] =
"Quantitat no vàlida";
header("Location: cistell.php");
exit;
}
if (isset($_SESSION['cistell'][$id])) { // Si el producte realment està en el cistell
$nom_prod = $_SESSION['cistell'][$id]['nom']; // Obtenim el nom del producte (pel missatge de confirmació)
$_SESSION['cistell'][$id]['quantitat'] = $_SESSION['cistell'][$id]['quantitat'] - $quantitat; // Restem la quantitat indicada a la quantitat del cistell
if ($_SESSION['cistell'][$id]['quantitat'] <= 0) { // En cas que retirem tants productes fins arribar a 0
unset($_SESSION['cistell'][$id]); // S'elimina el producte del cistell
}
$_SESSION['missatge_ok'] = "S'ha retirat $quantitat unitat(s) de $nom_prod del cistell."; // S'envia el missatge
} else { // En cas que el producte realment no està al cistell
$_SESSION['missatge_error'] = "El producte no està al cistell.";
}
header("Location: cistell.php");
exit;