Ciao, ho creato un carrello con le sessioni:
questa( $_SESSION['cart']) contiene un array per ogni prodotto inserito nel carrello, contenente a sua volta codice, quantità e categoria. Per spiegarmi meglio, vi inserisco un pezzo del codice di estrazione degli elementi:

<? $i=0;

$prodotti=count ($_SESSION['cart']);

//display CART LIST

$visualizza ="Articoli nel carrello
";
$prezzototcart=0;
if ($prodotti== 0) { $visualizza="Carrello vuoto <img src=\"http://localhost/live2/Immagini/gifs/hr.gif\">"; }

require_once('../../Connections/Conn_articoli.php');

while ($i!=$prodotti) //per ogni riga della tabella cart
{ // esegue una query d'estrazione al db articoli

$arr=$_SESSION['cart'][$i];
$codice=$arr['cod'];
$quantita=$arr['qta'];
$tabella=$arr['categoria'];
$visualizza.= "$codice X $quantita in $tabella etc...";
$i=$i+1;

etc...

} etc...
?>



Quando però rimuovo un item dal carrello
( cioè così:

// ricezione variabili POST [indice]
$c=$_POST['indice'];

//rimozione totale

unset ($_SESSION['cart'][$c]);

header ("location: http://localhost/live2/sezioni/cart/show.php");

} )

poi nell' estrazione degli elementi mi da un problema di offset sull'indice che ho appena cancellato; immagino dipenda dal fatto che quell'indice non esiste più ma cmq lo script cerca di estrarlo. Infatti se cancello l'ultimo item non ho problemi perchè si ferma prima
( $i== count($_SESSION['cart']))
Ed ora la tanto attesa domanda:
Come faccio ad eliminare un item e riaggiornare la sessione in modo che tutti gli indici successivi a quello eliminato scattino indietro di uno?
Esiste un modo semplice o lo devo fare tramite dei cicli? Pensavo magari nella pagina di estrazione di controllare l'esistenza dell'indice ( else{ $i=+1;} ), ma credo mi dia problemi lo stesso...
grazie ciao