piu che una tabella in un database ti conviene creare una classe per ogni tipo di prodotto e ogni volta che che selezioni un prodotto dalla "schermata" istanzi un oggetto della relativa classe e lo memorizzi in sessione. il carrello lo puoi fare con un altra classe. se poi vuoi salvare il carrello nel database serializzi l'oggetto carrello creato e lo salvi in una tabella del db. non ti conviene salvare nel database dei dati ogni volta che selezioni un prodotto anche perche una volta completato l'ordine il carrello si svuota e quindi nn è necessario mantenere i dati in memoria troppo a lungo. ti posto un codice di un progetto che ho realizzato tempo fa. sono delle classi per la gestione di una videoteca online.

Codice PHP:

class Film 
{
         private 
$id_film;
     private 
$titolo;
     private 
$regista;
     private 
$anno;
     private 
$genere;      
     private 
$durata
     private 
$prezzo;      
     private 
$n_copie
     
     public function 
__construct() {}
     
     
//set get id_film
     
public function setIDfilm($id)
     {
         
$this->id_film=$id;
     }
     
     public function 
getIDfilm()
     {
         return 
$this->id_film;
     }
     
     
//set get titolo
     
public function setTitolo($tit)
     {
        if (
$tit=="") {
            
$this->titolo="undefined";
        }
        else 
$this->titolo=$tit;
     }
     
     public function 
getTitolo()
     {
         return 
$this->titolo;
     }
     
     
//set get regista
     
public function setRegista($reg)
     {
        if (
$reg=="") {
            
$this->regista="undefined";
        }
        else 
$this->regista $reg;
    }
    
    public function 
getRegista ()
    {
        return 
$this->regista;
    }
     
     
//set get anno
     
public function setAnno($year)
     {
     if (
$year=="") {
         
$this->anno="undefined";
         }
     else 
$this->anno=$year;
     }
     
     public function 
getAnno()
     {
         return 
$this->anno;
     }
     
     
     
//set get genere
     
public function setGenere($tipologia)
     {
        if (
$tipologia=="") {
            
$this->genere="undefined";
         }
        else 
$this->genere=$tipologia;
     }
     
     public function 
getGenere()
     {
         return 
$this->genere;
     }
     
     
//set get durata
     
public function setDurata($min)
     {
        if (
$min=="") {
            
$this->durata="undefined";
        }
        else 
$this->durata=$min;
     }
     
     public function 
getDurata()
     {
         return 
$this->durata;
     }
     
     
//set e get copie
     
public function setCopie($copie)
     {
        if (
$copies=="") {
            
$this->n_copie="no quantit‡";
        }
        else 
$this->n_copie=$copie;
     }
     
     public function 
getCopies()
     {
         return 
$this->n_copie;
     }
     
     
//set e get prezzo
     
public function setPrezzo($eur)
     {
        
$this->prezzo=$eur;
     }
     
     public function 
getPrezzo()
     {
         return 
$this->prezzo;
     }
     

Codice PHP:

require_once('film.class.php');

class 
cart {

    private 
$mov = array();
    private 
$qt = array();
    private 
$numeroarticoli;
    
    public function 
__construct() { 
    
        
$this->numeroarticoli 0;
    }

    public function 
getNumeroarticoli() { return $this->numeroarticoli; }
    
    public function 
getMov() { return $this->mov; }
    
    public function 
getQt() { return $this->qt; }
    
    public function 
add_film($mov) {

        
//Ottengo la lunghezza dell'array
        
$position=count($this->mov);
        
$trovato=0;

        for (
$i=0;$i<count($this->mov);$i++) {
            
//Verifico se il prodotto √® presente nel carrello
            
if ($this->mov[$i]==$mov$trovato=1;
        }

        
//Se il prodotto √® gi√† presente aggiorno quantit√† e variante
        
if ($trovato==1$this->aggiungi_copia($mov);
        
        else {
//altrimenti aggiungo il prodotto al carrello
            
            
$this->mov[$position]=$mov;
            
$this->qt[$position]=1;
            
$this->numeroarticoli $this->numeroarticoli 1;
        }

    }
    
    public function 
aggiungi_copia($mov) {

        
$position = -1;

        for (
$i=0;$i<count($this->mov);$i++) {
            
//Prelevo la posizione del prodotto nell'array
            
if ($this->mov[$i]==$mov$position=$i;
        }
    
        if (
$position==-1) echo "Impossibile aggiornare il prodotto,prodotto non trovato!

"
;
        else {
        
//Aggiorno le informazioni del prodotto
        
$this->qt[$position]++;
        
$this->numeroarticoli $this->numeroarticoli 1;
        }
        

    }
    
    public function 
delete_film($mov) {

        
$position = -1;

        for (
$i=0;$i<count($this->mov);$i++) {
            
//Prelevo la posizione del prodotto nell'array
            
if ($this->mov[$i]==$mov$position=$i;
        }

        if (
$position!=-1) {

            
$this->numeroarticoli $this->numeroarticoli -($this->qt[$position]);
            
$cont=0;

            for (
$i=0;$i<count($this->mov);$i++) {

                if (
$this->mov[$i]!=$mov) {
                
                
//creo 2 nuovi array in cui andro a copiare $mov, e $qt  tutti gli indici meno l'indice da eliminare
                
$app_mov[$cont]=$this->mov[$i];
                
$app_qt[$cont]=$this->qt[$i];
                
$cont++;
                }

            }
            
            
//rimuovo il contenuto degli array
            
unset($this->mov);
            unset(
$this->qt);

            for (
$i=0;$i<count($app_mov);$i++) {
                
                
//riverso il contenuto degli array sopra creati in $mov e $qt
                
$this->mov[$i]=$app_mov[$i];
                
$this->qt[$i]=$app_qt[$i];
            }

        }
        else echo 
"Impossibile cancellare il prodotto,prodotto non trovato!

"
;

    }