Afegir o retirar stock de productes
Afegir o retirar stock de productes
L'administrador o responsable del catàleg té la possibilitat mitjançant un formulari de modificar l'stock d'un producte manualment, ja sigui per afegir-ne o per retirar-ne.
Connexió a la BD
En aquest cas no requerim cap sessió, ja que és un formulari que les seves dades actúen en la pròpia pàgina i no cal desar-les en cap sessió.
El que si necessitem és una connexió d'escriptura a la BD.
require_once "../connexioBD/connexioRW.php"; // Connexió a la BBDD
Obtenció dels productes
Aquest codi, s'hagi o no afegit o retirat stock, sempre recuperarà a l'inici tots les productes del catàleg, concretament la ID, el nom i l'stock. Per tant, s'ha de tenir en compte que el fluxe és el següent
- Es recuperen les dades
- Es modifiquen les dades (si es respon el formulari)
- Es mostren les dades del punt 1, desactualitzades
És per això que més endavant es veurà com abordar aquesta situació per no mostrar dades desactualitzades quan es respongui el formulari
Mostra de missatges d'error o èxit
D'igual forma que amb altres codis, aquest compta amb missatges de confirmació o èxit que únicament es mostren si estan definits. En aquest cas, el missatge es defineix en el propi formulari abans de l'HTML, per tant no cal realitzar cap tasca amb sessions
<?php if (!empty($missatge)): ?> <!-- En cas que s'enviï un missatge un cop enviat el formulari -->
<center><p style="color:green"><?= htmlspecialchars($missatge) ?></p></center> <!-- Missatge d'èxit -->
<?php endif; ?>
<?php if (!empty($missatge_error)): ?> <!-- En cas que s'enviï un missatge un cop enviat el formulari -->
<center><p style="color:red"><?= htmlspecialchars($missatge_error) ?></p></center> <!-- Missatge d'error -->
<?php endif; ?>
Mostra del formulari
El formulari constarà d'un desplegable amb tots els productes i el seu stock. Per això, mitjançant un foreach, recorrerem l'array de la consulta SQL i imprimirem una opció per cada resultat, incloent el nom del producte i l'stock. El valor de cada opció serà la ID del producte, així quan recuperem les dades del formulari, el valor que ens retorni serà el producte que hem de modificar
<select name="producte_id" id="producte_id" required>
<?php foreach ($productes as $prod): ?> <!-- Per cada producte del catàleg -->
<option value="<?= $prod['id'] ?>"> <!-- Creem una opció que té com a valor la ID del producte-->
<?= htmlspecialchars($prod['nom']) ?> (Stock actual: <?= $prod['estoc'] ?>) <!-- Mostrem el nom del producte i el seu stock actual de la BD -->
</option>
<?php endforeach; ?>
</select>
Per últim, disposem d'una entrada numérica (sense mínim ni màxim) i dos botons: un per retirar i l'altre per afegir. Tots dos tenen l'acció a la mateixa pàgina amb un nom identificatiu que servirà per indicar al codi quina acció realitzar
<label for="quantitat">Quantitat a afegir o retirar:</label>
<input type="number" name="quantitat" id="quantitat" min="1" required> <!-- Definim la quantitat a afegir o retirar --> <button type="submit" name="afegir">Afegir stock</button> <button type="submit" name="retirar">Retirar stock</button>
El formulari es veuria de la següent forma

Modificació de l'stock del producte
Obtenció de paràmetres
En el moment que s'envia el formulari
Definició de l'acció
Modificació de l'stock
Afegir
Retirar
Recordem que l'entrada numèrica no té un màxim i per tant podem arribar a definir un nombre més gran del que realment hi ha
Actualització de les dades mostrades
Actualitzarem la variable $productes, ja que el codi abans de realitzar qualsevol operació, realitza una consulta SQL de tots els productes i posteriorment es fan les modificacions. És per això que realitzarem un altre cop la consulta SQL per obtenir l'stock actualitzat
Per tant, el fluxe seria el següent
- Es recuperen les dades
- Es modifiquen les dades (si es respon el formulari)
- Es torna a recuperar les dades (si es respon el formulari)
- Es mostren les dades del punt 3, actualitzades