Retirar productes: diferència entre les revisions
Cap resum de modificació |
|||
| Línia 6: | Línia 6: | ||
Primerament, verifiquem que la ID és vàlida i és un nombre<pre> | Primerament, verifiquem que la ID és vàlida i és un nombre<pre> | ||
// Validar ID | // 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 | |||
</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> | </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 | |||
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; | |||
} | |||
</pre>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<pre> | </pre>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<pre> | ||
if (isset($_SESSION['cistell'][$id])) { // Si el producte realment està en el cistell | 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 | |||
</pre>En cas que retirar tots els productes del cistell fins arribar a 0, eliminarem el producte del cistell<pre> | </pre>En cas que retirar tots els productes del cistell fins arribar a 0, eliminarem el producte del cistell<pre> | ||
if ($_SESSION['cistell'][$id]['quantitat'] <= 0) { // En cas que retirem tants productes fins arribar a 0 | 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 | |||
} | |||
</pre>Finalment, enviarem un missatge d'èxit dins de la sessió<pre> | </pre>Finalment, enviarem un missatge d'èxit dins de la sessió<pre> | ||
$_SESSION['missatge_ok'] = "S'ha retirat $quantitat unitat(s) de $nom_prod del cistell."; // S'envia el missatge | $_SESSION['missatge_ok'] = "S'ha retirat $quantitat unitat(s) de $nom_prod del cistell."; // S'envia el missatge | ||
</pre>O en cas que el producte no existeixi, enviarem un missatge d'error<pre> | </pre>O en cas que el producte no existeixi, enviarem un missatge d'error<pre> | ||
} else { // En cas que el producte realment no està al cistell | } else { // En cas que el producte realment no està al cistell | ||
$_SESSION['missatge_error'] = "El producte no està al cistell."; | |||
} | |||
</pre>I redirigirem a l'usuari al cistell de nou<pre> | </pre>I redirigirem a l'usuari al cistell de nou<pre> | ||
header("Location: cistell.php"); | header("Location: cistell.php"); | ||
Revisió de 02:05, 12 gen 2026
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 complet
// 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;