Grazie per la risposta, ma neanche così funziona. Mi continua a calcolare solo il prezzo ivato del primo prodotto inserito nel carrello.

------------------------------------------------------------------------------

<?php
$sql = "SELECT * FROM prodotti WHERE id = '$carrello'";
$res = $db->query($sql);
foreach ($res as $f) {
while($f = $res->fetch()) {
$importo = $f['prezzo'];
$iva = $importo * 21 / 100;
$totale = $importo + $iva;
}
}
echo '<input type="text" name="importo" size="8" value="'.$totale.'"/>';
?>

-------------------------------------------------------------------------------

Forse può essere utile che posti anche il codice relativo al carrello

-------------------------------------------------------------------------------

$carrello = $_SESSION['carrello'];
if(@isset($_GET['action']))
{
$action = $_GET['action'];

switch ($action)
{
case 'aggiungi':
if ($carrello)
{
$carrello .= ','.$_GET['id'];
}else{
$carrello = $_GET['id'];
}
break;

case 'cancella':
if ($carrello)
{
$prodotti = @explode(',',$carrello);
$acquisto = '';
foreach ($prodotti as $prodotto)
{
if ($_GET['id'] != $prodotto)
{
if ($acquisto != '')
{
$acquisto .= ','.$prodotto;
}else{
$acquisto = $prodotto;
}
}
}
$carrello = $acquisto;
}
break;

case 'aggiorna':
if ($carrello)
{
$acquisto = '';
foreach ($_POST as $key=>$value)
{
if (@stristr($key,'quantita'))
{
$id = @str_replace('quantita','',$key);
$prodotti = ($acquisto != '') ?
@explode(',',$acquisto) : @explode(',',$carrello);
$acquisto = '';

foreach ($prodotti as $prodotto)
{
if ($id != $prodotto)
{
if ($acquisto != '')
{
$acquisto .= ','.$prodotto;
}else{
$acquisto = $prodotto;
}
}
}

for ($i=1;$i<=$value;$i++)
{
if ($acquisto != '')
{
$acquisto .= ','.$id;
}else{
$acquisto = $id;
}
}
}
}
}
$carrello = $acquisto;
break;
}
}

$_SESSION['carrello'] = $carrello;
?>

-------------------------------------------------------------------------------

Grazie di nuovo