Ciao a tutti,
Vorrei realizzare un piccolo ecommerce per un sito, ma ho un dubbio su come gestire le quantità e di conseguenza evitare l'overselling.
Ciò che vorrei fare è di non decrementare le quantità sul db fino alla fine del check-out, quindi a questo punto ricontrollare se tutti i prodotti nel carrello sono ancora disponibili, decrementare le quantità, salvare l'ordine nel db.

Quindi, fondamentalmente

Codice PHP:
$cartIds = array(<id prodotti nel carrello>);
$query "SELECT * FROM prodotti WHERE id IN $cartIds";
$invalidProducts = array();
foreach(
$query as $prodottoo){
   if(
$prodotto['quantita'] < $cart[$prodotto['id']]['qta'])
      
$invalidProducts[] = $prodotto['id'];
}

if(empty(
$invalidProducts)){
    foreach(
$cart as $key => $prodotto){
          
$query "UPDATE prodotti SET quantita = quantita - {$prodotto['qta']} WHERE id = $key";
    }
    
$query "INSERT INTO ordini ....";
}else{
    
// Qualcuno ha già acquistato il prodotto e non ce ne sono più nella quantità richiesta

Tralasciando la sintassi, secondo voi è possibile che un secondo script faccia la prima query (il controllo) mentre il primo ancora non finisce di aggiornare le quantità, portando ad un possibile overselling ?

Qualche sugerimento?

Grazie a tutti