eh, eh, eh.. 
ho ritrovato questo script modificato da me un paio di anni fa..
io mi ero fatto altre due funzioni nel file delle funzioni: la prima era per mostrare a video i dati.. diciamo per formattarli bene: era tipo
Codice PHP:
function mostraCarrelloTELEGIO()
{
global $db;
$carrello = $_SESSION['carrello'];
$somma = 0;
if ($carrello)
{
$prodotti = @explode(',',$carrello);
$acquisti = array();
foreach ($prodotti as $prodotto)
{
$acquisti[$prodotto] = (@isset($acquisti[$prodotto])) ? $acquisti[$prodotto] + 1 : 1;
}
$result[] = '<table>';
foreach ($acquisti as $id=>$quantita)
{
$sql = 'qualatuaselect';
$res = $db->query($sql);
$f = $res->fetch();
@extract($f);
$result[] = "<tr>";
$result[] = "<td width=\"100\" bgcolor=\"#ff9900\">" . $codice . "<td>" .$Categoria.' - '. $MARCA . ' - ' . $descrizione.' -- n°'.$quantita. "</td>";
$result[] = '<td>euro [b]'. $prezzo * $quantita .'[/b]</td>';
$somma += $prezzo * $quantita;
$result[] = '</tr>';
}
$result[] = '</table>';
$result[] = '[b]Total price - euro '.$somma.'[/b]</br>';
}else{
$result[] = 'The cart is empty.';
}
return @join('',$result);
}
e poi un'altra funzione per quando inserivo nel DB, che formattava i dati diversamente ma era una cosa simile.
Li mandavo ad una pagina che dopo i dovuti controlli faceva una cosa tipo:
Codice PHP:
$variabbile = MostraCarrelloTELEGIO();
e praticamente avevo nella mia variabile quell'ordine esploso, ma decisamente PESANTE, perchè c'era dentro una tabella..
facevo la insert nel DB pure dei dati della tabella HTML..
non ero esperto.. oddio nemmeno ora lo sono..
diciamo che mi accontentai della via "facile"
Ma secondo me potresti trovare un'altra soluzione che io non tentai proprio per mancanza di esperienza: potresti memorizzare nel DB solo l'array degli id.. poi li esplodi con i contenuti.. facendo delle funzioni simili a quelle che esistono già.. così avresti tutto MOOOOLTO più leggero.. se lo fai fammi sapere..